act:在本地跑 GitHub Actions,不用每次 push 了

最近关注到一个开源项目,在 GitHub 上拿了 7 万多 Star,做的事很简单:让你在本地跑 GitHub Actions。

它叫 act。改了 workflow 文件,不用 commit、push 到远端等 CI 跑完才能看结果,直接本地执行一遍就行。

正文顶部截图

它干了什么

用过 GitHub Actions 的人都清楚,workflow 写好之后得 push 到仓库才能触发 CI。改一行配置就 push 一次,等一两分钟看结果,来回几次确实烦。

act 把这个过程搬到本地。它读取项目里的 .github/workflows/ 文件,根据依赖关系自动决定执行顺序,然后用 Docker 跑每个 step 的容器。环境变量和文件系统都模拟 GitHub 的运行环境,本地跑出来的结果和远端 CI 基本一致。

两个核心场景

快速验证 workflow

改了 CI 配置,跑一下 act,几秒钟就能知道有没有问题。不用等 CI 排队,不用等远端构建,本地就能确认语法和逻辑对不对。

替代 Makefile

如果 Makefile 里写的都是一些固定流程(装依赖、跑测试、打包),完全可以写成 GitHub Actions workflow,用 act 在本地跑。workflow 本身跨平台,比 Makefile 容易维护。

实际用起来怎么样

act 底层通过 Docker 拉取镜像来模拟运行环境。第一次跑会下载镜像,之后就是秒启动。镜像大小根据 workflow 里用的 action 不同而不同,actions/checkoutactions/setup-node 这些官方 action 的镜像都不大。

配置方面,act 会自动检测项目里的 workflow 文件,解析触发条件,然后问你要模拟哪个事件(push、pull_request 之类的)。选完就跑,输出格式和 GitHub Actions 页面上的日志基本一样。

我跑了一下,整体体验挺顺畅。从触发到跑完,本地基本秒出结果,比等远端 CI 快得多。

README区域截图

几点实际建议

需要本机装了 Docker,act 靠 Docker API 拉镜像跑容器。Windows 用户建议用 WSL2,Mac 用户装 Docker Desktop 就行。

部分第三方 action 可能在本地跑不通,因为它们依赖 GitHub 的某些特有环境变量或 API。官方 action 基本没问题。

VS Code 有个配套扩展叫 GitHub Local Actions,可以直接在编辑器里触发 act,不用切终端。

最后

7 万多 Star 说明这个需求是真实存在的。act 解决的问题很直接:每次改 CI 配置都要 push 到远端才能验证。搬到本地之后,CI 调试效率提升明显。做 CI/CD 相关工作的,可以花十分钟试一下。

证。搬到本地之后,CI 调试效率提升明显。做 CI/CD 相关工作的,可以花十分钟试一下。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