Runner System 是 Act 的核心编排引擎,用于在本地执行 GitHub Actions 工作流。它将工作流定义转换为可执行计划,并管理作业和步骤的实际执行。本文档重点介绍 Runner 的架构、执行流程和容器管理。有关工作流模型本身的信息,请参阅 工作流模型,有关步骤执行的信息,请参阅 步骤执行。
Runner 接口是 Runner System 的核心,它提供了执行工作流计划的主要抽象。
主要的实现 runnerImpl,负责创建可以运行工作流计划的执行器。
来源: pkg/runner/runner.go1-256 cmd/root.go663-702
Runner 在初始化时会传入一个包含所有必要配置选项的 Config 结构体。
来源: pkg/runner/runner.go22-64 cmd/root.go597-637
Runner System 遵循分层执行模型。
来源: pkg/runner/runner.go107-208 cmd/root.go697-702
Plan Executor 按顺序处理每个阶段。在每个阶段中,作业会并行执行,最多可达 CPU 核心数量的限制。
来源: pkg/runner/runner.go107-208 cmd/root.go697-702
RunContext 是作业运行的中心执行上下文。它包含运行作业所需的所有信息和功能。
来源: pkg/runner/run_context.go31-56 pkg/runner/run_context.go698-723
Runner System 支持两种执行环境:
容器环境根据作业的 runs-on 平台配置来确定。
来源: pkg/runner/run_context.go655-664 pkg/runner/run_context.go666-670
对于在 Docker 容器中运行的作业,设置过程包括:
来源: pkg/runner/run_context.go247-429
Runner System 支持 GitHub Actions 工作流中定义的服务容器。
来源: pkg/runner/run_context.go553-618 pkg/runner/run_context.go283-343 pkg/runner/run_context.go353-371
Runner System 支持 GitHub Actions 工作流中定义的矩阵策略。
来源: pkg/runner/runner.go158-163 pkg/runner/runner.go176-196 pkg/runner/runner.go223-240
Runner System 由 Act CLI 命令初始化和调用。流程如下:
Runner System 在多个级别管理环境变量。
来源: pkg/runner/run_context.go78-90 pkg/runner/run_context.go872-973 pkg/runner/run_context.go1018-1066
Runner System 实现了适当的清理和错误处理。
来源: pkg/runner/run_context.go346-376 pkg/runner/run_context.go611-618 pkg/runner/run_context.go543-551
Runner System 有几个关键的实现细节需要了解:
来源: pkg/runner/run_context.go827-849 pkg/runner/run_context.go97-106 pkg/runner/run_context.go127-175 pkg/runner/run_context.go1087-1117 pkg/runner/runner.go223-240
Runner系统集成了Act的多个其他组件
这些集成确保Runner系统能够本地执行GitHub Actions工作流,使其在很大程度上模拟GitHub Actions的执行环境。
来源: pkg/runner/run_context.go44 pkg/runner/run_context.go179-182 pkg/runner/run_context.go624-639 cmd/root.go669-696