在使用 Github 協作的過程中,我們常會使用到私有主機來進行 CI/CD 的工作。
這個部分在 Github 中有提供說明文件,告訴使用者該如何進行初步的安裝,依照步驟做完就可以配置成功。
問題描述
但是你的主機總會需要重新啟動,如果這時沒有做設定,Runner 的服務會永遠的沈睡下去。然後這件事情就這樣被忘記,直到有人發現沒反應或被客訴,這時可能已經過了好幾天。
這種事情會一而再,再而三的發生,不堪其擾!
所以,我們需要自動執行!
配置流程
要在主機開機後自動執行某個任務,可以使用 systemd 來做。
-
建立一個新的 systemd 服務檔案:
sudo vim /etc/systemd/system/actions-runner.service
-
貼上以下的內容到檔案中:
/etc/systemd/system/actions-runner.service[Unit]
Description=GitHub Action Runner
After=network.target
[Service]
Type=simple
User=你的使用者名稱
WorkingDirectory=/home/你的使用者名稱/actions-runner
ExecStart=/home/你的使用者名稱/actions-runner/run.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target用顏色匡起來的地方要注意:
User
、ExecStart
與WorkingDirectory
要改成你自己的使用者名稱。
-
告知 systemd 重新讀取新的服務設定:
sudo systemctl daemon-reload
-
啟用此服務,使其在開機時自動啟動:
sudo systemctl enable actions-runner.service
-
現在你可以手動開始此服務,或是重新開機來測試它:
sudo systemctl start actions-runner.service
使用這個方法,當你的主機開機時,actions-runner 會自動背景執行。
如果你想停止服務,可以使用以下指令:
sudo systemctl stop actions-runner.service
要記得要確保 run.sh
具有可執行的權限。
查看狀態
當你使用 systemd 來管理服務時,你可以查看日誌來了解它的工作狀態。
請使用以下命令:
sudo journalctl -u actions-runner.service -f
解釋一下參數:
-u actions-runner.service
:只查看名為 actions-runner 的服務的日誌。-f
:這個參數讓 journalctl 持續追踪最新的日誌,所以你可以實時看到新的輸出。
此外,如果你想查看服務的當前狀態,你可以使用:
sudo systemctl status actions-runner.service
這將會顯示 actions-runner
服務的當前狀態,包括是否正在運行,以及最近的日誌輸出:
重新配置
這邊是題外話,跟自動運行無關。
如果是原本的 Runner 不見了(通常會是在切換儲存庫的 Public 和 Private 的時候),或是原本 Runner 太久沒有調用,總之就是弄丟了!
這時候就需要重新配置:
-
到你的 github 帳號上取得一組新的 Token。
-
回到你的 actions-runner 資料夾底下(可能是其他你自己取的名稱),把
.runner
檔案刪掉,再執行配置指令:./config.sh --url ... (改成新的 Token 配置)
其他流程都一樣,配置完之後,把服務重新啟動就好。