我在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中单击“批准”后,不会触发部署作业,并且工作流程会成功结束。
你知道怎么了吗?
答案 0 :(得分:1)
CircleCI文档contains很少有此类设置必须满足的要求:
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
作业)。