我们都知道利用 Github Action 可以用来进行构建CI的流水线,通过构建对应的jobs来实现我们的期望效果,对于目前来说很多时候构建之后的效果目前只能在远端repo才能够看到最终的执行结果,那么我们是否有机会能够在本地构建,然后来类似DEBUG看到最后期望呢?这里我将介绍如何利用nektos/act这一利器来本地执行 Github Action

概览

根据官方仓库的概览描述告诉了我们对于本地构建的急切缘由!

  • 及时的结果反馈。 通过本地构建我们无需通过 commit/push 的事件来触发远端repoaction。我们完全可以在本地进行模拟Github Actions所达到的效果,从而得到一个及时的结果信息反馈。
  • 我们完全可以通过流式线形式的构建来替换 Makefile 文件

实际操作

这里假设你已经具备基本的Github Action配置能力,且具备初步的使用能力,此篇章主要是对 act 的配置及使用。
安装完可以通过 act -h 进行简单的查看验证。
act-help

安装

本人使用的是 macos,可以通过 brew install act 进行安装,其他 os 发行版可以参考官方仓库中的安装说明进行安装。

配置

镜像配置

在远端Github Action 运行的时候实际上是提供了对应的 vm 资源进行构建,那么在本地的话,act 是提供一个虚机镜像在容器层面进行 os 的模拟,我这里使用的是默认的 platform/docker-image,当然也可以自定定义。执行的命令如下:

1
act -P <platform>=<docker-image>

如下是我本地的镜像:
act-image

环境变量及密钥配置

很多时候在公司内部我们使用的更多的是私有仓库,那么我们在项目工程容器化的时候会拉依赖涉及到私有仓库,在 github 上我们会配置对应的 Action->secrets,在远端运行github action的时候是有机会获取到的,但是在本地的话我们如何传递呢?

act 支持 secrets 的配置,可以通过命令参数直接传递也可以通过在本地写入配置文件进行配置。
act-secrets