Act 是一个命令行工具,使开发者能够在本地运行 GitHub Actions 工作流。本文档概述了 Act、其目的、核心功能以及它如何融入 GitHub Actions 生态系统。要更详细地了解 Act 的架构,请参阅架构概述。
Act 解决了开发者在使用 GitHub Actions 时面临的两个主要挑战:
快速反馈周期:Act 允许开发者在本地测试工作流,而不是通过提交和推送更改来触发 GitHub Actions 工作流,从而显著加快了开发过程。
本地任务运行器:Act 可以作为一个本地任务运行器,让您能够利用现有的 GitHub Actions 工作流来替代传统的构建工具,如 Make。
该工具的座右铭“Think globally, act locally”(全局思考,本地行动)概括了其目的——使开发者无需离开本地环境即可构建和测试 GitHub Actions 工作流。
来源: README.md5-10
Act 的核心是读取您的 GitHub Actions 工作流文件(.github/workflows/),并使用模拟 GitHub Actions 运行时环境的 Docker 容器执行它们。
当您运行 Act 时:
来源: README.md16-18 cmd/root.go387-704
Act 由几个核心组件组成,它们协同工作以在本地执行工作流:
CLI 接口:用户入口点,通过 .actrc 等文件处理命令行参数和配置
运行器系统:协调工作流的执行并管理执行上下文
工作流规划器:解析工作流文件并创建执行计划
运行上下文:提供作业执行的上下文,包括环境变量、秘密和 GitHub 上下文
Docker 集成:处理运行操作的容器操作
来源: cmd/root.go46-132 pkg/runner/runner.go16-255
Act 提供了丰富的配置选项以自定义其行为:
push、pull_request)配置可以通过命令行标志、环境变量或配置文件(.actrc)指定。
来源: cmd/root.go68-130 cmd/input.go9-65
Act 的基本用法很简单——在包含 GitHub Actions 工作流的仓库中运行 act 命令,将在本地执行这些工作流。默认情况下,如果未指定事件,Act 将模拟 push 事件。
对于更具体的用例:
act pull_requestact -j buildact -s SECRET_NAME=valueact -lAct 严重依赖 Docker 来创建类似于 GitHub 运行器的环境。它提供了以下选项:
Docker 镜像的选择基于工作流文件中的 runs-on 参数,Act 为常见平台提供了默认镜像。
来源: cmd/root.go76-96 pkg/runner/runner.go36-63
Act 通过以下方式为 GitHub Actions 提供了强大的本地开发环境:
该工具通过缩短反馈循环并允许开发者立即在其本地机器上测试更改,显著改善了 GitHub Actions 的开发体验。