GitHub 託管的 runner 很方便,直到帳單或等待時間開始讓人難受。超出免費額度後您按分鐘付費,每個任務都從「冷」狀態啟動,並每次重新下載依賴。您自己 VPS 上的自託管 runner 把這三點全部反轉:固定的月度成本、快取已在磁碟上的「熱」機器,以及您完全掌控的建置環境——特定的工具版本、更多 RAM、真正能持久保留的 Docker 層快取。
runner 只需對 GitHub 對外,所以它能在我們最便宜的方案上執行、用加密貨幣付款、並且免 KYC。
runner 需要什麼
- 滿足您建置的 CPU 與 RAM。 Small(每月 $8——4 vCPU、4 GB RAM、35 GB NVMe) 對大多數 CI 都很舒適:Node/Go/Rust 建置、測試套件、Docker 映像建置。繁重編譯或並行任務?升級到 Medium 或 Pro 方案。
- 用於快取的 NVMe 磁碟。 自託管的全部意義在於持久化——依賴快取、Docker 層、建置產物在多次執行之間留在磁碟上。NVMe 讓恢復保持快速。
- 不需要專用 IP。 runner 透過 HTTPS 向 GitHub 撥出;無需任何對記憶體取。一個 NAT 方案(每月 $3 起) 就夠了。只有當您還自託管某些對外提供流量的服務時,才需要專用 IP。
設定 runner(Ubuntu 24.04)
在您的儲存庫(或組織)中建立 runner:Settings → Actions → Runners → New self-hosted runner → Linux。GitHub 會顯示下載指令和一次性註冊權杖。在 VPS 上:
# 以非 root 使用者身分(runner 拒絕以 root 執行)
adduser --disabled-password --gecos "" runner
su - runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64.tar.gz -L \
https://github.com/actions/runner/releases/latest/download/actions-runner-linux-x64.tar.gz
tar xzf actions-runner-linux-x64.tar.gz
# 用 GitHub 介面中的 URL + 權杖註冊
./config.sh --url https://github.com/YOUR_ORG/YOUR_REPO --token YOUR_TOKEN
讓它作為服務執行
不要在終端裡跑 ./run.sh——把它安裝為 systemd 服務,讓它在重新啟動後存活:
sudo ./svc.sh install runner
sudo ./svc.sh start
sudo ./svc.sh status
現在 runner 在 GitHub 介面中顯示為 Idle,並會接手任何指向它的任務。
在 workflow 中使用
用 runs-on 把任務指向您的 runner:
jobs:
build:
runs-on: self-hosted # 或你在註冊時設定的自訂標籤
steps:
- uses: actions/checkout@v4
- run: make build && make test
基於 Docker 的任務
安裝一次 Docker,您的 workflow 就能建置映像或執行服務容器,層快取在多次執行之間持久保留:
sudo apt update && sudo apt install -y docker.io
sudo usermod -aG docker runner # 讓 runner 無需 sudo 即可使用 Docker
若要為每個任務做一次性隔離,可把 runner 本身放進容器中執行,並每次重新建立它——這是不受信任建置或矩陣建置的常見做法。
為什麼選擇 EQVPS 做 CI
- 固定費用、無限分鐘。 無按分鐘計量——繁忙的流水線和空閒的花費相同。
- 「熱」快取。 依賴和 Docker 層在多次執行之間留在 NVMe 上;建置變快,而不是變慢。
- 約 60 秒拿到 root、乾淨映像。 透過 cloud-init 提供 Ubuntu、Debian 等;安裝您正需要的工具鏈。
- 免 KYC、加密貨幣付款。 用電子郵件註冊、用 USDC/USDT 付款。發布高峰時多開幾個 runner,之後再關掉——未使用的已付時間會退回您的餘額。
評論
目前還沒有評論。歡迎成為第一位。