第1章 shared-library工作模式

1.1 sharedLibrary工作模式介绍

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
基本上每个项目的构建过程都是一样的,能改动的地方不多,检代码,做CI,构建,镜像推送,部署,后面发消息

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
比如发消息是每个项目都要用的,可以抽象成方法
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
用groovy去开发sharelibrary,这个库有很多公告逻辑
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
library如何去工作。DRY就是don’t repeat yourself
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
实际运用中,jenkins会把library的实际定义公共功能添加到构建目录中

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

之前是这么写的,retry(2)执行两次,这里就没有什么错误判断,处理异常的逻辑
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
devops就是我们创建的一个共享库,buildimage也就是公共的方法,所以可以把一些处理异常的放在公共的方法里

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
比如这样的逻辑
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第2章 Groovy项目语法实践

2.1 开发环境搭建

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
安装jdk

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
配置环境变量

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第一个环境变量java home

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第二个环境变量,classpath,这个值是固定的
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
新建一个

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
测试一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
安装groovy
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
只需要做一个解压

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
同时path路径下也需要bin目录加进去
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
安装idea

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
快捷方式,关联文件

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
30天试用

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
jenkins的sharelibrary,用groovy来写,选择jdk1.8版本
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
选择groovy库
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
选择放在哪个目录里
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在项目就创建好了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
验证能否使用,创建groovy的脚本
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在是可以跑的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2.2 Groovy基本语法实践(上)

library的代码结构,src,vars两个目录
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这个j是代表java的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

groovy是java派系的,但是偏向脚本式的语言
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
起一个jenkins-share-library
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以再建立一个目录
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
test目录下建立脚本

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
就有正常打印

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以定义一个方法

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
创建一个package

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
创建一个groovy

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
new就是创建类里面的实例
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以定位到sayhi在哪里
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在定义三个方法。this其实就是返回类的自己

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
让saybye return一个值
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
init是返回this这个类,所以可以调用任何方法
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
异常处理,这样会出错
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
改造成不报错,try,catch一个exception
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2.3 Groovy基本语法实践(下)

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
执行看一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
导入类

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
timecatrgory.plus(加)new date当前时间的基础上,getseconds秒,也就是在当前时间基础上+15秒

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
break是可以跳出循环的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
倒计时
这个可以应用在,kubectl创建deployment的时候,要去实时检测创建是否成功,不能一直等待看他是否成功,把时间设置5分钟,一直去检测,5分钟到了,就退出监测
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
安装groovy的时候没带,这个是groovy外部解析yaml文件比较好用的包
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里就有包了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
准备一个读的yaml文件
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
复制到这里
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
取里面的值

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
kind就是这一个值

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
metadata name
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在就读取到了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
打印spec replicas

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第3章 library与jenkins集成

3.1 Library与Jenkins集成

jenkins怎么去和刚才写的library做集成
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
先创建一个package

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第一个hello把内容初始化进去,把前面传来的参数放到this对象

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
要在jenkins使用library,需要先配置jenkins

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
创建项目
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
把一个目录推送到仓库里
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

创建一个.gitgnore,让一些目录不提交到gitlab上
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
已经关联到git仓库了
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
已经推送过去了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在去jenkins配置一下library地址

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
**name library名字
default version jenkins里要去找仓库的默认版本(master分支)
**
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
scm管理器就是git
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在有了library,jenkinsfile就简化了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
devops从哪里来的就需要建立目录

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
创建vars目录下有一个devops的脚本,也就是vars这个文件其实就是暴露library使用的入口。在devops去实现对src里方法的调用,也就支持下面对jenkinsfile的方法调用了
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
上面的方法就是devops最初调用的方法,返回值就是hello.groovy的对象,就可以在jenkinsfile做一个连续的调用

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
把新家的文件提交到仓库里

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网就是为了打通jenkinsfile的调用关系

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在就进行调度了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
也就是在jenknsfle里就可以调用library了,代码构建,服务部署,消息推送都可以实现在library里

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第4章 library实现镜像构建及推送

