shell简单部署脚本

1.结合jenkins参数化,把test,uat,prod三个环境的部署集合到一个jenkins job 里
2.自动判断需要部署的分支–直接用webhook(钩子)推送过来的参数获取判断(但是只有自动推送的时候能拿到,并不会存为Jenkins的环境变量可以反复使用)
在这里插入图片描述
在这里插入图片描述

#!/bin/sh
PROJECT_NAME="cen"             ##jenkins参数化的选项
ENV="UAT"                         ##jenkins参数化的选项
if [ "$PROJECT_NAME" = "cen" ]&&[ "$ENV" = "UAT" ];then ##if 语句中必须带空格
    HOST_LIST="182.110.17.4 182.110.17.3"
    echo 'deploy UAT'
elif
   [ "$PROJECT_NAME" = "wor" ]&&[ "ENV" = "UAT" ];then
    HOST_LIST="182.110.17.2"
fi
for host in $HOST_LIST; do  ##循环部署
    echo "===========deploy to $host============"
done

前端vue部署,为了节约时间先npm run,如果run失败再
npm build npm run

cd /root/.jenkins/workspace/SaleFeTest 
&& npm run test || ! npm build || npm run test
&& npm run test
rsync  -avz -e "ssh -p22" --delete /root/.jenkins/workspace/SaleFeTest/dist/ 0.0.0.0:/home/wwwroot/test.sale/

建立项目IP字典文件,部署脚本进一步封装抽离
a.新建字典TXT文件
内容
PROJECT_NAME1=1.0.1.0
PROJECT_NAME2=2.0.1.0

b.新建sh文件执行命令集,获取项目对应的IP

ip=cat /opt/DingUserList.txt | grep "${PROJECTNAME}=" | awk -F"=" '{print $2}'

C.Jenkins执行shell命令传参以及执行sh文件即可,从而实现了部署脚本的进一步抽离
在这里插入图片描述

3.简单回滚代码
在这里插入图片描述

HOST_LIST="111.111.11 22.22.22"
if ["$RollBackVersion" == ""]
then
    for host in $HOST_LIST; do
    echo "===========deploy to $host============"
    done
else
    echo "正在强制回退本地服务器代码版本"
	for host in $HOST_LIST; do
    ssh $host "git reset --hard $RollBackVersion"
    done
fi

4.jenkins优化了一下第一次部署,只需要告知仓库地址和部署目录(如果部署目录不存在。git先克隆库)

repo_dir='/home/wwwroot/test-api'
ssh 11.11.11.12 "
if [ ! -d $repo_dir/.git ]
then
  echo $repo_dir is not a git repository, cloning...
  git clone $GIT_URL $repo_dir
fi"

后续可以进一步考虑:
(1)过滤掉静态页面的更新,不用重启tomcat
(2)抽取脚本中的通用的方法
(3)根据公司的业务参数的进一步抽离

参考大佬文章:
https://www.cnblogs.com/linjiqin/p/7779341.html
https://www.cnblogs.com/nmap/p/6784121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值