回滚是非常常见的运维操作,我们可以通过jenkins选择对应的tag,或者选择对应的文件进行回滚,这里先介绍下利用备份文件来进行回滚
大体思路就是:现在jenkins主机上执行构建任务,同时对打包好的java代码做一次备份,备份格式可以是包名 项目名 日期的格式,将备份好的包放到固定目录,当下一次选择构建回滚时,可以以参数的形式选择对应的要回滚的包名,然后将包名通过参数传给脚本,脚本则将包发到目标主机上完成回滚操作。
安装插件
- Active Choices Plugin
实现步骤
1、创建一个自由风格的任务
略
2、参数化构建过程
Git Parameter
Choice Parameter(选项参数)
Active Choices Reactive Parameter
代码语言:javascript复制path="/export/jenkins/workspace/backup/${jenkinsProject.name}"
rollback=['bash', '-c', "ls -t1 ${path} "].execute().text.readLines()
if (action.equals("RollBack")) {
return rollback
} else {
return ["选择RollBack后显示"]
}
这里是放在${JENKINS_HOME}/workspace/backup目录下,根据job名进行目录区分
以上是非常关键的一步,需要写Groovy script脚本,把备份的文件展示出来。注意{jenkinsProject.name}获取job名,{jenkinsProject.workspace}获取workspace名
下面就是配置Git仓库地址,这里不再贴,最后是根据参数action的值,来做判断,决定最后是deploy 还是 rollback
3、增加构建步骤
execute shell
代码语言:javascript复制dst_ip="172.20.111.161"
dst_dir="/export/servers/tomcat/"
jar_file="cashloan-app-manage"
DATE=$(date "%Y-%m-%d_%H:%M")
bak_dir="${JENKINS_HOME}/workspace/backup/${JOB_NAME}"
[ -d $bak_dir ] || mkdir -p $bak_dir
case $action in
Deploy)
mvn package -Dmaven.test.skip=true -P test
scp cashloan-manage/target/${jar_file}.war root@$dst_ip:$dst_dir
ssh root@$dst_ip "/shell/run-tomcat-app-manage.sh"
cp cashloan-manage/target/${jar_file}.war ${bak_dir}/${jar_file}_${JOB_NAME}_${DATE}.war
;;
Rollback)
scp -r ${bak_dir}/${RollbackName} root@$dst_ip:$dst_dir/${jar_file}.war
ssh root@$dst_ip "/shell/run-tomcat-app-manage.sh"
;;
esac
4、开始构建
以上就是关于备份文件来进行回滚的jenkins相关配置。