我的shell脚本实战-编写一个系统发布脚本

平常我们会使用Jenkins发布系统,Jenkins可以从代码更新,编译到发布这样的一条龙服务。操作成本很低,作为程序员,肯定不满足于简单的界面操作。

图片

于是我决定使用shell写一个自动发布的脚本,既可以更熟悉发布流程,也可以学习shell语法。

发布流程思考

图片

结构

如上图,我们将编写的shell脚本放到主机A,执行脚本,会从git服务器拉取代码,为了在拉取代码时不需要输入密码,我们需要在gitlab上面添加密钥:

图片

image-20210325112328103

这个密钥是在主机A中生成的,生成密钥的命令为:

ssh-keygen -t rsa

我们在 ~/.ssh目录下就可以找到id_rsa.pub

图片

id_rsa.pub中的内容拷贝到gitlab中即可。

接下来我们在主机A中编译代码,然后将编译好的代码远程分发到不同的主机中,再在这些主机中启动程序。

发布脚本

发布脚本的主要功能见下图:

图片

这个脚本主要要有:拉取代码,编译成jar,备份原程序,分发远程序,启动程序等功能。

因为有测试环境和正式环境,我在执行脚本的时候会在后面带一个参数pro或test,代表发布到不同的环境。

首先我们在两个环境各自相关的地址:

图片

当输入的变量参数为test时,走test的路径。为pro时,走pro的路径。如果输入了其他的参数,会给个提示 "请输入正确参数【test或pro】,当前参数: '$1"。

图片

为了保险起见,我会先打印出要发放的地址,然后给出询问,是否继续执行。

图片

显示如下:

图片

输入Y会继续执行,输入N会退出脚本。

接着开始拉代码:

图片

这里,如果之前没有clone,会先clone下代码,如果clone了,直接pull代码。

图片

接下来maven编译打包。打完包后我们需要将jar包远程发送到应用主机,因为远程访问需要免密登录,这里也需要配置密钥。

cd ~/.ssh
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip

我们将主机A中的密钥通过上述命令发放到应用主机。

将jar包发放前我们再将应用主机中的原jar包备份一下。

图片

因为应用主机可能是多台,这里写了一个for循环,进行循环备份。

备份好后,就可以远程分发了。

图片

这里也是循环发放,用到了scp命令。

最后我们启动应用主机的程序即可。

图片

启动系统之前需要将原系统停掉,系统启动脚本在各自的应用系统中。

图片

上图为启应用动脚本这里我们指定了启动的运行环境。

--spring.profiles.active=dev

并且可以退出控制台,实现后台运行。

nohup xxx >/dev/null 2>&1 &

以上一个简单的发布脚本就实现了。

这里是后端的实现,前端也可以用同样的脚本,只要将编译的命令改成前端的编译命令即可。

以上就是用shell脚本模拟了Jinkens的发布过程了,至此有没有发现shell也很简单呢。

往期推荐

扫码二维码,获取更多精彩。或微信搜Lvshen_9,可后台回复获取资料

回复"java" 获取java电子书;
 
回复"python"获取python电子书;
 
回复"算法"获取算法电子书;
 
回复"大数据"获取大数据电子书;
 
回复"spring"获取SpringBoot的学习视频。
 
回复"面试"获取一线大厂面试资料
 
回复"进阶之路"获取Java进阶之路的思维导图
 
回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)
 
回复"总结"获取Java后端面试经验总结PDF版
 
回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)
 
回复"并发导图"获取Java并发编程思维导图(xmind终极版)

另:点击【我的福利】有更多惊喜哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值