美文网首页
jenkins上线打包以及回滚

jenkins上线打包以及回滚

作者: 无花无酒_3cd3 | 来源:发表于2021-02-02 16:40 被阅读0次

配合参数化构建过程

image.png

丢弃构建

image.png

配置git

image.png

写shell脚本

image.png
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server=(10.19.106.100)
Sdir=/u02/webapps 
Ddir=/u02/webapps 
Name=${DATE}-${git_version}                 #${git_version}是在jenkins界面定义的变量

 
#1)进入项目目录,将内容进行打包
#${WORKSPACE}是Jenkins的内置变量,表示构建目录的绝对路径
get_code(){
        source  /etc/profile      
        cnpm  install --unsafe-perm   
        npm  run build:prod
       # tar zcf web-${Name}.tar.gz  ./dist/*
        cd ${WORKSPACE} && \
        tar zcf ${Sdir}/web-${Name}.tar.gz  ./dist/*
}
#2)将内容通过scp复制到web网页目录
scp_web_server(){
for hosts in ${web_server[*]}
do
        scp  -P 22022 -r ${Sdir}/web-${Name}.tar.gz root@${hosts}:/u02/webapps 
        ssh -p 22022  root@${hosts} "mkdir -p ${Ddir}/web-${Name} && \
                        tar zxf ${Sdir}/web-${Name}.tar.gz -C ${Ddir}/web-${Name}
                        rm -rf ${Ddir}/web && \
                        ln -s ${Ddir}/web-${Name} ${Ddir}/web"
done
}
 
rollback(){
back_file=$(ssh  -p 22022 root@${web_server} "find /u02/webapps/ -maxdepth 1 -type d -name "web-*-${git_version}"")
for hosts in ${web_server[*]}
do
        ssh -p 22022  root@${hosts} "rm -rf ${Ddir}/web && \
           ln -s ${back_file} ${Ddir}/web"
done
}
 
deploy(){
        get_code
        scp_web_server
}
#判断之前是否部署过该版本的commit,如果没有部署则部署,如果有则提示已经部署过然后退出
#如果是回退,则不受限制
if [ ${deploy_env} == "deploy" ];then
        if [ ${GIT_COMMIT} == ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} ];then
                echo "你已经部署过该${git_version}版本"
                exit 1
        else
                deploy
        fi
 
elif  [ ${deploy_env} == "rollback" ];then
        rollback
fi

报错问题

https://www.jianshu.com/p/3487ff21c210

相关文章

网友评论

      本文标题:jenkins上线打包以及回滚

      本文链接:https://www.haomeiwen.com/subject/nkvytltx.html