GitHub Actions 在中國內地能否使用?Runner 連線檢查清單

GitHub Actions 在中國內地能否使用?Runner 連線檢查清單

Jason Chen
2026年9月12日· 5 分鐘讀完

GitHub Actions 在中國內地並非一條網絡路徑:GitHub-hosted runner 在 GitHub 管理的基建執行,而位於中國內地的 self-hosted runner 使用該主機的出站路徑。先確認 runner 及首個失敗步驟;queue、checkout、secret、artifact 或第三方故障各有不同處理方法。

關鍵要點:

  • 分開 workflow 觸發、queue 與 assignment、runner 連線、repository checkout、GitHub 服務及外部 dependency。
  • GitHub-hosted 結果不測量開發者本機中國網絡;中國內地 self-hosted runner 才使用當地路徑。
  • Self-hosted runner 主動建立出站連線,需要按官方清單獲准存取 endpoint。
  • 路由無法修復 label、permission、secret、機構政策、帳單、workflow syntax 或第三方事故。

瀏覽器及網絡路徑的基本判斷先參考中國內地網站與 App 通用排障。工作站的網站、API、HTTPS Git、SSH、SSO 及 repository 存取請參考GitHub 開發者存取清單;中國 VPN 規劃指南說明較廣的網絡與合規界線。本文只處理 Actions 執行。

GitHub Actions 在中國內地的 runner 在哪個階段失敗?

建立執行路徑時間線

workflow 必須觸發、獲接納、進入 queue、分配到 matching runner、開始執行,再完成每個需要網絡的 step。記錄 run/job URL、event、commit、runner 類型、label、首個失敗 step、時間及經移除敏感資料的錯誤。

階段應保存的證據常見非網絡原因
觸發event、branch、filter 及 workflow 版本path filter、停用或 syntax
Queuelabel、runner group 及等待狀態沒有 matching runner、concurrency、plan limit
Runner sessionhosted image 或 self-hosted 身份service offline、update 或 assignment 問題
Checkout/服務首個失敗主機與操作token scope、permission 或 repository 狀態
Workflow 指令exit code 及有界 logtest failure、欠 secret、第三方故障

不要把 secret、OIDC token、私人 repository 名稱、runner registration token、內部 endpoint 或完整環境資料放進公開 issue。

1. 確認 job 真正在何處執行

讀取 runs-on、runner group、label、reusable workflow 及 routing expression。GitHub-hosted runner 是按所要求的 image 新建、由 GitHub 管理的虛擬機,其出站網絡不是中國內地用戶的瀏覽器或手提電腦路徑;GitHub 分開說明 hosted image 與網絡特點。[1]

Self-hosted runner 在擁有人部署與管理的基建運行。[2]記錄其實體或 cloud 位置、作業系統、runner 版本、service identity、proxy、label、group 及是否 ephemeral。只有該主機位於中國內地時,其本身的當地出站路徑才直接相關。

不能按誰按下「Run workflow」推斷執行位置;真正執行 checkout 及後續指令的是 runner 主機。

2. 分辨觸發、skip 及 queue 問題

確認目標 branch 有正確 workflow 版本,且 event、branch、path、environment 及 reusable workflow 條件相符。若沒有 run,runner 網絡尚未參與;job 被 skipped 時應檢查 expression 及 dependency。

job 長期 queue 時,對照 label、runner group 及已註冊 runner。檢查 concurrency、environment approval、plan 或 billing limit、機構政策,以及管理員有否停用 Actions 或某類 action。沒有 matching label 的等待並非中國網絡錯誤。

更改 label 前保存 queue 時間。放寬 label 可能把敏感程式碼派往不合適 runner,屬授權決定而非排障捷徑。

3. 核對 self-hosted runner assignment 與出站連線

確認 runner 屬於目標 repository、organization 或 enterprise,亦獲准執行該 job。檢查本機 runner service 及有界 diagnostic log,不要顯示 registration credential。service 已安裝仍可 offline、卡在 update、分配錯誤或被 policy 阻擋。

GitHub 說明 self-hosted runner 主動出站連接 GitHub,以接收 assignment 及下載 runner update;正常操作毋須 GitHub 建立 inbound connection。[2]主機須經獲准 firewall 或 proxy 解析並存取官方 HTTPS endpoint。部分域名為 CNAME,firewall 或須遞迴處理。[2]

網絡擁有人應按現行官方文件管理域名清單。不要關閉 TLS、接受不符 certificate、開放 runner inbound port 或繞過機構檢查。

4. 分開 checkout、action、artifact、cache 與 package

runner 開始後,找出第一個需要網絡的 step。checkout 可涉及 GitHub API、archive、HTTPS Git、LFS 或 submodule;action、release、container image、package、cache 及 artifact 可使用其他主機。checkout 成功不能證明 artifact 上載或 container 拉取亦會成功。

記錄 action 名稱及 immutable revision、operation、主機類別、狀態、逾時及已傳輸的位元組數。第三方 marketplace action 和 workflow 自己呼叫的 API 應與 GitHub 服務分開;外部服務事故不是 GitHub Actions 可用性問題。

若失敗屬套件流程,使用Docker Hub、npm或PyPI專項清單。

