前言
一般來說,使用 Github Actions 都需要在 Repo 里完成相應(yīng)的 event 才能夠觸發(fā)(比如push/pull_request等),然后在 Github 提供的服務(wù)器(容器)中運行。這樣有兩個缺點:
每次都需要在 Repo 完成相應(yīng)的 evenet,操作較為費時。
一個 event 可能會觸發(fā)多個 Action,并且在 Github 的服務(wù)器上運行時需要排隊,運行較為耗時。
所以,本文介紹如何在本地運行 Github Actions 來解決上述兩個問題,主要有以下兩個依賴:
Docker Desktop on Windows(Backend 是 WSL)
act
依賴安裝
Docker Desktop on Windows
安裝 Docker Desktop on Windows 前需要先安裝 WSL,安裝 WSL 的操作可以參考官方文檔
安裝 Docker Desktop on Windows,
進入 Docker Desktop on Windows 時可能會一直停留在 starting the docker engine 界面,可以考慮以下解決方法:
重啟 Docker 服務(wù)
net stop com.docker.service
net start com.docker.service
先點擊右上角登錄 Docker 賬號
act
act 是在本地運行 Github Actions 的工具,它依賴于 Docker。安裝可以參考 nektos/act: Run your GitHub Actions locally ,或者直接在這個倉庫的 release 當中下載,只有一個 Windows 可執(zhí)行文件(exe)。
本地運行 Github Actions
act 使用說明
Command structure:
act [] [options]
If no event name passed, will default to "on: push"
If actions handles only one event it will be used as default instead of "on: push"
List all actions for all events:
act -l
List the actions for a specific event:
act workflow_dispatch -l
List the actions for a specific job:
act -j test -l
Run the default (push
) event:
act
Run a specific event:
act pull_request
Run a specific job:
act -j test
Collect artifacts to the /tmp/artifacts folder:
act --artifact-server-path /tmp/artifacts
Run a job in a specific workflow (useful if you have duplicate job names)
act -j lint -W .github/workflows/checks.yml
Run in dry-run mode:
act -n
Enable verbose-logging (can be used with any of the above commands)
act -v
示例:RT-Thread 的 Github Actions
進入 RT-Thread 源代碼目錄(只要進入第一層即可,act 會自動搜索 .github/workflow 目錄)
使用act -l?查看當前目錄下的 Action
可以看到有重名(Job ID)的 Action,所以需要指定要運行的 Action(act -j test -W ..githubworkflowsaction_tools.yml?)
如果運行時拉不下鏡像可以修改一下 daemon.json 中的鏡像源
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
運行結(jié)果如下:
-
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61158 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1289瀏覽量
40135
發(fā)布評論請先 登錄
相關(guān)推薦
評論