概述
工作流运行由一个或多个 jobs
组成,默认情况下并行运行。 若要按顺序运行作业,可以使用 jobs.<job_id>.needs
关键字定义对其他作业的依赖关系。
每个作业在 runs-on
指定的运行器环境中运行。
在工作流程的使用限制之内可运行无限数量的作业。 有关详细信息,请参阅 “使用限制、计费和管理,了解 GitHub 托管的运行程序,以及参阅 “关于自托管运行程序”了解自托管运行程序使用限制。
如果需要查找在工作流运行中运行的作业的唯一标识符,可以使用 GitHub API。 有关详细信息,请参阅“操作”。
设置作业的 ID
使用 jobs.<job_id>
为作业提供唯一标识符。 键 job_id
是一个字符串,其值是作业配置数据的映射。 必须将 <job_id>
替换为对于 jobs
对象的唯一字符串。 <job_id>
必须以字母或 _
开头,并且只能包含字母数字字符、-
或 _
。
示例:创建作业
在此示例中,已创建两个作业,其 job_id
值为 my_first_job
和 my_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
等待 job1
和 job2
完成。
此示例中的作业按顺序运行:
job1
job2
job3
示例:不要求成功的依赖项作业
jobs:
job1:
job2:
needs: job1
job3:
if: ${{ always() }}
needs: [job1, job2]
在此示例中,job3
使用 always()
条件表达式,确保始终在 job1
和 job2
完成(无论是否成功)后运行。 有关详细信息,请参阅“表达式”。