Jenkins通过备份文件实现回滚

2020-07-31 14:12:40 浏览数 (1)

回滚是非常常见的运维操作,我们可以通过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相关配置。

0 人点赞