Update: The steps context https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#steps-context现在默认包含有关每个步骤执行的详细信息。使用outcome
每个步骤的属性我们可以检查其执行的结果。
name: CI
on: [pull_request]
jobs:
myjob:
runs-on: ubuntu-latest
steps:
- name: Step 1
id: hello
run: <any>
continue-on-error: true
- name: Step 2
id: world
run: <any>
continue-on-error: true
- name: Check on failures
if: steps.hello.outcome != 'success' || steps.world.outcome != 'success'
run: exit 1
原答案查看步骤上下文的文档,它看起来不包含除以下内容之外的有关该步骤的任何信息:outputs
。这些必须通过步骤明确定义。这就是步骤上下文为空的原因{}
.
https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions#steps-context https://help.github.com/en/articles/contexts-and-expression-syntax-for-github-actions#steps-context
不幸的是,据我所知,可以访问的步骤没有默认状态。该解决方案涉及手动定义每个步骤的状态输出变量。
name: CI
on: [pull_request]
jobs:
myjob:
runs-on: ubuntu-latest
steps:
- name: Step 1
id: hello
run: echo ::set-output name=status::failure
continue-on-error: true
- name: Step 2
id: world
run: echo ::set-output name=status::success
continue-on-error: true
- name: Dump steps context
env:
STEPS_CONTEXT: ${{ toJson(steps) }}
run: echo "$STEPS_CONTEXT"
- name: Check on failures
if: steps.hello.outputs.status == 'failure' || steps.world.outputs.status == 'failure'
run: exit 1
这将创建以下上下文输出并且作业失败。
{
"hello": {
"outputs": {
"status": "failure"
}
},
"world": {
"outputs": {
"status": "success"
}
}
}
https://help.github.com/en/articles/metadata-syntax-for-github-actions#outputs https://help.github.com/en/articles/metadata-syntax-for-github-actions#outputs
https://help.github.com/en/articles/development-tools-for-github-actions#set-an-output-parameter-set-output https://help.github.com/en/articles/development-tools-for-github-actions#set-an-output-parameter-set-output