Стек Swarm развертывается до того, как новые изображения будут загружены - PullRequest
0 голосов
/ 06 июля 2019

Я использую CircleCI , а конвейер выглядит следующим образом:

  • сборка
  • тест
  • build app & nginx Изображения Docker и отправка их в реестр GitLab
  • развертывание стек Docker на сервере разработки (в настоящее время Swarm manager )

Я только что отправил ветку develop в свой репозиторий и обнаружил «страницу нового контроллера Symfony4» на сервере разработки после успешного сообщения от CircleCI .

Я вошел в систему через 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 голосов
/ 16 июля 2019

Я нашел обходной путь, используя запланированный рабочий процесс CircleCI , запускаемый CRON .Я запланировал рабочий процесс ночной сборки , который будет выполняться каждый день в полночь.

Образец моего 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


Для меня это скорее обходной путь.Я был бы рад услышать, как вы избежите этой проблемы, которая может привести к лучшему ответу на вопрос.

0 голосов
/ 06 июля 2019

Возможно, лучше (хотя и не идеально) ввести задержку между сборкой и развертыванием, вы можете обратиться к этому примеру здесь Задержка CircelCI между заданиями

...