V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jaynos
V2EX  ›  问与答

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

  •  
  •   jaynos · 2020-03-16 20:53:43 +08:00 · 1123 次点击
    这是一个创建于 1722 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    目前我想到的方案有

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

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

    7 条回复    2020-03-16 22:49:56 +08:00
    wangxiaoaer
        1
    wangxiaoaer  
       2020-03-16 20:57:44 +08:00 via Android
    目前应用基于 docker 运行,提交代码触发打 docker 镜像并上传到私服,手工通过容器管理工具更新。

    还没做到每一个单独的服务能自己重启。
    Torpedo
        2
    Torpedo  
       2020-03-16 21:01:54 +08:00
    不是很懂。php 要重启吗?不是把文件上传了就能更新,能跑么?
    jaynos
        3
    jaynos  
    OP
       2020-03-16 21:07:42 +08:00
    @wangxiaoaer 如果已经打包了镜像的情况下, 直接通过触发一个服务器的钩子实现 docker 的自动重启应该是挺简单的呀?
    jaynos
        4
    jaynos  
    OP
       2020-03-16 21:08:58 +08:00
    @Torpedo #2 在文件量多的情况下, 可能会出现请求进入时没完全替换完毕, 然后就可能一半文件是新的, 一半的旧的
    wangxiaoaer
        5
    wangxiaoaer  
       2020-03-16 21:11:34 +08:00 via Android
    @jaynos 懒得弄了,钩子也很考虑安全性,集群啥的。
    jaynos
        6
    jaynos  
    OP
       2020-03-16 21:12:57 +08:00
    @wangxiaoaer #5 没有什么安全性是一个 ip 白名单不能解决的 (doge
    Torpedo
        7
    Torpedo  
       2020-03-16 22:49:56 +08:00
    @jaynos 那一台一台同步。同步的时候,把它摘了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:11 · PVG 03:11 · LAX 11:11 · JFK 14:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.