安裝 GitLab Runner
- 建立存放 Runner 的資料夾(如:
C:\GitLab-Runner) - 於 官方下載頁 依 CPU 架構下載對應的執行檔(x86 64-bit / ARM 64-bit / x86 32-bit),放進上一步建立的資料夾,並更名為
gitlab-runner.exe - 限制該資料夾與執行檔的
Write權限,只保留系統管理員可寫入(非必要) - 以 系統管理員身分 開啟 PowerShell,後續指令都在此視窗執行
在 GitLab 上建立 Runner
到專案的 Settings > CI/CD > Runners > Create project runner 建立並取得註冊用的 token
- Tags:填入此 Runner 負責的工作標籤(如:
mr-pipeline);.gitlab-ci.yml內 job 的tags必須對應到這裡才會被此 Runner 取用 - Run untagged jobs:代表只接沒有標籤以外、有指定標籤的 job
- Lock to current projects:限制此 Runner 只服務目前指定的專案
- Maximum job timeout:單一 job 的最長執行時間(秒),最小值 600
註冊 Runner
把上一步取得的指令貼到系統管理員視窗執行:
.\gitlab-runner.exe register --url https://gitlab.com --token glrt-xxxxxxxxxxxxxxxx過程中會依序詢問:
- GitLab instance URL:直接按 Enter 沿用指令中帶入的網址
- Name for the runner:本機
config.toml內顯示的名稱 - Executor:選擇
shell(直接在這台 Windows 主機上以 PowerShell 執行 job)
看到 Runner registered successfully. 即註冊完成,設定會寫入 config.toml
安裝並啟動 Windows 服務
以 Built-in System Account 執行(預設):
.\gitlab-runner.exe install
.\gitlab-runner.exe start若要以指定的使用者帳號執行(該帳號需有密碼):
.\gitlab-runner.exe install --user ENTER-YOUR-USERNAME --password ENTER-YOUR-PASSWORD
.\gitlab-runner.exe start用 status 確認服務狀態,出現 gitlab-runner: Service is running 表示已正常運作
.\gitlab-runner.exe status回到 GitLab 專案的 Settings > CI/CD > Runners,該 Runner 的狀態應顯示為綠色的 online
其他設定
同時執行多個 job
若要讓同一台 Runner 同時執行多個 job,可修改 config.toml 內的 concurrent 值:
concurrent = 2將系統地區設定改為 UTF-8
Windows 的非 Unicode 程式預設使用 Big5(950)編碼,job log 中的中文容易出現亂碼。建議把 VM 的系統地區設定改為 UTF-8:
設定 > 時間與語言 > 地區 > 其他日期、時間及區域設定 > 地區 > 系統管理 > 變更系統地區設定,勾選 Beta: 使用 Unicode UTF-8 提供全球語言支援,按下確定後重新開機。
問題排解
"pwsh": executable file not found in %PATH%
GitLab Runner 17 之後,shell executor 預設使用 PowerShell Core(pwsh)。若 VM 只安裝 Windows 內建的 Windows PowerShell 5.1,job 一開始準備環境就會失敗:
Preparing the "shell" executor
Using Shell (pwsh) executor...
Preparing environment
ERROR: Job failed (system failure): prepare environment: failed to start process: starting OS command: exec: "pwsh": executable file not found in %PATH%. Check https://docs.gitlab.com/runner/shells/#shell-profile-loading for more information解法有兩種:安裝 PowerShell Core,或直接把 config.toml 內該 Runner 的 shell 由 pwsh 改為 powershell(改用 Windows PowerShell 5.1)
改完後重啟服務讓設定生效:
.\gitlab-runner.exe restart