Gitlab 下的持续集成和部署分案请教

2020-03-16 20:53:43 +08:00
 jaynos

如题, 想请教下有使用过 Gitlab CI/CD 进行集成 /部署的 V2er 们, 如何应对打包 /编译型应用的部署上线

比如 php 需要 composer install 之后连带 vendor 目录一起上线, vue 需要打包之后上线 dist 目录, golang 需要编译出二进制文件之后连带配置文件上线.

我的问题是: 如何将编译完成之后的整个目录或者可执行文件+配置文件最好能以增量更新的方式部署到线上呢?

目前我想到的方案有

  1. 打包 /编译之后提交到某个 release 仓库, 然后触发服务器上的钩子进行 pull (不是很想这么做, 因为会额外多个仓库, 感觉不是非常的优雅?)
  2. 打包 /编译之后将需要的文件压缩加密之后丢到 CDN 上, 然后触发钩子下载解密解压(全量更新, 体积不可控, 可能中间会有服务间断)
  3. 打包 /编译之后构建成 docker 镜像丢到私有仓库里, 线上直接使用基于 docker 的部署方案(可平滑升级, 但是需要重新搭建线上环境, 成本有点大)

各位 V2er 们有啥好方案可以分享下嘛

1135 次点击
所在节点    问与答
7 条回复
wangxiaoaer
2020-03-16 20:57:44 +08:00
目前应用基于 docker 运行,提交代码触发打 docker 镜像并上传到私服,手工通过容器管理工具更新。

还没做到每一个单独的服务能自己重启。
Torpedo
2020-03-16 21:01:54 +08:00
不是很懂。php 要重启吗?不是把文件上传了就能更新,能跑么?
jaynos
2020-03-16 21:07:42 +08:00
@wangxiaoaer 如果已经打包了镜像的情况下, 直接通过触发一个服务器的钩子实现 docker 的自动重启应该是挺简单的呀?
jaynos
2020-03-16 21:08:58 +08:00
@Torpedo #2 在文件量多的情况下, 可能会出现请求进入时没完全替换完毕, 然后就可能一半文件是新的, 一半的旧的
wangxiaoaer
2020-03-16 21:11:34 +08:00
@jaynos 懒得弄了,钩子也很考虑安全性,集群啥的。
jaynos
2020-03-16 21:12:57 +08:00
@wangxiaoaer #5 没有什么安全性是一个 ip 白名单不能解决的 (doge
Torpedo
2020-03-16 22:49:56 +08:00
@jaynos 那一台一台同步。同步的时候,把它摘了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/653379

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX