菜单

运行上下文

相关源文件

运行上下文是 Act 执行引擎的核心组件,为运行 GitHub Actions 工作流提供环境和状态管理。它作为中心枢纽,协调工作流执行、管理容器、评估表达式,并维护作业和步骤的执行状态。

有关整体运行器系统的信息,请参阅 运行器系统。有关作业执行的详细信息,请参阅 作业执行

目的和职责

运行上下文负责

  1. 维护作业执行状态
  2. 管理环境变量
  3. 处理容器生命周期(作业容器和服务容器)
  4. 为 Actions 提供 GitHub 上下文
  5. 评估表达式
  6. 跟踪步骤结果

RunContext 结构

RunContext 结构体包含执行工作流作业所需的所有信息

来源:pkg/runner/run_context.go31-56

生命周期

创建和初始化

运行上下文由 Runner 创建,并使用特定作业的配置进行初始化。它包括

  1. 作业配置和矩阵值
  2. 事件负载(JSON 格式)
  3. 环境变量
  4. 表达式评估器

容器管理

RunContext 的主要职责之一是管理作业运行的容器

来源:pkg/runner/run_context.go654-683 pkg/runner/run_context.go246-429 pkg/runner/run_context.go543-551

RunContext 根据配置决定是使用 Docker 容器还是主机环境进行执行

来源:pkg/runner/run_context.go666-670

执行器创建

RunContext 为作业类型创建相应的执行器

来源:pkg/runner/run_context.go698-723

环境管理

RunContext 通过合并来自多个来源的环境变量来管理作业执行的环境变量。

环境变量来源

  1. 工作流级环境变量
  2. 作业级环境变量
  3. 配置环境变量
  4. GitHub 特有环境变量
  5. 步骤生成环境变量

来源:pkg/runner/run_context.go78-90 pkg/runner/run_context.go818-826

GitHub 环境

RunContext 还会创建 GitHub 特定的环境变量

来源:pkg/runner/run_context.go1018-1066

GitHub 上下文

RunContext 提供了一个 GitHub 上下文,其中包含有关工作流、作业、事件和仓库的信息

来源:pkg/runner/run_context.go872-973

容器设置与管理

RunContext 管理作业容器和服务容器

作业容器设置

RunContext 处理

  1. 容器网络配置
  2. 卷和绑定挂载
  3. 容器环境变量
  4. 容器凭据

来源:pkg/runner/run_context.go247-429

服务容器

RunContext 还管理工作流中定义的服务容器

来源:pkg/runner/run_context.go286-344

作业执行

RunContext 提供了一个在作业容器中执行命令的方法

来源:pkg/runner/run_context.go431-435

步骤结果跟踪

RunContext 维护一个步骤结果映射,以跟踪每个步骤的结果和结论

来源:pkg/runner/run_context.go851-866 pkg/runner/run_context.go868-870

与其他组件集成

RunContext 与 Act 系统中的其他几个组件集成

来源:pkg/runner/run_context.go31-56

主机环境支持

除了基于容器的执行,RunContext 还支持直接在主机系统上执行工作流

来源:pkg/runner/run_context.go178-245

总结

RunContext 是 Act 执行引擎中的一个核心组件,它

  1. 管理作业和服务的容器生命周期
  2. 提供执行上下文,包括 GitHub 变量和表达式
  3. 跟踪步骤结果和作业状态
  4. 处理环境变量管理和传播
  5. 协调作业执行器和底层容器系统之间的操作

其设计使 Act 能够提供一个与 GitHub Actions 云执行环境高度相似的本地环境。