簡述
將一個項目的全部流程分爲三個階段”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選項參數達到可控回滾