# 在作业之间传递信息

可以定义输出以将信息从一个作业传递到另一个作业。

## 定义和使用作业输出

1. 打开包含要获取输出的作业的工作流文件。

2. 使用 `jobs.<job_id>.outputs` 语法定义作业的输出。 例如，以下作业定义了 `output1` 和 `output2` 输出，这些输出分别对应 `step1` 和 `step2` 的结果：

   ```yaml
   jobs:
     job1:
       runs-on: ubuntu-latest
       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"
   ```

3. 在你想要访问这些输出的单独作业中，使用 `jobs.<job_id>.needs` 语法可使其依赖于原始作业。 例如，以下作业检查 `job1` 是否在运行前已完成：

   ```yaml
   jobs:
     # Assume job1 is defined as above
     job2:
       runs-on: ubuntu-latest
       needs: job1
   ```

4. 若要访问依赖作业中的输出，请使用 `needs.<job_id>.outputs.<output_name>` 语法。 例如，以下作业访问在 `output1` 中定义的 `output2` 和 `job1` 输出：

   ```yaml
   jobs:
     # Assume job1 is defined as above
     job2:
       runs-on: ubuntu-latest
       needs: job1
       steps:
         - env:
             OUTPUT1: ${{needs.job1.outputs.output1}}
             OUTPUT2: ${{needs.job1.outputs.output2}}
           run: echo "$OUTPUT1 $OUTPUT2"
   ```

## 后续步骤

若要详细了解作业输出和 `needs` 上下文，请参阅 [GitHub Actions 的工作流语法](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idoutputs) 的以下部分：

* [`jobs.<job_id>.outputs`](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idoutputs)
* [`jobs.<job_id>.needs`](/zh/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idneeds)

若要详细了解如何将作业输出从一个工作流传递到另一个工作流，请参阅 [重用工作流](/zh/actions/how-tos/reuse-automations/reuse-workflows) 的以下部分：

* [使用可重用工作流的输出](/zh/actions/how-tos/reuse-automations/reuse-workflows#using-outputs-from-a-reusable-workflow)