【问题标题】:CircleCI job approve doesn't execute the jobCircleCI 作业批准不执行作业
【发布时间】:2019-06-15 16:48:01
【问题描述】:

我在 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

目标是停止工作流执行,直到手动批准部署到生产。触发工作流执行时,它会在部署作业之前正确停止,但在 UI 中单击“批准”后,不会触发部署作业并且工作流以成功结束。

你知道哪里错了吗?

【问题讨论】:

    标签: continuous-integration circleci


    【解决方案1】:

    CircleCI 文档contains 此类设置必须满足的一些要求:

    • approval 是一种特殊的作业类型,仅适用于 workflow 键下的作业
    • hold 作业必须是不被任何其他作业使用的唯一名称。
    • 要保留的作业的名称是任意的 - 例如,它可以是 waitpause,只要作业中有 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 作业才能完成)。

    【讨论】:

    • 这对我来说也是一个主要的困惑点:无论出于何种原因,您都不能只将type: approval 添加到需要批准的工作中,但您需要使用type: approval 创建另一个空白工作和需要那个!感谢您清理它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2021-11-14
    • 2012-03-29
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多