在本地调试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进行调试即可,图形界面非常好理解。

下面主要介绍一下命令行的使用方式。
在第一次运行的时候,Act可能会提示你选择模拟环境需要的镜像。
选择Large可以完整模拟Github托管的Runner的环境,但该镜像较大,需要75GB空间,如无必要选择默认的Medium即可。
act
支持基本的事件。也就是说,你可以通过模拟像push
pull_request
这样的事件,触发相应的工作流进行调试。例如,你的仓库有一个由pull_request
触发的测试工作流,那么你只要执行act pull_request
,即可进行测试。
还可以通过act -W '<path-to-workflow>'
指定单个工作流进行运行。
更多使用方法,请查看官方文档。