4.1 Library集成docker镜像构建

用library正式实现镜像构建推送的功能
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
想要在jenkinsfile里调用就需要在var是下定义方法,可以给默认值,镜像是repo+tag两个参数,dockerfile路径
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

以前构建docker镜像的方法
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
但是通常有默认值的放在后面,排一下序
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
上面的只是一个入口,真正去执行的docker构建还需要放在上面的实现脚本里,新建一个Docker.groovy。
传递的参数都放到this里

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在去做一个构建,在groovy脚本里可以通过sh方法调用shell命令,变量是要在${}里引用的
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
build写好了,那么就需要写如何调用了
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
加一个push操作
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交到git仓库

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
jenkins添加一个docker harbor凭据
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
加了一个dockerimage的
第一个参数repo,默认用git仓库的commitid 作为tag
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
上下文就是目录

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
调用docker命令返回的是docker对象

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下构建任务自动触发
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
执行docker login

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
执行docker build

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

4.3 丰富构建通知逻辑

之前的原版jenkinsfile

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

try异常,目的是执行三次看看是否成功

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
但是每次错误都会抛出异常,看看如何去优化

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
优化try逻辑,尝试三次,成功打印成功过,错误打印一次错误信息
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
通知giltab端构建任务及状态。也就是下面这个部分

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里加一个build,可以知道是在build步骤出错的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
之前的是做的消息拼接,每次都需要拼接就可以做成公用的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
就是去实现一个方法的问题
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
放到了BUILD_TASK环境变量里,只不过是通过一个接收参数的方式
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
在Docker.groovy里去调用新的类
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

每次都调用一个buildmessage

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
在这里加,就不需要每一个都new了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里就可以直接用this.message了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
push和login都需要把buildmessage方法加进去

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
改造一下jenkinsfile,推送到钉钉里
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交到gitlab上
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
blue ocean查看步骤

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
push也加入了判断成功与否

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
加一个env
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下library

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里出现的传参错误

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交代码

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
看到详细就成功了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
目前的jenkinsfile里只是去做一个docker的构建,加上一个push,
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第5章 library集成k8s服务部署

5.1 library实现自动部署简单版

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
之前的部署就是把镜像版本替换,然后进行部署

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
要现在devops里添加一个deploy部署方法
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
然后下src模块里加上实现
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

getobjects,获取一个deploy实例,下面开始去部署
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里赋值一个值

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
实例化一个buildmessage

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
return出去就OK了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
push也改一下,改成双引号

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
在jenkinsfile里加上stage
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
到blueocen看一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
start可能写错了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里是start

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
但是这里是deploy
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

