開啟 3 天免費試用
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。


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 執行。
workflow 必須觸發、獲接納、進入 queue、分配到 matching runner、開始執行,再完成每個需要網絡的 step。記錄 run/job URL、event、commit、runner 類型、label、首個失敗 step、時間及經移除敏感資料的錯誤。
| 階段 | 應保存的證據 | 常見非網絡原因 |
|---|---|---|
| 觸發 | event、branch、filter 及 workflow 版本 | path filter、停用或 syntax |
| Queue | label、runner group 及等待狀態 | 沒有 matching runner、concurrency、plan limit |
| Runner session | hosted image 或 self-hosted 身份 | service offline、update 或 assignment 問題 |
| Checkout/服務 | 首個失敗主機與操作 | token scope、permission 或 repository 狀態 |
| Workflow 指令 | exit code 及有界 log | test failure、欠 secret、第三方故障 |
不要把 secret、OIDC token、私人 repository 名稱、runner registration token、內部 endpoint 或完整環境資料放進公開 issue。
讀取 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 主機。
確認目標 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,屬授權決定而非排障捷徑。
確認 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 或繞過機構檢查。
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專項清單。
收到 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 掩蓋問題。
建立或使用獲准的非敏感 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 的永久結論。
只採用已確認修正:恢復獲准 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。
不會。它在 GitHub 管理的基建執行;本機瀏覽器可以觸發或查看 workflow,但 job 由 hosted runner 運行。
一般情況下由 runner 主動出站連線到 GitHub。應遵從 GitHub 現行 endpoint 指引及網絡擁有人政策,而不是開放入站服務。
檢查 label、runner group、離線狀態、並行限制、批准要求、機構政策及方案上限。仍在 queue 的 job 可能根本未嘗試任何外部連線。
checkout 與 artifact service 可以使用不同 endpoint、token 及傳輸模式,應另行記錄首個 artifact 請求。
不能。路由無法建立 secret、授予 token 權限、批准 environment 或更改機構政策。
不是。網站、Git 傳輸、API、GitHub-hosted runner、self-hosted runner 及 workflow 依賴是不同的路徑。工作站上的操作請使用專門的 GitHub 存取指南。
記錄 runner 位置和版本、workflow commit、trigger、assignment、必需服務步驟、最終 job 及 artifact。註明時間與範圍,而不是聲稱永久可用。
免責聲明:本文提供一般操作及安全資訊,不構成法律、僱主政策、雲端架構或服務可用性建議。請遵守適用法律、GitHub 現行文件及機構的 runner 與網絡控制。
Sources checked 2026 年 9 月 12 日。
延伸閱讀:
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。