一、系统环境:
操作系统:centos7.8
jenkins版本:2.289.3
二、需求背景
由于在实际的生产环境中,有的项目发布后由于各种原因需要回退到之前的版本,所以我们需要在jenkins上配置版本回滚,方便出现问题后及时回滚到之前版本。
三、具体操作
1、增加参数化构建
首先需要增加一个参数化构建过程,在每次构建前,会提示我们是否需要发布还是回滚,默认是直接发布的状态。下面也会细讲。
2、归档成品
由于回滚的操作,需要把项目的包文件备份到每次构建的任务下,这样在jenkins的每次job下,都会备份一个相对应的包文件,方便版本回滚,我们写入存档的文件,生成对应的脚本文文件。
3、编辑pipeline脚本
编辑环境构建语句,如果选择发布就进行构建,如果选择回滚,就将之前归档的包文件,替换到现有路径下。
将对应的归档脚本增加到pipeline的脚本中,在每次发布完成后,进行包文件归档操作。
stage('环境构建') {
steps {
sh '''case $status in
deploy)
echo “status: $status”
mvn clean test package
;;
rollback)
echo “status: $status”
echo “version: version”
rm -rf target
cp -R ${JENKINS_HOME}/jobs/pipeline-test/builds/${version}/archive/target .
pwd && ls
;;
*)
exit
;;
esac'''
4、保存并测试
构建的时候,要选择进行发布操作还是回滚操作,如果选择回滚操作,需要写入回滚的对应版本。
5、后期优化
由于回滚操作会归档每次版本的包文件,长时间运行会导致磁盘增长较快,建议配置成保留的个数或者天数,将之前多余且不用回滚的包文件进行删除。
注:
以上为本人实际搭建过程中的经验总结,如果有什么问题,可以在评论区留言,大家一起探讨进步!