我们如何有条件地运行 CircleCI 工作流程?

Posted

技术标签:

【中文标题】我们如何有条件地运行 CircleCI 工作流程?【英文标题】:How do we conditionally run a CircleCI workflow? 【发布时间】:2021-02-25 04:31:32 【问题描述】:

我已按照Conditional steps in jobs and conditional workflows 中描述的指南为我的 CircleCI 管道编写了以下代码。

version: 2.1

workflows:
 version: 2.1
 workflowone:
  when:
   condition: false
  jobs:
   - samplejob:

 workflowtwo:
  when:
   condition: true
  jobs:
   - jobone


jobs:

 samplejob:
  docker:
   - image: buildpack-deps:stable
  steps:
   - run:
       name: Sample Job in WF 1
       command: |
         echo "This job is in workflowone and the workflow should not run"

 jobone:
  docker:
   - image: buildpack-deps:stable
  steps:
   - run:
       name: Sample Job in WF 2
       command: |
         echo "This job is in workflowtwo and the workflow should run"

当我运行上面的代码时,输​​出不是预期的。第一个工作流不应运行,因为条件为假。当管道触发时,两个工作流都开始运行。谁能指出这里缺少的部分?

【问题讨论】:

【参考方案1】:

根据 CircleCI 文档,工作流(特别是)不接受 condition 键:

注意:在工作流级别使用逻辑语句时,不要 包括条件:键(条件键仅用于作业 级逻辑语句)。

见这里logic-statement-examples(滚动到本节底部查看注释)

【讨论】:

以上是关于我们如何有条件地运行 CircleCI 工作流程?的主要内容,如果未能解决你的问题,请参考以下文章

仅当同一仓库中的文件添加了新条目时,如何在 github 仓库中运行 CircleCI 作业?

CircleCI 2.0计划的工作流程未运行

如何只在 GitHub 主分支上运行 CircleCI?

CircleCI与Jenkins:选择正确的CI/CD工具

Circleci:如何根据 git release 进行部署(发布一个标签)

CircleCI:为啥有两个工作:构建和测试不是 DRY?