GitHub Actions 自架 Runner 排隊不執行?先做版本更新檢查
自架 GitHub Actions Runner 的 workflow 若突然一直排隊,第一個要看的不只是 workflow YAML,而是 runner 版本。GitHub 已公告恢復最低版本要求的強制時程;在強制日之前,舊版 runner 會先遇到不能註冊或不能執行 job 的窗口,完整強制則依 GitHub.com、Enterprise Cloud 與資料落地環境有不同日期。
最實際的處理方式是:先確認 job 被派到哪一組 runner,再比對該主機或容器 image 的 runner 版本與 actions/runner release。
先分辨是「沒有 runner」還是「runner 太舊」
在 repository 的 Actions 頁面打開卡住的 job,先看它要求的 labels;再到 organization 或 repository 的 Settings → Actions → Runners 確認對應 runner 是否 online、idle,以及最後活動時間。若是 autoscaling 或 ephemeral runner,也要檢查 controller 是否確實建立新 pod/VM。
常見現象不只一種:
| 現象 | 優先檢查 |
|---|---|
| job 一直等待符合 label 的 runner | label、runner online 狀態、autoscaler 容量 |
| runner 能看見但不接 job | runner 軟體版本與 GitHub 的最低版本要求 |
| container 每次啟動都更新很久 | image 內版本、是否使用 ephemeral runner、更新策略 |
| 手動停用更新後突然停止排程 | 是否超過 GitHub 要求的更新期限或有安全更新 |
不要只靠自動更新
一般 self-hosted runner 預設會在有新版本時更新。但 Docker、Kubernetes 與 ephemeral runner 常刻意使用 --disableupdate,避免每次新容器都下載更新;這是合理的部署設計,但更新責任就移到 image 的維護流程。
GitHub 文件指出,停用自動更新後仍必須定期更新;新版本發布後超過 30 天,服務可能不再把 job 排給該 runner。遇到 critical security update 時,更新前也可能停止排程。因此「image 可以穩定重建」不等於「版本可以一直固定」。
可回復的更新流程
- 記錄現況:保留目前 runner image tag、runner group、labels 與最近成功 job。
- 更新測試 runner:先替非正式 repository 或獨立 runner group 更新 runner binary/image。
- 跑代表性 workflow:至少包含 checkout、cache、需要的 container 或部署權限。
- 逐批替換:讓舊 runner drain,不接新 job 後再替換;不要在一個唯一 runner group 上直接全數停機。
- 確認 GitHub UI:確認新 runner 成為 online,並實際完成一個 job,不只看主機上的 process 存活。
如果使用 Actions Runner Controller(ARC),更新通常應透過 controller 與 runner image 的既定發版方式完成,而不是進入單一 pod 手動改 binary。這樣下次 autoscaling 才不會又生出舊版 runner。
把版本檢查放進日常維運
最小化做法是訂閱 actions/runner releases,並把 runner image tag 或版本列入每月維護項目。對 --disableupdate 的 runner,可在 CI 或監控中記錄目前版本,讓「job 排不動」不會成為第一次知道版本落後的時機。
官方時程會更新;本文發布日(2026-07-21)應以公告頁的環境對照表為準。不要把某一個日期複製進內部 runbook 後就忘記回看來源。
常見問題
Q: 把 --disableupdate 拿掉就能解決所有問題嗎?
A: 不一定。它能讓常駐 runner 自行取得更新,但 ephemeral 容器仍需要正確的 image 與 autoscaling 設定。先確認你是由誰建立 runner,再決定由 runner 本身或 image 發版流程負責更新。
Q: 可以等 job 真的卡住再更新嗎?
A: 不建議。最低版本要求與 critical update 可能讓 GitHub 停止排程;等到正式工作流卡住才處理,通常沒有測試環境與回復空間。固定週期測試新版本更安全。
參考資料:
回報錯字、失效連結,或告訴我你想看的延伸主題。