awm47
V2EX  ›  问与答

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

  •  
  •   awm47 · Mar 16, 2020 · 1505 views
    This topic created in 2339 days ago, the information mentioned may be changed or developed.

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

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

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

    目前我想到的方案有

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

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

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

    还没做到每一个单独的服务能自己重启。
    Torpedo
        2
    Torpedo  
       Mar 16, 2020
    不是很懂。php 要重启吗?不是把文件上传了就能更新,能跑么?
    awm47
        3
    awm47  
    OP
       Mar 16, 2020
    @wangxiaoaer 如果已经打包了镜像的情况下, 直接通过触发一个服务器的钩子实现 docker 的自动重启应该是挺简单的呀?
    awm47
        4
    awm47  
    OP
       Mar 16, 2020
    @Torpedo #2 在文件量多的情况下, 可能会出现请求进入时没完全替换完毕, 然后就可能一半文件是新的, 一半的旧的
    wangxiaoaer
        5
    wangxiaoaer  
       Mar 16, 2020 via Android
    @jaynos 懒得弄了,钩子也很考虑安全性,集群啥的。
    awm47
        6
    awm47  
    OP
       Mar 16, 2020
    @wangxiaoaer #5 没有什么安全性是一个 ip 白名单不能解决的 (doge
    Torpedo
        7
    Torpedo  
       Mar 16, 2020
    @jaynos 那一台一台同步。同步的时候,把它摘了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1644 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 16:22 · PVG 00:22 · LAX 09:22 · JFK 12:22
    ♥ Do have faith in what you're doing.