如何在 Github 操作中使工作失败?
How to fail a job in Github Actions?
我正在开发 Github 动作工作流程。此工作流在 Linux、Mac 和 Windows.
上运行
作为工作流程的一部分,我必须检查 2 个环境变量是否相等。如果他们不这样做 - 工作失败。
如所述here,Github 动作支持if:
条件:
steps:
- run: # How can I make a cross-platform failure here?
if: ${{ envA }} != ${{ envB }}
如果上述条件为真,如何使作业失败?
一开始我想到了一个脚本,但是一定有更优雅的方法让作业失败。
我愿意 run: exit 1
。在所有三个平台上,这将简单地以退出代码 1 退出。
证明它是跨平台的:https://github.com/rmunn/Testing/runs/220188838 它运行以下工作流程:
name: Test exiting on failure
on: [push]
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v1
- name: Try to fail
run: exit 1
- name: Print message if we don't fail
run: echo Should not get here
(此答案的早期版本推荐使用“/bin/false”,但这仅适用于 Linux 和 macOS)。
2021 年,也许有更优雅的方式来做到这一点:
- name: A/B Check
if: ${{ envA }} != ${{ envB }}
uses: actions/github-script@v3
with:
script: |
core.setFailed('envA and envB are not equivalent!')
在这里,我们使用 github-script 操作来提供一个会使作业失败的单行脚本。如果 if
行中的条件为真,“A/B 检查”步骤将仅 运行,因此在这种情况下脚本将仅 运行,这正是我们想要的.
这种方法的好处在于,您将在存储库的操作 UI 中获得格式良好的输出,显示“A/B 检查”步骤导致失败,以及原因 (即“envA 和 envB 不等价”)。
请注意,如果您在此之后的作业中有其他步骤,并且您不希望它们 运行 如果 A/B 检查失败,您将需要使用 if: success()
以防止他们在这种情况下 运行ning。
我正在开发 Github 动作工作流程。此工作流在 Linux、Mac 和 Windows.
上运行作为工作流程的一部分,我必须检查 2 个环境变量是否相等。如果他们不这样做 - 工作失败。
如所述here,Github 动作支持if:
条件:
steps:
- run: # How can I make a cross-platform failure here?
if: ${{ envA }} != ${{ envB }}
如果上述条件为真,如何使作业失败? 一开始我想到了一个脚本,但是一定有更优雅的方法让作业失败。
我愿意 run: exit 1
。在所有三个平台上,这将简单地以退出代码 1 退出。
证明它是跨平台的:https://github.com/rmunn/Testing/runs/220188838 它运行以下工作流程:
name: Test exiting on failure
on: [push]
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macOS-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v1
- name: Try to fail
run: exit 1
- name: Print message if we don't fail
run: echo Should not get here
(此答案的早期版本推荐使用“/bin/false”,但这仅适用于 Linux 和 macOS)。
2021 年,也许有更优雅的方式来做到这一点:
- name: A/B Check
if: ${{ envA }} != ${{ envB }}
uses: actions/github-script@v3
with:
script: |
core.setFailed('envA and envB are not equivalent!')
在这里,我们使用 github-script 操作来提供一个会使作业失败的单行脚本。如果 if
行中的条件为真,“A/B 检查”步骤将仅 运行,因此在这种情况下脚本将仅 运行,这正是我们想要的.
这种方法的好处在于,您将在存储库的操作 UI 中获得格式良好的输出,显示“A/B 检查”步骤导致失败,以及原因 (即“envA 和 envB 不等价”)。
请注意,如果您在此之后的作业中有其他步骤,并且您不希望它们 运行 如果 A/B 检查失败,您将需要使用 if: success()
以防止他们在这种情况下 运行ning。