前言

最近在寫 side project 時想要設定 Github Actions 來自動化編譯跟測試流程,但是按照我之前的經驗是第一次設定 github action 的 workflow 時都會需要不斷修改來達到自己想要的結果,但是如果想要測試的話就會需要一直 commit & push 到 github 上面才有辦法測試,因此這次在設定 workflow 前,我想要找到一個可以不用 push 到 github 就可以在 local 端測試我的 workflow 的工具,這樣我就可以先測試完我的 workflow 後再一次 push 上去 github, 減少設定錯誤的機會,也不用一直繁瑣的 commit & push.

而我找到的工具就是 nektos/act 這個專案,目前在 github 上約有 40k 個 stars,可見這個需求有多大,本篇文就是紀錄如何使用這個工具的筆記。

Install

nektos/act 這個專案有提供多種平台以及安裝方式,因為基本上我只會用這個工具來測試我的 workflow 有沒有寫錯,因此我選擇的是安裝官方提供的 GitHub CLI 擴充套件

Install Github CLI

Offical installation guide

首先按照官方教學安裝 Github CLI

type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y

安裝完畢後,在終端機上打 gh 就可以使用 Github CLI 了

gh --help

Install nektos/act

首先,必須確認你的電腦已經安裝 docker, 因為這個工具會使用 docker 來建構它的執行環境、跑 workflow 若你的環境是 WSL2, 則可以直接安裝 Docker Desktop on Windows, 按照官方教學設定好後,在 WSL2 裡面應該就不用再特別設定就可以使用 docker

接著就可以按照 nektos/act 的 readme 教學安裝 gh-act

gh extension install https://github.com/nektos/gh-act

安裝完畢後,在終端機打 gh act 就可以使用 act 來測試我們自己撰寫的 workflow 了!

Run

第一次使用 act 會需要設定一些東西,按照工具的引導後就可以測試 workflow 了

直接執行 gh act,它會自動抓你的專案底下的 workflow 並觸發 on: push 事件,然後開始執行你的 workflow

gh act

如果你的 workflow 中有需要用到 GITHUB_TOKEN 的話,act 也有參數可以直接帶入

gh act -s GITHUB_TOKEN="$(gh auth token)"

成功執行 workflow 的實際畫面如下,提供讀者參考 screenshot

Reference