jenkins版本回滚-jenkinsfile回滚(pipeline回滚实操)
一、系统环境:操作系统:centos7.8jenkins版本:2.289.3二、需求背景由于在实际的生产环境中,有的项目发布后由于各种原因需要回退到之前的版本,所以我们需要在jenkins上配置版本回滚,方便出现问题后及时回滚到之前版本。三、具体操作1、增加参数化构建首先需要增加一个参数化构建过程,在每次构建前,会提示我们是否需要发布还是回滚,默认是直接发布的状态。下面也会细讲。2、归档成品由于回
一、系统环境:
操作系统: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、后期优化
由于回滚操作会归档每次版本的包文件,长时间运行会导致磁盘增长较快,建议配置成保留的个数或者天数,将之前多余且不用回滚的包文件进行删除。
6、二次判断
stage('确认确认-2') {
steps {
script {
def userInput = input(
message: '选择继续发布或者回滚操作',
parameters: [
choice(choices: ['deploy2', 'rollback2'], description: 'deploy2:发布操作;rollback2:回滚操作', name: 'status2'),
string(defaultValue: '0', description: '回滚版本号【建议选择前一个可用版本号】,发布操作可忽略', name: 'version2')
]
)
echo "User selected action: ${userInput.status2}"
echo "User provided version: ${userInput.version2}"
if (userInput.status2 == 'deploy2') {
echo "is deploy2"
} else {
script{
sh "rm -rf target && cp -R ${JENKINS_HOME}/jobs/test-test/builds/${userInput.version2}/archive/target ./"
echo "is rollback2"
}
}
}
}
}
注:
以上为本人实际搭建过程中的经验总结,如果有什么问题,可以在评论区留言,大家一起探讨进步!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)