如何在本地运行GitHub Actions?

时间:2019-12-09 00:48:33

标签: github-actions

我计划使用Docker将我们的Travis CI构建迁移到GitHub Actions进行每次提交测试。

我可以在本地可复制地运行这些新的GitHub操作吗?是否有一种通用方法可以在本地运行任何GitHub Action?

5 个答案:

答案 0 :(得分:28)

有些工具已经提到过act,但并不完美。 您并不孤单。类似的问题是:

  • 如何在本地测试Jenkins版本
  • 如何在本地测试GitLab CI构建
  • 如何在本地测试Circle CI构建
  • 如何在本地测试XXXX版本

我对这些问题的解决方案是:

  • 避免使用CI工具(GitHub Actions,Gitlab CI等)提供的功能
  • 以与CI无关的方式(BASH脚本,PowerShell脚本,Gradle脚本,NPM脚本,Dockerfiles,Ansible脚本-任何您知道的东西)尽可能多地编写
  • 从CI工具中调用这些脚本。在GitHub中,操作:run: your command to run

答案 1 :(得分:10)

nektos/act(预发行版)以来,您可以使用支持yaml语法的0.2.0

查看他们的latest版本。

答案 2 :(得分:5)

您最好的选择是https://github.com/nektos/act,但它还不支持yaml语法,尽管也有很多有趣之处:https://github.com/nektos/act/issues/80 https://github.com/nektos/act/issues/76https://github.com/nektos/act/issues/74

Gitlab有gitlab-runner exec docker job-name,但这就是Gitlab:)

答案 3 :(得分:5)

测试 Github 操作的一种方法是创建一个私有存储库,并在那里迭代操作配置。因此,您可以避免因提交损坏而污染实际存储库。

我知道,这不是问题的直接答案 - 这不是本地方式。但一开始我并没有想到这一点,我认为这对于许多用例来说已经足够了。

答案 4 :(得分:0)

使用docker容器,这个工具叫act,可以在这里找到,https://github.com/nektos/act 您可以在 docker 容器内本地运行所有 github 操作。 注意:act 为要运行的操作构建所有必要的容器。您所做的就是按照有关如何使用该工具的文档进行操作