1

我一直在尝试在 Github 操作中构建 CICD 管道,但我们无法同时处理 if 和 or 条件。下面是我们的代码片段示例,

    name: Build Non prod
    needs: [rules]    
    if: ${{ (needs.rules.outputs.branch_name != 'production') || (needs.rules.outputs.branch_name != 'staging') }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

所以这个任务不应该在分支中运行productionstaging但是当动作在staging分支中运行时,这个作业也会与其他不适用于staging环境的作业一起被触发。

我们有什么办法可以拥有ifor条件?

更新:

该条件将不起作用,以下更新的条件将起作用。

if: ${{ (needs.rules.outputs.branch_name != 'production') && (needs.rules.outputs.branch_name != 'staging') }}
4

1 回答 1

0

您的状况应如下所示:

   name: Build Non prod
    needs: [rules]    
    if: ${{ (needs.rules.outputs.branch_name != 'production') && (needs.rules.outputs.branch_name != 'staging') }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2

但是,如果您发现它不起作用,则可能与此问题有关 -如果跳过“需要”属性中的作业,则无法正确评估作业级别的“如果”条件

于 2021-07-09T13:28:16.740 回答