跳至主要内容

在工作流中使用作业

使用工作流运行多个作业。

概述

工作流运行由一个或多个jobs组成,默认情况下这些作业并行运行。要按顺序运行作业,您可以使用jobs.<job_id>.needs关键字定义对其他作业的依赖关系。

每个作业都在由runs-on指定的运行器环境中运行。

只要您在工作流使用限制范围内,就可以运行无限数量的作业。有关更多信息,请参阅“使用限制、计费和管理”以了解 GitHub 托管运行器,以及“关于自托管运行器”以了解自托管运行器的使用限制。

如果您需要查找工作流运行中正在运行的作业的唯一标识符,可以使用 GitHub API。有关更多信息,请参阅“GitHub Actions 的 REST API 端点”。

设置作业的 ID

使用jobs.<job_id>为您的作业提供唯一的标识符。键job_id是一个字符串,其值是作业配置数据的映射。您必须将<job_id>替换为jobs对象中唯一的字符串。<job_id>必须以字母或_开头,并且只能包含字母数字字符、-_

示例:创建作业

在此示例中,创建了两个作业,其job_id值分别为my_first_jobmy_second_job

jobs:
  my_first_job:
    name: My first job
  my_second_job:
    name: My second job

设置作业的名称

使用jobs.<job_id>.name为作业设置名称,该名称显示在 GitHub UI 中。

定义先决条件作业

使用jobs.<job_id>.needs标识在该作业运行之前必须成功完成的任何作业。它可以是字符串或字符串数组。如果作业失败或被跳过,则所有需要它的作业都会被跳过,除非作业使用导致作业继续的条件表达式。如果运行包含一系列相互需要的作业,则从失败或跳过点开始,失败或跳过将应用于依赖关系链中的所有作业。如果您希望作业即使其依赖的作业未成功也运行,请在jobs.<job_id>.if中使用always()条件表达式。

示例:要求成功依赖作业

jobs:
  job1:
  job2:
    needs: job1
  job3:
    needs: [job1, job2]

在此示例中,job1必须成功完成才能开始job2,并且job3等待job1job2都完成。

此示例中的作业按顺序运行

  1. job1
  2. job2
  3. job3

示例:不需要成功的依赖作业

jobs:
  job1:
  job2:
    needs: job1
  job3:
    if: ${{ always() }}
    needs: [job1, job2]

在此示例中,job3 使用 always() 条件表达式,以便在 job1job2 完成后始终运行,无论它们是否成功。有关更多信息,请参阅“在工作流和操作中评估表达式”。