仅在特定步骤失败时运行GitHub Actions步骤

8
我希望仅在先前的步骤失败且退出代码不为零时运行一个步骤。 我尝试了下面的代码,但它没有起作用。 我该如何做?
- name: JobA
  id: seedBuild
  run: |
        echo "::set-output name=exit_code::$(echo -n "$?")"

- name: JobB
  id: allJobs
  run: |
        echo "::set-output name=exit_code::$(echo -n "$?")"

- name: Debug Job Failure
  run: |
        echo "******** Job Logs from ********"
  if: "${{ steps.seedBuild.outputs.exit_code != 0 || steps.allJobs.outputs.exit_code != 0 }}"
1个回答

18

使用步骤的结果steps.<step_id>.outcome:

代码:

- name: JobA
  id: seedBuild
  run: |
        echo "failing on purpose"
        exit 1

- name: JobB
  id: allJobs
  run: |
        echo "::set-output name=exit_code::$(echo -n "$?")"

- name: Debug Job Failure
  run: |
        echo "******** Job Logs from ********"
  if: always() && (steps.seedBuild.outcome == 'failure' || steps.allJobs.outcome == 'failure')

6
如果你和我一样,对于为什么该条件包含 always() && 感到困惑,你可以在状态检查函数中找到解释:除非你调用其中一个函数,否则将应用默认的状态检查 success()。换句话说,GitHub会自动插入 success() &&,除非你调用 always()canceled()或者failure()其中之一。 - Benoit Blanchon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接