GitHub Actions 为CI/CD工作流提供了一个高度可定制和可扩展的平台。它允许我们使用YAML语法文件定义工作流,在其中指定触发我们的操作的事件和要执行的步骤。操作可以用于执行广泛的任务,例如运行测试、打包构建、部署应用等。

对于复杂的工作流在推送到仓库之前,我们需要在本地测试该工作流,本地测试 GitHub Actions 可以使我们能够更有效地迭代和调试工作流,确保它们在部署前按预期工作,要在本地测试 GitHub Actions,我们可以使用GitHub提供的GitHub Action Toolkit。 该工具包可以模拟在GitHub上运行Actions的环境,使我们能够在本地执行和验证我们的工作流。

本地运行GitHub Actions的好处

  • 更快的迭代:本地测试Actions使得在开发过程中更快的迭代。我们可以在本地快速测试和验证我们的工作流,而不是将更改推送到存储库并等待工作流在GitHub上运行。
  • 调试:本地测试使我们能够轻松地调试Actions。我们可以逐步执行代码、检查变量和跟踪执行流程,这在对复杂的工作流进行故障排除时特别有用。
  • 成本节约:GitHub Actions对资源密集型工作流有使用限制和连带费用。通过在本地测试操作,我们可以减少在GitHub上运行的不必要的工作流数量,优化我们的资源使用,并潜在地节省成本,尤其是在开发和调试阶段。
  • 离线可用:即使没有接入互联网,本地测试也允许我们处理工作流程。这在互联网接入受限或不可靠的情况下尤其有用。我们可以在不受任何干扰的情况下继续开发和测试我们的工作流程。
  • 集成测试:本地测试提供了一个测试环境,我们可以在其中测试不同操作或工作流的集成。我们可以确保操作正确地协同工作,无缝地在它们之间传递数据,并验证我们自动化的整体行为。
  • 增强安全性:在本地测试操作时,我们可以更好地控制所使用的环境和数据。这使我们能够使用敏感数据测试我们的工作流程,而无需将其暴露在外部。
  • 协作:开发人员可以共享他们的工作流程并在本地进行测试,从而实现更快的反馈循环,并促进更顺畅的开发过程。

使用nektos/act进行本地测试

安装 act

act是一个命令行工具,允许我们通过模拟GitHub Actions运行时在本地运行GitHub Action工作流。它支持广泛的GitHub Actions功能,并可以执行我们工作流程中定义的步骤。

在macOS平台可通过下面命令进行安装

brew install act

其他安装方式,请阅读官方文档

act依赖于docker(确切地说是docker引擎API)在容器中运行工作流。如果您不需要容器隔离,可直接在系统上运行选定的jobs(如windows或macOS),请参阅Runners。在后一种情况下,则不需要安装docker。

配置工作流

默认情况下,act将运行在.github/workworks中所有工作流。确保在本地的 .github/workworks 目录下存在配置好的工作流。

本地运行act

act

运行act后,docker将会拉取 catthehacker/ubuntu 镜像,速度可能会比较慢,请耐心等待。镜像下载完成后将会运行工作流。act将根据工作流中的每个步骤的执行情况提供输出和反馈,包括操作产生的任何日志记录或输出。