概述
您可以使用jobs.<job_id>.outputs
为作业创建map
输出。作业输出可用于依赖此作业的所有下游作业。有关定义作业依赖项的更多信息,请参阅jobs.<job_id>.needs
。
输出是 Unicode 字符串,最大可达 1 MB。工作流运行中所有输出的总和最大可达 50 MB。
包含表达式的作业输出在每个作业结束时在运行器上进行评估。包含密钥的输出在运行器上会被屏蔽,不会发送到 GitHub Actions。
如果输出由于可能包含密钥而被跳过,您将看到以下警告消息:“跳过输出{output.Key}
,因为它可能包含密钥。”有关如何处理密钥的更多信息,请参阅示例:屏蔽并在作业或工作流之间传递密钥。
要在依赖作业中使用作业输出,您可以使用needs
上下文。有关更多信息,请参阅“访问有关工作流运行的上下文信息”。
示例:为作业定义输出
jobs:
job1:
runs-on: ubuntu-latest
# Map a step output to a job output
outputs:
output1: ${{ steps.step1.outputs.test }}
output2: ${{ steps.step2.outputs.test }}
steps:
- id: step1
run: echo "test=hello" >> "$GITHUB_OUTPUT"
- id: step2
run: echo "test=world" >> "$GITHUB_OUTPUT"
job2:
runs-on: ubuntu-latest
needs: job1
steps:
- env:
OUTPUT1: ${{needs.job1.outputs.output1}}
OUTPUT2: ${{needs.job1.outputs.output2}}
run: echo "$OUTPUT1 $OUTPUT2"
在矩阵作业中使用作业输出
矩阵可用于生成多个不同名称的输出。使用矩阵时,作业输出将从矩阵内的所有作业中组合。
jobs:
job1:
runs-on: ubuntu-latest
outputs:
output_1: ${{ steps.gen_output.outputs.output_1 }}
output_2: ${{ steps.gen_output.outputs.output_2 }}
output_3: ${{ steps.gen_output.outputs.output_3 }}
strategy:
matrix:
version: [1, 2, 3]
steps:
- name: Generate output
id: gen_output
run: |
version="${{ matrix.version }}"
echo "output_${version}=${version}" >> "$GITHUB_OUTPUT"
job2:
runs-on: ubuntu-latest
needs: [job1]
steps:
# Will show
# {
# "output_1": "1",
# "output_2": "2",
# "output_3": "3"
# }
- run: echo '${{ toJSON(needs.job1.outputs) }}'
Actions 不保证矩阵作业的运行顺序。确保输出名称唯一,否则,最后运行的矩阵作业将覆盖输出值。