本文详细介绍了 act 框架中的步骤执行子系统,重点关注单个工作流步骤如何被处理、评估和执行。它涵盖了步骤生命周期、执行流程、条件评估以及与 GitHub 上下文的集成。
有关操作如何在步骤中执行的信息,请参阅操作执行。有关整个作业执行过程的详细信息,请参阅作业执行。
act 中的步骤执行系统遵循 GitHub Actions 步骤模型,包含三个不同的阶段,确保每个工作流步骤的正确设置、执行和清理。
来源:pkg/runner/step.go18-28 pkg/runner/step.go30-36
步骤执行系统的核心是 step 接口,它定义了每个执行阶段和上下文访问所需的方法。
接口方法具有以下用途:
pre、main、post):返回每个阶段的执行器。步骤执行过程遵循特定的流程,处理条件、环境设置、执行和结果处理。
步骤结果追踪:每个步骤都会生成一个包含结果和结论状态的结果。
| 字段 | 描述 |
|---|---|
| 结果(Outcome) | 步骤执行的直接结果(成功/失败/跳过) |
| 结论 | 应用持续规则后的最终结论(成功/失败/跳过) |
| 输出 | 步骤产生的输出变量映射 |
Runner 命令文件:步骤执行准备特殊文件,步骤可以使用这些文件来:
GITHUB_OUTPUT)GITHUB_ENV)GITHUB_PATH)GITHUB_STATE)GITHUB_STEP_SUMMARY)超时处理:步骤可以指定超时时间,在此时间后执行将被取消。
来源:pkg/runner/step.go114-144 pkg/runner/step.go220-228
步骤执行由决定步骤是否运行的条件控制。
在执行步骤之前评估 if 条件。
当步骤失败时,continue-on-error 属性决定工作流是否应该继续。
来源:pkg/runner/step.go299-314 pkg/runner/step.go157-176
步骤执行涉及对环境变量的细致管理。
环境变量层级(从低到高优先级):
INPUT_* 变量)来源:pkg/runner/step.go230-255 pkg/runner/step.go257-280
步骤可以访问 GitHub 上下文,该上下文提供了有关工作流、事件、存储库和当前执行状态的信息。
GitHub 上下文根据以下内容填充:
来源:pkg/model/github_context.go12-43 pkg/runner/step.go269
步骤执行包括处理作业取消的机制。
这允许步骤根据其 if 条件在作业取消时做出不同的响应。
步骤执行后,会处理多个命令文件以更新执行环境。
这些文件允许步骤与工作流 runner 进行通信并影响执行环境。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(9f211c)