前言
本次介紹的專案 act,是一個以 Golang 實作的專案,目標可以讓開發者可以在本地端跑 GitHub Actions,不用每次要測試 CI 就先推一個沒用的 Commit 上去等(如果是生產環境也是浪費資源),只要在本地跑就可以快速得到相關的回饋,不用再為了測試推一堆沒用的 Commit 上去了 🎉
本次使用的範例專案:https://github.com/louis70109/WordsGame
安裝步驟
因為我是使用 Mac 來操作,因此我使用如下:
1 | brew install act |
如果你是其他作業系統的用戶,文件上也有詳細寫出如何安裝以及前提
- 實作依靠 Docker,因此需要先安裝 Docker engine
- 各種套件庫方法安裝(brew, port, choco…)
- 透過 Go 安裝(如果本身有 Go 環境)
- Bash script
curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
介紹
官方的示範影片:
先進入你的資料夾中,我以前陣子開發的日文單字專案為例子做說明。
資料夾中有個
.github/workflows/testing.yaml
,GitHub Actions 預設會找 .github/workflows 底下的 yaml 檔,因此有需要跑的檔案都要放這執行
act
指令,大致樣子如下
1 | ➜ WordsGame git:(master) act |
以上為正確跑一次的大致會有的訊息(節錄其中一段),當然這邊是失敗收場,後續會在提到
- 前面有提到 act 是基於 Docker 開發的工具,因此在跑的時候會在 Docker 裡面建立一個 Container 來執行裡面會用到的內容。(可進 Dashboard 看)
狀況排除 - 如果有環境變數還是要 export ooo=qqq
因為我在建立此專案時是需要先幫 chatbot 放 Token 測試才可以順利跑,因此在這邊 ${}
裡的直就需要在環境變數中 export
1 | ... |
在另一個 Docker 環境中執行 act
文件中有說明相關的內容(PR #583),可能你有自架 Docker 在其他機器等等的,可以參考以下的指令:
1 | export DOCKER_HOST=$(docker context inspect --format '{{.Endpoints.docker.Host}}') |
環境特有的環境變數
或許在使用 GitHub Actions(或類似的 CI 服務),可能會有些全域是需要設定的,可以參考文件這邊,把相關內容設定在 ./.actrc
或 ~/.actrc
中讓本地端測試也可以達到跟線上一樣的功能。
結論
這次剛好是沒事在 GitHub 首頁閒逛時發現的一個好東西,現在按星星 🌟 時已經快兩萬顆星星了,代表社群上大家也是很喜歡這個內容,也很實用,如果說你也有相關需求的話歡迎參考這篇文章做,如果有更多討論也歡迎在下方留言讓我知道喔!🙂