5. 檢查 token、permission、secret、OIDC 及 policy

收到 HTTP 回應可證明傳輸已到達服務,但身份或授權仍可能失敗。檢查 job permissions、Actions policy、fork restriction、environment approval、secret availability、protected branch 及 reusable workflow 的 secret passing,不得輸出 token claim 或 secret 值。

OIDC 還包括向 GitHub 請求 token 及 cloud identity exchange。分開判斷 GitHub token request 和 cloud provider 對 issuer、audience、subject、role 或 policy 的驗證。改變路由不能修正錯誤 trust policy。

私人 repository 及 package 須核對 job identity,不能把 personal token 複製到 self-hosted runner 掩蓋問題。

6. 在受控條件比較最小 job

建立或使用獲准的非敏感 diagnostic workflow,只報告 runner 類型、時間及有界連線結果,不得 dump environment variable。維持 commit、workflow、runner label、帳戶 policy 及時間窗口。只有機構容許,才比較 GitHub-hosted 和目標 self-hosted runner。

在適用法律和政策容許的前提下,AethoVPN 可以為你自己擁有的 self-hosted runner 提供受控的備選路徑:在這部機器上安裝 Linux(Debian/Ubuntu 的 .deb 安裝檔)或 Windows 客戶端,連接列表中的一個位置,再重跑同一個最小工作,令改變的只有網絡路徑。它不能修復 GitHub 故障、缺失的標籤、Actions 政策、計費、密鑰、工作流程邏輯或第三方端點;未經擁有人批准,亦不得安裝到受管基礎設施上。如果是個人測試機,在修改 runner 設定前開始 AethoVPN 3 天試用。

有效結論應是 hosted 成功但中國內地 self-hosted runner 在 artifact endpoint 失敗等窄界線,而不是對所有中國內地 Actions run 的永久結論。

7. 從觸發至最終 artifact 驗證恢復

只採用已確認修正:恢復獲准 runner service、修正準確 label、更新授權 proxy/allowlist、改正 permission、固定 action、修復 workflow,或等待已確認 incident。保存原 run 證據後,以同一 commit 和 workflow 重跑。

核對全部 required job、預期 artifact/cache、deployment gate 及下游 status,不能在首個綠色 step 停止。Self-hosted runner 還須回到預期 idle 或 ephemeral lifecycle,臨時憑證及 workspace 遵守機構政策。

記錄 runner 位置、路徑、workflow commit、原首個失敗、最終結果及未測 endpoint。臨時路徑應有擁有人及到期日,不留下不明 bypass。

總結

  • 確認 runner 位置,分開觸發、queue、assignment 及執行。
  • 分別映射 checkout、action、artifact、cache、package、OIDC 及第三方請求。
  • Self-hosted runner 應驗證獲准 outbound HTTPS,而非開放 inbound service。
  • 保持 token、TLS、機構政策及 runner 信任界線。
  • 重跑同一 commit,核對所有 required job 及 artifact。

常見問題

GitHub-hosted runner 會使用我的中國網絡嗎?

不會。它在 GitHub 管理的基建執行;本機瀏覽器可以觸發或查看 workflow,但 job 由 hosted runner 運行。

Self-hosted runner 要開放入站 port 嗎?

一般情況下由 runner 主動出站連線到 GitHub。應遵從 GitHub 現行 endpoint 指引及網絡擁有人政策,而不是開放入站服務。

為何 job 一直在 queue?

檢查 label、runner group、離線狀態、並行限制、批准要求、機構政策及方案上限。仍在 queue 的 job 可能根本未嘗試任何外部連線。

為何 checkout 成功但 artifact upload 失敗?

checkout 與 artifact service 可以使用不同 endpoint、token 及傳輸模式,應另行記錄首個 artifact 請求。

VPN 能否修復欠缺的 Actions secret?

不能。路由無法建立 secret、授予 token 權限、批准 environment 或更改機構政策。

Actions 與 GitHub 網站存取是否同一測試?

不是。網站、Git 傳輸、API、GitHub-hosted runner、self-hosted runner 及 workflow 依賴是不同的路徑。工作站上的操作請使用專門的 GitHub 存取指南。

如何證明中國內地 runner 可執行 Actions?

記錄 runner 位置和版本、workflow commit、trigger、assignment、必需服務步驟、最終 job 及 artifact。註明時間與範圍,而不是聲稱永久可用。

免責聲明:本文提供一般操作及安全資訊,不構成法律、僱主政策、雲端架構或服務可用性建議。請遵守適用法律、GitHub 現行文件及機構的 runner 與網絡控制。

來源

  1. GitHub Docs, GitHub-hosted runners reference: https://docs.github.com/en/actions/reference/runners/github-hosted-runners
  2. GitHub Docs, Self-hosted runners reference: https://docs.github.com/en/actions/reference/runners/self-hosted-runners

Sources checked 2026 年 9 月 12 日。


延伸閱讀:

開啟 3 天免費試用

註冊即可免費體驗全部高級功能。

*只限新用戶;每位用戶只可獲得一次試用。

GitHub Actions 在中國內地能否使用?Runner 連線檢查清單 | AethoVPN