Jenkins 通过tag进行构建及回滚

在平时工作中 开发新的版本,版本迭代,经常会在git上打标签,这个文主要内容是 在jenkins上通过选择不同的tag标签进行构建 ,并发布到服务器中运行起来。这个文章不会详细到从0开始,只重点讲解下怎么通过tag构建 如果不清楚标签是什么或者 怎么构建jenkins项目及jenkins参数可以参考前面的文

安装插件  

需要先在jenkins中安装Git Parameter插件

Dashboard-->Manage Jenkins --> Manage Plugins 搜索Git Paramete进行安装

构建项目 

构建一个item 类型根据自己的项目需要选择 我这个是 freetyle project


General 里要注意:

勾选This project is parameterized [参数化构建过程] 指的是外置传参的一种形式 ---> 在Add parmeter [添加参数] 中选择Git Parameter

如果需要回退的话 可以添加  Choice Parameter 后面需要写shell脚本

Source Code Management 环节

这个环节要注意 :  Branch Specifier (blank for 'any') ,需要填写 Git Parameter中的变量名

Build  

我构建的项目是 JavaScript vue框架 执行的脚本如下

jenkins:

echo "----------------------$git_version-----------------"
if [ "$git_version" = "v1.2" ];then
  sh -x /home/sh/replace/replace_docker-im.sh
else
  echo "-------------Git分支:${git_version}----------------"
fi


引入的shell脚本:

DATE=`date +%Y-%m-%d`
im_file=$(find /data/b2b2c_web/ -maxdepth 1 -type d -name "im*-$git_version" |tail -2| head -1 )

replace () {
    pwd
    source /home/sh/replace/replace.txt
    # 更改域名
    echo "--------------修改域名-------------------"
    sed -i "s@im_domain@$WS_IM_Domain@g" ./src/utils/config.js
    sed -i "s@seller_domain@$Seller_Domain@g" ./src/utils/config.js

    echo "------------修改完毕-----------------------"

}
build (){
    echo "-----------------构建im------------------"
    npm install
    cp -fr node_modules_special/* node_modules/
    npm run build
    #mv /data/b2b2c_web/im /data/b2b2c_web/im_$DATE$BUILD_NUMBER
    rm -rf /data/b2b2c_web/im
    mv dist /data/b2b2c_web/im$DATE-b$BUILD_NUMBER-$git_version
    ln -s /data/b2b2c_web/im$DATE-b$BUILD_NUMBER-$git_version /data/b2b2c_web/im
    echo "------------------构建结束----------------------"
}

rollback () {
    file=$(find /data/b2b2c_web/ -maxdepth 1 -type d -name "im*-$git_version" |tail -2| head -1 )
    rm -rf /data/b2b2c_web/im
    ln -s $file /data/b2b2c_web/im
}

replace_build () {
    replace
    build
}

if [ $deploy_env == "deploy" ];then
    if [ "$git_version" = "v1.2" ];then
        if [ $GIT_COMMIT == $GIT_PREVIOUS_SUCCESSFUL_COMMIT ];then
            echo "已经部署过该${git_version}版本,文件名${im_file} "
                  exit 1
        else
            replace_build
        fi
    elif [ "$git_version" = "v1.1" ];then
        if [ $GIT_COMMIT == $GIT_PREVIOUS_SUCCESSFUL_COMMIT ];then
            echo "已经部署过该${git_version}版本,文件名${im_file} "
        else
            build
        fi
    fi
elif [ $deploy_env == "rollback" ];then
        rollback
fi

如果在jenkns中选择了 replace 执行打包 部署的代码。选择了rollback 则回滚到最近一次部署的代码中,为了防止重复构建,加了一个git的commid 如果等于上次构建的commitid的话 返回已经部署过 并退出,这个回退有点问题 只能回退最近一次构建成功的版本 在之前的不行,应该也可以通过脚本实现 可以试一下。


构建项目  

构建项目时 选择对应的信息就可以啦

🎡 以上就是本期的所有内容。如果觉得我的文对你有帮助,可以一键三联支持下,有什么好的想法也可以分享给我

   preview

如果觉得我的文对你有帮助的话 可以关注下我的公众号 一般写文第一时间发布到公众号中

公众号名称 咕咕崽

二维码: 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值