gpt4 book ai didi

continuous-integration - 如何在 CircleCI 2.0 工作流中进行有条件的手动批准

转载 作者:行者123 更新时间:2023-12-04 23:38:22 26 4
gpt4 key购买 nike

我有一个简单的用例,我想制作一个 manual approval仅适用于特定的分支和/或标签。

带有 type:approval 的工作流作业与所有其他工作一样有过滤器,但工作 foo 需要手动批准(或不需要)的将使用类似 requires: ['approve'] 的内容然后与它密切相关。

这意味着 foo 如果批准步骤与过滤器不匹配,则根本不会发生。

那么..任何干净的解决方法,在 yaml 文件中没有很多重复项?

编辑:Same question on CircleCI Discuss

最佳答案

使用 YAML alias map

这是一种黑客行为,但使用 YAML alias map您重复使用您的步骤并使用不同的过滤器创建两个单独的工作流路径:一个有批准,另一个没有。

这是一个完整的例子:

version: 2.0

# Run job (defined in a YAML alias map, see http://yaml.org/type/merge.html)
run-core: &run-core
docker:
- image: circleci/node:8
steps:
- checkout
- restore_cache: { key: 'xxxxx' }
- run: npm install
- save_cache: { key: 'xxxxx', paths: ['xxxx'] }
- run: npm run build
- run: npm run validate
- deploy: ./scripts/deploy.sh

# Jobs (duplicate the same job, but with different names)
jobs:
run:
<<: *run-core
run-with-approval:
<<: *run-core

# This will allow manual approval and context
# See https://circleci.com/docs/2.0/workflows/#git-tag-job-execution
workflows:
version: 2
run:
jobs:
# Without approval (for all branches except staging)
- run:
context: org-global
filters:
branches: { ignore: 'staging' } # All branches except staging
tags: { ignore: '/.*/' } # Ignore all tags
# With approval (only for tags and staging branch)
- run-with-approval:
context: org-global
filters:
tags: { only: '/.*/' } # All branches and all tags
requires: ['approve'] # But requires approval (which is filtering)
- approve:
type: approval
filters:
branches: { only: 'staging' } # Ignore all branches except staging
tags: { only: '/.*/' } # All tags

我希望这会有所帮助

关于continuous-integration - 如何在 CircleCI 2.0 工作流中进行有条件的手动批准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com