在推送新映像之前部署了群集堆栈

时间:2019-07-06 12:59:54

标签: docker gitlab docker-swarm circleci docker-registry

我使用 CircleCI ,并且管道如下:

  • 构建
  • 测试
  • 构建appnginx Docker映像,并将其推送到 GitLab注册表
  • Docker堆栈部署到开发服务器(当前为 Swarm管理器

我刚从{strong> CircleCI 发送成功消息后,将我的develop分支推送到我的存储库,并在开发服务器上遇到了“ Symfony4新的Controller页面”

我通过SSH登录并执行了(带有应用程序服务的输出):

docker stack ps my-development-stack  --format "{{.Name}} {{.Image}} {{.CurrentState}}"

my-stack_app.1    gitlab-image:latest-develop    Running 33 minutes ago


在我的 GitLab 存储库的注册表中,应用程序映像已“最近更新” 41 minutes ago。显然,该服务的图像在最新版本之前已经刷新

  • 这是常见的问题/错误吗?
  • 我该如何(或应该 )解决此计时问题?
  • CircleCI 可以提供帮助吗?

2 个答案:

答案 0 :(得分:0)

也许最好(尽管不理想)在构建和部署之间引入延迟,您可以在此处参考此示例CircelCI Delay Between Jobs

答案 1 :(得分:0)

我发现了使用由 CRON 触发的 CircleCI 预定工作流程的解决方法。我安排了一个每晚构建工作流,该工作流每天午夜运行。

我的config.yml文件的样本

# Beginning of the config.yml
# ...

workflows:
    version: 2

    # Push workflow
    # ...

    # Nightly build workflow
    nightly-dev-deploy:
        triggers:
            - schedule:
                  cron: "0 0 * * *"
                  filters:
                      branches:
                          only:
                              - develop
        jobs:
            - build
            - test:
                requires:
                    - build
            - deploy-dev:
                requires:
                    - test
  

CircleCI official documentation

中,通过每晚的构建示例详细了解计划的工作流程。

对我来说更像是一种解决方法。我很高兴听到您如何避免此问题,从而可以更好地回答该问题。