改成start
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里少了目录文件

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
加上/*

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这样就成功了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

5.2 library实现自动部署优化版(上)

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
简单的版本只是去部署,还没有去检测部署状态,到底是成功还是失败没有检测

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
人工检查的思路

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这是一个deployment

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
先把pod列表找出来
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第二步,看这个pod是否running
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
查看部署的副本数和running是否达标
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第一个难点是去做循环检测,多少分钟内一直去检测,类似定时器

如何通过library去实现
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以去解析拿到deployment里面的值

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以用label app=myblog过滤

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
如何检测pod状态
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
-o输出格式,jsonpath json的一个路径

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
.点好就是整个json文件
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网items就取到了数组第0项

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
status字段的phase属性

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
3.查看上述running pod数,是否和myblog的deployment中定义的repipas副本数一致

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
如果有多个pod,就需要遍历item列表确保每个状态值都是正常的
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

写一个计时器5分钟,5分钟不通过超时失败退出了,

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这三个逻辑其实是在这个里,连续ready次数大于5次才认为更新deploy状态成功

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
如果readycount不满足,还没有超过5分钟,就休息5秒继续检测

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

5.3 library实现自动部署优化版(下)

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
是不是等待成功检测的过程,如果是true就去读代码workloadfilepath

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
观察pod的状态,正常来才去执行更新状态
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
否则就去执行else逻辑

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里可以直接readfile去读取文件内容,如果没有kind,那么这个yaml文件就不合法,抛出异常。
kind放到workloadtype

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这个monitordeployment只是针对判断deployment,其他还需要自己写
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
查看monitordeployment如何实现
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
5分钟超时,就认为pod不正常,printcontainerlogs打印container日志

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
printcontainerlogs是如何实现的,namespace是从yaml文件里拿的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
monitordeployment下半部分,没超时去做循环检测,去获取pod的json文件就是去读每个pod的状态内容,连续三次成功才去更新状态是成功的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
否则状态0,打回原形,查看pod状态,这些都可以在jenkins看到,有异常就去更新失败

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

解析之后是一个json对象

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
循环检测,联系3次,也就是10秒钟去检测
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
重点是查看每个pod的状态

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在服务没有不可用的
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
有不可用的肯定是false

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
下面就是检测pod

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
传一个参数,是否检测

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
、deployment文件路径

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交library代码
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
再提交jenkinsfile

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
循环检测和倒计时是很重要的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
执行成功

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里还处于一个创建中的状态
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
通过一个label的方式去查找
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
还处于创建的时候,继续往下走

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
一个副本的时候,会有同一时间两个pod都在running的时候

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第6章 library实现即使消息推送

6.1 手写library集成消息通知逻辑框架

消息通知也可以放到library去实现

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
比如想要直接调用一个library的方法,不在jenkins去实现

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

在library去实现,成功和失败都需要通知
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
有title,有项目名称

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
有用微信的,有email,需要通用,加个参数receiver

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网、比如传一个wechat

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
先搭一个框架,传一些参数,credentialsid,title

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
新建一个notification类
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
上面只是实现了一个类,真正实现一个通知还需要写方法
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

这里进行一个调用

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
jenkins里去调用

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在要区分成功还是失败,不用return给前面了,直接调用即可

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
jenkisnfile就可以这么写了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
定义消息,失败和成功的消息

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
查看这几个参数

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

再实现把message传过去,定义一个方法

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里要去获取构建地址,构建分支的一些信息

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
拼接了一些项目名称,gitlog

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
有了这些拼成的msg,就可以发送消息,根据不同的receiver发送消息
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里实现一个失败消息,成功消息发送

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
再jenkinsfile里调用

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里实现了一个消息组装

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

6.2 library优化dingTalk消息通知

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
查看dingtalk和wechat如何去实现

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
建立一个dingtalk类,但是没必要用shell来实现了
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
token放在这里

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
生成的message信息,
validresponsecodes发送http请求的返回码

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这里还是生成一个markdown格式

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
new一个dingtalk,然后markdown就可以了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
wechat的就类似dingtalk的就行

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
httprequest不是默认的,是需要插件实现的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
代码提交
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
修改jenkinsfile

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下jenkinsfile

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
已经在构建执行了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
传递的错误参数是failure

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
notification里生成了消息的内容

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

但是链接没有

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这是定义了,没有加链接

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
markdown的语法,可以中括号,括起来

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这就是期望的链接

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
第一次使用的时候需要加一个换行

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
遍历拼接

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
持续构建中
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
返回res

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
消息通知
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第7章 library集成代码扫描

7.1 library集成代码扫描

直接去执行代码扫描,等待3秒返回结果
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
检测的时候有一个version概念

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

有时候可以不等待检测结果,可以给一个开关

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
现在去建立sonar的类
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这样就拿到version,commitid

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
这样就实现动态version变化

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
是否需要等待,然后成功或者失败

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
没有找到scan

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
不想检测就false,前面的空值会自动帮你获取version
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
对应上面的version

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

这里少了一次调用
2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
提交一下

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
scan开始运行了

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
可以根据自己情况加扫描,不然有些太苛刻

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
新的检测

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
加入扫描成功

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网
整个过程是ok的

2020/01/03 基于sharedLibrary进行CICD流程的优化(一)-编程知识网

第8章 集成robot自动化测试

8.1 配置robot-cases项目自动化