本页概述了构成 act 系统架构的主要构建块。Act 通过一套相互关联的组件模拟 GitHub Actions 环境,使开发人员能够在本地运行 GitHub Actions 工作流。
有关如何使用 act 的信息,请参阅概述。有关工作流执行方式的深入探讨,请参阅执行引擎。
下图展示了系统的主要组件及其关系
来源:README.md cmd/root.go pkg/runner/run_context.go pkg/runner/runner.go
此图说明了组件在工作流执行期间如何交互
来源:pkg/runner/runner.go107-207 pkg/runner/run_context.go654-683
运行器系统是工作流执行的主要协调器,负责协调执行计划和管理作业执行。
主要职责
Config 结构体包含工作目录、事件名称、秘密、环境变量、平台和容器设置等配置选项。
运行上下文保存作业执行所需的所有状态和配置,作为运行器与执行环境之间的桥梁。
RunContext 结构体(定义于pkg/runner/run_context.go31-56)维护重要的作业特定信息
它负责启动和停止容器、执行命令,并为步骤提供适当的执行环境。
来源:pkg/runner/run_context.go31-973
工作流规划器分析 GitHub Actions 工作流文件,并根据事件触发器和作业依赖关系创建执行计划。
主要职责
生成的 Plan 包含 Stages,后者根据作业的依赖关系将作业分组,以便并行或按顺序执行。
来源:cmd/root.go447-455 pkg/runner/runner.go108-206
作业执行器管理作业的执行,协调步骤并管理作业容器环境。
主要职责
作业执行器创建并执行步骤流水线,处理作业前设置、主作业执行和作业后清理。
来源:pkg/runner/run_context.go697-723
步骤执行器在作业中运行单个步骤,处理不同类型的步骤(运行命令或动作)及其执行生命周期。
主要职责
步骤可以是运行命令(在容器中执行的 shell 命令)或动作(从本地或远程源执行的 GitHub Actions)。
来源:pkg/runner/run_context.go697-723
容器系统为作业和步骤提供执行环境,管理 Docker 容器或主机环境。
容器系统支持两种主要的执行环境
Container 实现管理)HostEnvironment 实现管理)主要职责
RunContext 通过 JobContainer 字段使用这些容器系统,为步骤提供执行环境。
来源:pkg/runner/run_context.go178-245 pkg/runner/run_context.go654-683
下图展示了核心组件使用的模型对象的层级结构
此模型层级结构反映了 GitHub Actions 的工作流结构,使 Act 能够以与 GitHub 实现一致的方式解析和执行工作流。
来源:pkg/runner/run_context.go31-56 pkg/runner/runner.go23-64
Config 结构体(位于pkg/runner/runner.go22-64)为核心组件提供配置选项
| 配置选项 | 描述 |
|---|---|
| 执行者 | 触发事件的用户 |
| 工作目录 | 工作目录路径 |
| 事件名称 | 要运行的事件名称 |
| 事件路径 | 事件 JSON 文件路径 |
| 秘密 | 可供动作使用的秘密映射 |
| 环境变量 | 环境变量映射 |
| 平台 | 平台名称到 Docker 镜像的映射 |
| 绑定工作目录 | 是否将工作目录绑定到容器 |
| 容器架构 | 运行容器的架构 |
| 动作缓存目录 | 缓存动作内容的路径 |
| GitHub 实例 | 要使用的 GitHub 实例(支持 GitHub Enterprise) |