简述
将一个项目的全部流程分为三个阶段”CREATE(创建)”,”UPLOAD(更新)”,”ROLLBACK(回滚)”
一.CREATE(创建)与UPLOAD(更新)
思路:
(1) 先启动一个jenkins-slave的基础上,下拉代码;
(2) 将target下面项目的war包放到jenkins-slave的${WORKSPACE}/ROOT进行解压;
(3) 再进行不同项目的特殊处理,覆盖idc_conf文件等;
(4) 编写Dockerfile将生成后的ROOT目录放入到tomcat基础镜像中的/usr/local/tomcat/webapps/ROOT路径;
Dockerfile模板(注:这里的Dockerfile路径是与上面打包ROOT路径为同级路径):
From linuxwei/jdk_tomcat:7.0.104-jdk8-adoptopenjdk-openj9
ADD ROOT /usr/local/tomcat/webapps/ROOT
CMD ["catalina.sh", "run"]
(5) 根据项目名称以及日期构建镜像以及推送镜像,里面变量为Jenkins配置变量
docker login --username=xxxxxxxxx ccr.ccs.tencentyun.com --password xxxxxx
docker build -t ccr.ccs.tencentyun.com/***/${jobs_name}-online:${image_version} ${WORKSPACE}
docker push ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version}
(6) CREATE通过Python脚本生成定制YAML文件,再用kubectl命令apply,从而生成Deployment与Service
脚本名称:create_deployment_yaml.py
UPLOAD通过Python脚本将通过kubectl命令拉去最新Deployment的yaml文件进行修改image后再apply;
脚本名称:jenkins_upload.py
(7) 跑Python脚本生成一个存储腾讯云镜像仓库下该项目现存的image_tags为ROLLBACK做前期工作
脚本名称:get_image_tags.py
二.ROLLBACK(回滚)
思路:
- Jenkins插件ExtendedChoiceParameter,以上面的UPLOAD与ROLLBACK每次构建生成的腾讯镜像仓库标签为参数;
- 将接收到的参数转为变量,用kubectl set image deployment/…来更新镜像,实现Jenkins选项参数达到可控回滚