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 请求后拉去新版本镜像