本文档提供了 act 系统的核心架构技术概述。它描述了主要组件、它们的职责以及它们在工作流执行期间如何交互。有关 act 的用户导向介绍,请参阅Act 介绍。有关详细的实现指南,请参阅“核心组件”部分中的特定组件页面。
Act 由几个关键组件组成,它们协同工作以实现 GitHub Actions 工作流的本地执行。下图展示了主要组件及其关系
来源:cmd/root.go47-66 pkg/runner/runner.go16-65 pkg/runner/run_context.go31-56
下图展示了 Act 如何从最初的 CLI 命令到执行完成处理工作流
来源:cmd/root.go387-703 pkg/runner/runner.go107-221 pkg/runner/run_context.go655-664
CLI 是 Act 的主要入口点。它负责
.actrc 文件加载配置CLI 使用 Cobra 进行命令行解析,并提供了大量选项用于配置工作流执行。
来源:cmd/root.go47-132 cmd/input.go9-114
Runner 是核心编排组件,负责
RunContext 维护每个作业执行的状态和环境。它负责
来源:pkg/runner/run_context.go31-56 pkg/runner/run_context.go178-205 pkg/runner/run_context.go247-428
容器系统提供了对 Docker 的抽象,以实现以下功能:
Act 同时支持 Docker 容器和备用的主机环境来运行操作。
来源:pkg/runner/run_context.go127-176 pkg/runner/run_context.go246-428
步骤执行系统处理作业中单个步骤的执行。它支持不同类型的步骤:
来源:pkg/runner/runner_test.go231-327
下图展示了工作流文件、执行计划和运行时对象之间的关系
来源:pkg/runner/runner.go107-255 pkg/runner/run_context.go31-56 pkg/runner/run_context.go642-664
Act 广泛使用了执行器模式,它提供了一种可组合的方式来构建执行管道
这种模式使得复杂的工作流可以被建模为一系列可执行单元,这些单元可以组合、并行运行或有条件地执行。
来源:pkg/runner/runner.go107-221 pkg/runner/run_context.go430-435 pkg/runner/run_context.go553-619
Act 的架构旨在通过以下方式实现 GitHub Actions 工作流的本地执行:
模块化设计使 Act 能够支持复杂的 GitHub Actions 功能,例如矩阵作业、服务容器、复合操作等,所有这些都完全在本地开发机器上运行。