Подтверждение задания CircleCI не выполняет задание - PullRequest
0 голосов
/ 22 января 2019

У меня есть следующие настройки рабочего процесса в конфигурации CircleCI:

// <<< definition of unit_tests, integration_tests and deploy jobs >>>

workflows:
  version: 2
  build-test-and-deploy:
    jobs:
      - unit_tests
      - integration_tests:
          requires:
            - unit_tests
      - build_images:
          requires:
            - integration_tests
          filters:
            branches:
              only:
                - production
      - deploy:
          type: approval
          requires:
            - build_images
          filters:
            branches:
              only:
                - production

Цель состоит в том, чтобы остановить выполнение рабочего процесса до тех пор, пока развертывание в производство не будет утверждено вручную. Когда запускается рабочий процесс, он корректно останавливается перед заданием развертывания, но после нажатия кнопки «Утвердить» в пользовательском интерфейсе задание развертывания не запускается и рабочий процесс заканчивается успешно.

Вы знаете, что не так?

1 Ответ

0 голосов
/ 22 января 2019

Документация CircleCI содержит несколько требований, которым должна соответствовать такая установка:

  • approval - это специальный тип задания, доступный только для заданий с клавишей workflow
  • Задание hold должно быть уникальным именем, не используемым никаким другим заданием.
  • Имя задания для удержания является произвольным - например, это может быть wait или pause, если в задании есть ключ type: approval. > - Все задания, которые должны выполняться после одобренного вручную задания, должны require: имя этого задания. Обратитесь к deploy: job в приведенном выше примере.
  • Задания выполняются в указанном порядке, пока рабочий процесс не обработает задание с помощью клавиши type: approval, за которым следует задание, от которого оно зависит.

Конфигурация должна иметь еще одно задание, которое не настроено выше, и его единственное назначение - остановить выполнение:

// <<< definition of unit_tests, integration_tests and deploy jobs >>>


workflows:
  version: 2
  build-test-and-deploy:
    jobs:
      - unit_tests
      - integration_tests:
          requires:
            - unit_tests
      - build_images:
          requires:
            - integration_tests
          filters:
            branches:
              only:
                - production
      - hold:
          type: approval
          requires:
            - build_images
          filters:
            branches:
              only:
                - production
      - deploy:
          requires:
            - hold
          filters:
            branches:
              only:
                - production

Суть в том, что задания должны быть настроены как последовательные (deploy задание требует halt задание для завершения).

...