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

Jam*_*mes 9 github-actions

我\xe2\x80\x99d 喜欢仅在之前的特定步骤失败且退出代码不同于零的情况下才运行步骤。\n我\xe2\x80\x99d 尝试了下面的代码,但它不起作用。\n我该怎么做?

\n
- name: JobA\n  id: seedBuild\n  run: |\n        echo "::set-output name=exit_code::$(echo -n "$?")"\n\n- name: JobB\n  id: allJobs\n  run: |\n        echo "::set-output name=exit_code::$(echo -n "$?")"\n\n- name: Debug Job Failure\n  run: |\n        echo "******** Job Logs from ********"\n  if: "${{ steps.seedBuild.outputs.exit_code != 0 || steps.allJobs.outputs.exit_code != 0 }}"\n
Run Code Online (Sandbox Code Playgroud)\n

riQ*_*iQQ 19

使用该步骤的结果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')
Run Code Online (Sandbox Code Playgroud)

  • 如果你像我一样想知道为什么条件包含 `always() &amp;&amp;`,你可以在[状态检查函数](https://docs.github.com/en/actions/learn-github-actions/表达式#status-check-functions): *除非您包含这些函数之一,否则将应用 success() 的默认状态检查。*。换句话说,除非您调用 `always()`、`canceled()` 或 `failure()`,否则 GitHub 会插入 `success() &amp;&amp;`。 (7认同)