AX 爱鲜报

act

act 是一个用 Go 编写的命令行工具,可在本地运行 GitHub Actions 工作流。它读取 .github/workflows/ 配置,借助 Docker 构建并运行容器,环境变量与文件系统尽量对齐 GitHub 托管 Runner,从而免去反复提交推送来验证 CI 的麻烦。

爱鲜报评分

0.0

0 人评分

72k

星数

否

中文

Go

主语言

是

活跃

216

贡献者

人工分析

EDITORIAL

推荐理由

act 让 CI 调试从「提交—等待—看日志」变成「本地秒级反馈」,对频繁修改 workflow 的团队收益明显。它还能把 GitHub Actions 当作本地任务运行器,替代部分 Makefile 场景。项目星数超过 7 万、社区活跃,MIT 协议可放心用于商业环境。

适用场景

  • 本地调试与验证 .github/workflows 中的 CI 配置
  • 在推送前预跑 GitHub Actions,减少无效提交
  • 用 GitHub Actions 语法替代 Makefile 做本地任务编排
  • 离线或内网环境下复现 CI 流程
  • 为开源项目贡献者提供低成本的 workflow 测试方式

优点

  • 本地即可获得快速反馈,显著缩短 CI 调试周期
  • 环境变量与文件系统尽量对齐 GitHub 托管 Runner,行为接近真实环境
  • 基于 Docker 运行,隔离性好且镜像可复用
  • 支持用 GitHub Actions 充当本地任务运行器,减少重复脚本
  • 社区活跃、文档完善,提供 VS Code 扩展集成

缺点

  • 依赖 Docker,未安装或权限受限时无法使用
  • 与 GitHub 真实 Runner 仍存在差异,部分 Action 或密钥相关能力无法完全模拟
  • 首次拉取镜像体积较大,冷启动较慢
  • 复杂矩阵构建与缓存行为可能与线上不完全一致
上手难度 进阶

act:在本地跑通 GitHub Actions

act 是一个用 Go 编写的命令行工具,目标是让你在本地执行 .github/workflows/ 中定义的 GitHub Actions 工作流。它的口号是「Think globally, act locally」——把 CI 从云端搬到本机。

为什么需要它

修改 workflow 文件时,通常只能提交并推送后等待 GitHub 返回结果,反馈周期长。act 提供两个核心价值:

  • 快速反馈:在本地直接运行 workflow,环境变量与文件系统尽量对齐 GitHub 托管 Runner。
  • 本地任务运行器:把 GitHub Actions 当作 Makefile 的替代品,复用已有 workflow 完成本地任务编排。

工作原理

  1. 读取 .github/workflows/ 下的工作流定义;
  2. 解析需要执行的 action 及其依赖关系,确定执行顺序;
  3. 通过 Docker API 拉取或构建所需镜像;
  4. 为每个 action 启动容器执行,并注入与 GitHub 一致的环境变量。

因此 Docker 是必需的前置条件。

使用方式概览

安装后,在仓库根目录直接运行即可触发默认事件:

# 运行默认工作流
act

# 指定触发事件
act push

# 列出可用工作流
act -l

具体参数与配置项请参考官方用户指南(nektosact.com)。

从源码构建

项目使用 Go 开发,仓库提供 Makefile:

make test       # 需要 Docker 的单元测试
make test-fast  # 不依赖 Docker 的快速测试
make install    # 构建并安装

生态与扩展

社区提供了 VS Code 扩展「GitHub Local Actions」,可在编辑器内直接调用 act 运行和测试工作流,无需切换终端。

适用建议

act 适合需要频繁调整 CI 配置的开发者与团队,也适合把 GitHub Actions 用作本地自动化脚本的场景。需要注意它与真实 Runner 仍有差异,涉及密钥、缓存或特殊系统能力的步骤建议以线上结果为准。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。