概述
工作流运行由一个或多个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_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
完成后始终运行,无论它们是否成功。有关更多信息,请参阅“在工作流和操作中评估表达式”。