我的服务自动化部署方案

travis ci方案

个人选择自动化部署方案的原则之一是不自行搭建类似jenkins这样的持续集成系统,选择travis是因为使用相对简单灵活,而且与github有很好的集成。

关于使用外部云存储,最开始也用过scp直接上传部署包到vps的方案,当时vps在海外,后来vps更换到国内aliyun,方案就基本不可行了,主要是两点,上传速度慢;安全性(海外ip登录服务器的警告,当然也可以用http上传替代)。考虑外部云存储无外乎两个选择,选择七牛/又拍/oss等国内;选择s3这些海外存储,前者上传慢,后者下载慢(挂代理就不说了)。

关于vps接收webhook,这个看个人,我是用flask随便写的服务,里面调用shell脚本部署。

docker 方案

travis 方案如果非要说缺点,只有最后上传部署包到云存储比较慢,docker 方案主要是了解到multi-stage builds,这个方案就可以不依赖云存储。

相比travis方案,这个方案依赖少,而且镜像拉取可以通过aliyun内网,要调整的有两点:

  • Dockfile编写,这个各凭本事了,spring boot gradle可以参考我的admin项目
  • 服务调整为使用docker部署,接收到 webhook 请求后拉去新版本镜像