关于可重用工作流和复合操作
可重用工作流和复合操作是避免工作流内容重复的两种方式。
可重用工作流允许你重用整个工作流,包括其所有作业和步骤。 当你拥有要在多个存储库中使用的完整 CI/CD 过程时,此方式特别有用。 可以在一个位置集中维护可重用工作流,但可在整个组织的许多存储库中使用可重用工作流。
复合操作允许将多个步骤合并到单个操作中。 然后,可以在工作流中将此组步骤作为单个步骤运行。 如果你拥有一系列将在多个工作流中使用的步骤,此方式特别有用。 复合操作允许将较长的 YAML 工作流文件重构为较小的文件,并避免在工作流文件之间执行复制和粘贴操作。
可重用工作流和复合操作解决的问题是相似的,但两者之间存在一些重要差异。 大多数时候,使用哪种解决方案都是可以的。 但有些时候,你必须使用其中一种解决方案或另一种解决方案,如本文后面部分所述。
有关如何创建和使用可重用工作流和复合操作的详细信息,请参阅“重新使用工作流”和“创建组合操作”。
可重用工作流和复合操作的比较
- 工作流作业 - 复合操作包含一系列步骤,这些步骤在调用方工作流中作为单个步骤运行。 与可重用工作流不同,复合操作不能包含作业。
- 日志记录 - 当复合操作运行时,日志将仅显示运行复合操作的调用方工作流中的步骤,而不是复合操作中的单个步骤。 使用可重用工作流时,将单独记录每个作业和步骤。
- 指定运行器 - 可重用工作流包含一个或多个作业。 与所有工作流作业一样,可重用工作流中的作业指定运行作业的计算机的类型。 因此,如果步骤必须在为调用工作流作业选择的计算机类型上运行,则应使用可重用工作流,而不是复合操作。
- 将输出传递给步骤 - 复合操作在工作流作业中作为单个步骤运行,并且你可以在运行复合操作的步骤之前或之后执行多个步骤。 可重用工作流直接在作业中调用,而不是从作业步骤中调用。 在调用可重用工作流后,无法向作业添加步骤,因此不能使用
GITHUB_ENV
将值传递到调用方工作流中的后续作业步骤。
可重用工作流与复合操作之间的主要区别
可重用工作流 | 复合操作 |
---|---|
YAML 文件,与任何标准工作流文件非常相似 | 包含一组工作流步骤的操作 |
每个可重用工作流都是存储库的 .github/workflows 目录中的单个文件 | 每个复合操作都是单独的存储库或目录,包含 action.yml 文件及其他文件(可选) |
通过引用特定的 YAML 文件进行调用 | 通过引用在其中定义操作的存储库或目录进行调用 |
直接在作业中调用,而不是从步骤调用 | 作为作业中的步骤运行 |
可以包含多个作业 | 不包含作业 |
实时记录每个步骤 | 记录为一个步骤,即使包含多个步骤 |
最多可以连接到四个级别的工作流 | 一个工作流中最多可嵌套 10 项复合操作 |
可以使用机密 | 无法使用机密 |