jenkins+docker+pipeline回滚java项目
1 设置choice parameter 参数

2 设置active choices reactive parameter


这个选项默认是没用的,需要安装插件 Active Choices Plug-in
脚本内容如下:
只要上面选择demo-test这个项目,就返回a这个变量的结果
a=['bash','-c',"cat /tmp/docker.version"].execute().text.readLines()
if (service_name.equals("demo-test")){
return a
} else {
return ["选择对应的项目"]
}
3 pipeline设置
回滚大致两个步骤,
1 停止现在的容器
2 启动上一个docker镜像

脚本如下:
node() {
stage("stop and start"){
withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
sh '''
containerPool=registry.cn-beijing.aliyuncs.com/ganen
echo "停止目前的服务"
ssh root@101.200.209.128 "docker rm -f ${service_name}"
echo "启动上一个版本的docker"
ssh root@101.200.209.128 "docker run -d -p 8080:8081 --name ${service_name} -v /home/ops/${service_name}/:/data/ ${containerPool}/${service_name}:${version}"
ssh root@101.200.209.128 "docker ps |grep ${service_name}"
sleep 5
ssh root@101.200.209.128 "curl http://172.17.195.94:8080/getAppName"
curl http://101.200.209.128:8080/getAppName
'''
}
}
}
4 构建回滚任务
选择对应的项目和docker版本就是每次构建时的tag

回滚成功,如下所示:


浙公网安备 33010602011771号