51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Jenkins 通过参数化构建实现 发布和代码回滚的操作步骤

参数化构建,通过tag传递参数达到发布和代码回滚的操作

(1) 先给代码打标签,推送到 gitlab

(2)配置 jenkins

http://10.0.0.201:8080/job/free-jbo/configure

使用git parameter插件------git参数
git parameter

上边 的 getversion 就可以获取TAG号

接下来我们配置一下, 如何获取对应的tag 的代码

tar -zcvf /opt/game.tar.gz  ./*
ssh 10.0.0.7 "mkdir /code/xiaobanwang_$BUILD_ID"
scp /opt/game.tar.gz 10.0.0.7:/code/xiaobanwang_$BUILD_ID
ssh 10.0.0.7 "cd /code/xiaobanwang_$BUILD_ID && tar -xf game.tar.gz && rm -rf game.tar.gz"
ssh 10.0.0.7 "rm -rf /code/game && ln -s /code/xiaobanwang_$BUILD_ID  /code/game"

成功了

解我们再来 打一个 13.4的标签

如何快速的 回滚呢?

我们来写代码,需要配置脚本

(1) 参数化构建-》 添加参数-》 选项参数

我们保存一下, 前端应该可以选择 2个参数 deploy 还是 rollback

如果选择回滚,我们的逻辑是 不再拉取代码,因为之前部署过一次。做到秒级回滚(软连接方式)

我们写一下脚本:

sh -x /server/scripts/deploy_rollback.sh

[root@baimeidashjenkins /server/scripts]#cat deploy_rollback.sh 
#!/bin/sh
gitversion=$getversion
CODE_DIR="/var/lib/jenkins/workspace/free-jbo"
WEB_DIR="/code/"

WEB_IP=10.0.0.7
get_code_tar(){
        cd $CODE_DIR && tar zcf /opt/web-${gitversion}.tar.gz ./*
}

scp_code_web(){
        scp /opt/web-${gitversion}.tar.gz $WEB_IP:$WEB_DIR
}

code_tarxf(){
        ssh $WEB_IP "cd $WEB_DIR &&mkdir web-${gitversion} && tar xf web-${gitversion}.tar.gz -C web-${gitversion} && rm -rf *.tar.gz"

}
ln_html(){
         ssh $WEB_IP "cd $WEB_DIR && rm -rf game && ln -s web-${gitversion} game"
}

main(){

        get_code_tar;
        scp_code_web;
        code_tarxf;
        ln_html;
}
#main
#if [ "$deploy_env" == "deploy" ];then
#        main
#elif [ "$deploy_env" == "rollback" ];then
#        ln_html
#fi
#
#当重复执行构建后会生成多个相同版本的文件,利用jenkins变量值解决重复性构建问题
#jenkins变量
#1. GIT_COMMIT 当前版本提交产生的哈希唯一值
#2. GIT_PREVIOUS_SUCCESSFUL_COMMIT 已经提交过的版本的哈希唯一值
#使用以上两个值做比较,如果已提交则退出,如果没有提交过则继续执行构建,更改脚本做判断
#
if [ "$deploy_env" == "deploy" ];then
   if [ "$GIT_COMMIT" == "$GIT_PREVIOUS_SUCCESSFUL_COMMIT" ];then
       echo "构建失败该 $git_version 版本号已部署"
   else
   main
   fi
elif [ "$deploy_env" == "rollback" ];then
       ln_html
fi

以上实现的功能,就是 不会重复部署, 回滚可以做到秒级回滚

欢迎来撩 :shell 编程从0到1

欢迎来撩 :devops cicd持续集成全程(汇总)

欢迎来撩 :汇总all

赞(0)
未经允许不得转载:工具盒子 » Jenkins 通过参数化构建实现 发布和代码回滚的操作步骤