GitHub Action 本地测试
通过 GitHub Action 可以进行 CI/CD,但是每次的修改需要在 GitHub 上出发相应的动作来进行测试,拿 push 的处理来说明。 首先要在本地仓库中提交代码,然后 push 代码到 GitHub,GitHub 检测到相应的 push 动作,处理 Actions,Actions 执行出错,需要在 GitHub Actions 查看日志。修复后重复上述过程。
act 可以帮助我们解决上面的问题。这也是 act 获得 37.3k star 的原因之一。解决了实际开发过程中的遇到的痛点问题。
act 对与为什么需要使用 act 给出了两个原因:
- 快速反馈,不必提交推送 workflows。并且提供了与 GitHub 相同的环境变量和文件系统
- 本地任务管理,可以使用 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