在本地调试Github Actions

前言

我们在开发GitHub Action的CI时,经常遇到需要进行调试的情况,毕竟如果是从零开始写一个workflow,难免会遇到一些意料之外的问题。

本教程主要使用act,实现在本地运行Github Actions的目的。Act是一个开源的工具,它可以解析项目中的.github/workflows/ ,并利用Docker API拉取或者构建必要的镜像,根据执行顺序完成任务。环境变量和文件系统均配置为与 GitHub 提供的环境一致。

环境配置

博主使用的环境是Windows。若你使用的系统不同,请参考Installation - act - User Guide | Manual | Docs | Documentation 完成环境配置。

大致来说,Windows 和 MacOS 系统需要配置Docker Desktop,Linux需要安装Docker Engine。除docker之外,还需要安装act

对于Act来说,如果使用Windows,可以直接通过scoop install act 的方式来安装,也可使用winget。具体可用的包管理器,也可参照Installation - act - User Guide | Manual | Docs | Documentation

如果你使用VSCode进行开发,VSCode还有一个名叫GitHub Local Actions的插件,可以方便的利用图形界面进行调试。

基本使用

如果使用VSCode,使用Github Local Actions进行调试即可,图形界面非常好理解。

Pasted image 20250610193116

下面主要介绍一下命令行的使用方式。

在第一次运行的时候,Act可能会提示你选择模拟环境需要的镜像。

Pasted image 20250610193137

选择Large可以完整模拟Github托管的Runner的环境,但该镜像较大,需要75GB空间,如无必要选择默认的Medium即可。

act支持基本的事件。也就是说,你可以通过模拟像push pull_request 这样的事件,触发相应的工作流进行调试。例如,你的仓库有一个由pull_request 触发的测试工作流,那么你只要执行act pull_request ,即可进行测试。

还可以通过act -W '<path-to-workflow>' 指定单个工作流进行运行。

更多使用方法,请查看官方文档