从此告别 github actions 调试难题
act 可以本地运行你的 github actions 脚本,让你快速得到更改后的执行结果反馈。其原理和执行步骤是:
1. 读取工作流文件
首先它会扫描你项目中的 .github/workflows/ 目录并读取这个目录下的所有 YAML 配置文件。
2. 解析依赖并确定执行路径
act 会分析这些工作流文件,理解各个任务之间的依赖关系。例如,如果一个任务依赖于另一个任务的成功完成,act 会确保它们按照正确的顺序执行。
3. 利用 Docker 创建模拟环境
拉取或构建镜像: 你的工作流文件中通常会指定运行环境,比如 runs-on: ubuntu-latest。act 会根据这些定义,使用 Docker API 来拉取或构建一个与 GitHub Actions 官方运行器环境非常相似的 Docker 镜像。
创建容器: 对于工作流中的每一个步骤,act 都会使用之前准备好的 Docker 镜像来启动一个独立的 Docker 容器。
4. 在容器中执行操作
act 会在这些启动的容器中执行你在工作流文件中定义的命令和脚本。
5. 配置环境变量和文件系统,为了让本地环境尽可能地接近真实的 GitHub Actions 环境,act 会在容器内进行精细的配置:
环境变量: 它会设置与 GitHub Actions 相同的默认环境变量(例如 GITHUB_TOKEN, GITHUB_SHA 等)。如果你的工作流需要使用密钥(Secrets),你也可以通过 act 的命令参数将它们安全地提供给本地的运行环境。
文件系统: act 会模拟 GitHub Actions 的文件系统结构,确保你的代码和相关文件在容器中的路径是正确的。
简而言之,act 让你可以在本地修改工作流文件后立即运行测试看到结果,而不用经历 “提交代码 -> 推送到 GitHub -> 等待云端运行 -> 查看日志” 这样一个漫长的循环,这极大地提高了开发和调试 CI/CD 流程的效率。
传送门:github.com/nektos/act
#运维 #开源 #开源神器 #学习日常 #github #效率 #软件