Oasis's Cloud

一个人的首要责任,就是要有雄心。雄心是一种高尚的激情,它可以采取多种合理的形式。
—— 《一个数学家的辩白》

GitHub Action 本地测试


通过 GitHub Action 可以进行 CI/CD,但是每次的修改需要在 GitHub 上出发相应的动作来进行测试,拿 push 的处理来说明。 首先要在本地仓库中提交代码,然后 push 代码到 GitHub,GitHub 检测到相应的 push 动作,处理 Actions,Actions 执行出错,需要在 GitHub Actions 查看日志。修复后重复上述过程。

act 可以帮助我们解决上面的问题。这也是 act 获得 37.3k star 的原因之一。解决了实际开发过程中的遇到的痛点问题。

act 对与为什么需要使用 act 给出了两个原因:

  1. 快速反馈,不必提交推送 workflows。并且提供了与 GitHub 相同的环境变量和文件系统
  2. 本地任务管理,可以使用 workflows 替换 Makefile

act 是一款基于 docker 的软件,所以安装 act 之前,我们先去 docker 的站点下载 docker。

之后通过 act 提供的安装方式进行 act 的安装。

在执行 act 的时候,可能会遇到如下问题:

ERRO[0000] failed to obtain container engine info: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 
[CI/test] 🚀  Start image=catthehacker/ubuntu:act-18.04
[CI/test]   🐳  docker pull image=catthehacker/ubuntu:act-18.04 platform=linux/amd64 username= forcePull=true
Error: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

在 docker 的设置中 docker > Settings > Advanced > Enable default Docker socket 开启此选项,便可以解决上面的问题。

解决完上面的问题,便可以通过 act 进行测试了。act 的常用参数有:

act [<事件>] -j [workflow 的文件名]

act 同时提供了 .actrc 文件来设置默认的配置项(PS:在开发 cli 程序的时候也可以考虑加上类似的功能),下面是我设置的配置项:

-P ubuntu-latest=catthehacker/ubuntu:act-18.04
--container-architecture linux/amd64