golang项目的自动化部署
在Go项目中。部署可以使用Makefile
管理编译脚本、打包上传二进制至服务器的功能。
但在服务器上,如何自动在收到上传后自动停止服务,解压二进制包,替换旧二进制文件,再启动。这是个一直困扰我的问题。
在Debian
上可以使用systemd
的service
脚本,实现守护,并实现启动前的预检测新包功能。
但service
脚本无法感知到有新版的二进制包被上传。
想了很多办法,但都不如意:
采用用
Golang
写一个文件监测服务。杀鸡用了宰牛刀。装自动化CI服务之类的,重且不说,业务分布在不同的主机,挨个安装部署太费精力。
装一个
git
服务。利用git
的Hook
触发部署。可将源码部署在生产主机上,不合适不说,还是要挨个主机装一个。
理想方案
今天偶然想到了shell
查了一下。结果一下就通了。
首先在Debian
上安装文件监测工具。inotify-tools
一个监控脚本:
1 | !/bin/bash |
为这个监测脚本编写守护服务:
1 | cat /usr/lib/systemd/system/watchdog.service |
启动它
`systemctl enable watchdog`
`service watchdog start`
Done!现在只要在开发环境make install
。服务器收到了二进制包,就会在无人执守的条件下,自动部署更新包。并重启!
- 本文标题:golang项目的自动化部署
- 本文作者:jf wang
- 创建时间:2021-09-09 17:04:31
- 本文链接:https://www.wangjunfeng.com.cn/2021/09/09/golang-auto-deploy/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!