开启 3 天免费试用
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。


GitHub Actions 在中国大陆不是一条网络路径:GitHub-hosted runner 在 GitHub 管理的基础设施执行,而位于中国大陆的 self-hosted runner 使用该主机自己的出站路线。先确定 runner 和首个失败步骤;排队、checkout、secret、artifact 或第三方服务错误需要不同处理。
关键要点:
- 分离 workflow 触发、队列与分配、runner 连接、repository checkout、GitHub 服务和外部依赖。
- GitHub-hosted 结果不测量开发者本地中国网络;中国大陆 self-hosted runner 才使用当地路线。
- Self-hosted runner 主动建立出站连接,需要按官方清单获得获准 endpoint 访问。
- 路由无法修复 label、权限、secret、组织策略、账单、workflow 语法或第三方故障。
浏览器与网络路线的基础判断先看中国大陆网站与 App 通用排障。工作站上的网页、API、HTTPS Git、SSH、SSO 与 repository 访问请看GitHub 开发者访问检查清单;中国 VPN 规划指南说明更广的网络和合规边界。本文只处理 Actions 执行。
workflow 必须先被触发、被接受、进入队列、分配给匹配 runner、开始执行,再完成各个需要网络的步骤。记录 run/job URL、event、commit、runner 类型、label、首个失败 step、时间和脱敏错误。
| 阶段 | 应保留的证据 | 常见非网络原因 |
|---|---|---|
| 触发 | event、branch、filter、workflow 版本 | path filter、禁用或语法错误 |
| 队列 | label、runner group 与等待状态 | 无匹配 runner、concurrency、套餐限制 |
| Runner session | hosted image 或 self-hosted 身份 | 服务离线、更新或分配问题 |
| Checkout/服务 | 首个失败主机与操作 | token scope、权限或仓库状态 |
| Workflow 命令 | exit code 与有界日志 | 测试失败、缺 secret、第三方故障 |
不要把 secret、OIDC token、私有仓库名、runner registration token、内部 endpoint 或完整环境 dump 放进公开 issue。
读取 runs-on、runner group、label、reusable workflow 和路由表达式。GitHub-hosted runner 是按所请求的 image 新建、由 GitHub 管理的虚拟机,它的出站网络不是中国大陆用户的浏览器或笔记本路线;GitHub 对 hosted image 与网络特征有单独说明。[1]
Self-hosted runner 运行在所有者部署和维护的基础设施。[2]记录其实体或云端位置、系统、runner 版本、服务身份、代理来源、label、group 和是否 ephemeral。只有主机位于中国大陆时,它自己的当地出站路径才直接相关。
不能根据谁点击 “Run workflow” 推断执行位置。执行 checkout 和后续命令的是 runner 主机。
确认目标 branch 上存在正确 workflow 版本,并且 event、branch、path、environment 与 reusable workflow 条件匹配。没有创建 run 时,runner 网络尚未参与;job 被 skipped 时,应检查 expression 与 dependency。
job 一直排队时,对照请求 label、runner group 与已注册 runner。检查 concurrency、environment approval、套餐或账单限制、组织策略,以及管理员是否禁用 Actions 或某类 action。没有匹配 label 的等待不是中国网络错误。
改 label 前保存队列时间。放宽 label 可能把敏感代码派到非预期 runner,属于授权决策,不是快捷诊断。
确认 runner 属于目标 repository、organization 或 enterprise,并获准执行该 job。检查本地 runner service 和有界诊断日志,不输出 registration credential。服务已安装仍可能离线、卡在更新、被分配到别处或受策略限制。
GitHub 说明 self-hosted runner 主动出站连接 GitHub,以接收任务并下载更新;正常操作不要求 GitHub 发起入站连接。[2]主机应通过获准 firewall 或 proxy 解析并访问官方列出的 HTTPS endpoint。部分域名使用 CNAME,防火墙可能需要递归处理。[2]
域名清单应由网络所有者依据当前官方文档维护。不要关闭 TLS、接受不匹配证书、暴露 runner 入站端口或绕过组织检查。
runner 启动后,定位第一个需要网络的 step。checkout 可能涉及 GitHub API、archive、HTTPS Git、LFS 或 submodule;下载 action、release、container image、package、cache 和 artifact 可能走其他主机。checkout 成功不能证明 artifact 上传或 container 拉取也会成功。
记录 action 名称与 immutable revision、操作、主机类别、状态、超时和已传输的字节数。第三方 marketplace action 及 workflow 自己调用的 API 要与 GitHub 服务区分;外部服务故障不能称作 GitHub Actions 不可用。
若失败点属于软件包,分别用Docker Hub、npm或PyPI专项清单。
收到 HTTP 响应可能表示传输已到服务,但身份或授权失败。检查 job 的 permissions、Actions policy、fork 限制、environment approval、secret 可见性、protected branch 和 reusable workflow 的 secret 传递,绝不打印 token claim 或 secret 值。
OIDC 还包含向 GitHub 请求 token 与云身份交换两段。分别判断 GitHub token 请求,和云提供商对 issuer、audience、subject、role 或 policy 的验证。换网络路线不能修正错误 trust policy。
私有 repository 和 package 必须核对 job identity 权限,不能把个人 token 复制到 self-hosted runner 来掩盖错误。
建立或使用获准的非敏感诊断 workflow,只报告 runner 类型、时间和有界连接结果,不能 dump 环境变量。固定 commit、workflow、runner label、账户策略和时间窗口。只有组织允许时,才比较 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、调整权限、固定 action、修复 workflow,或等待已确认 incident。保留原 run 证据后,对同一 commit 和 workflow 重跑。
核对所有 required job、预期 artifact/cache、部署门禁及下游 status,不能在第一个绿色 step 停止。Self-hosted runner 还要确认回到预期 idle 或 ephemeral 生命周期,临时凭据和 workspace 符合组织政策。
记录 runner 位置、路线、workflow commit、原首个失败点、最终结果和未测试 endpoint。临时路线必须有所有者与到期时间,不能留下不明 bypass。
不会。它在 GitHub 管理的基础设施运行;本地浏览器可以触发或查看 workflow,但 job 由 hosted runner 执行。
正常情况下由 runner 主动出站连接。应遵循 GitHub 当前 endpoint 指引和网络所有者政策,而不是暴露入站服务。
检查 label、runner group、离线状态、concurrency、approval、policy 与套餐限制;排队时可能尚未发起任何外部连接。
checkout 与 artifact 服务可能使用不同 endpoint、token 和传输模式,应单独记录首个 artifact 请求。
不能。路由无法创建 secret、授予 token 权限、批准 environment 或修改组织策略。
不是。网页、Git 传输、API、GitHub-hosted runner、self-hosted runner 和 workflow 依赖是不同的路径。工作站上的操作请使用专门的 GitHub 访问指南。
记录准确 runner 位置和版本、workflow commit、触发、分配、必需服务步骤、最终 job 与 artifact。注明时间和范围,而不是声称长期可用。
免责声明:本文提供一般操作与安全信息,不构成法律、雇主政策、云架构或服务可用性建议。请遵守适用法律、GitHub 当前文档及组织的 runner 与网络控制。
Sources checked 2026 年 9 月 12 日。
延伸阅读:
注册即可免费体验全部高级功能。
*仅限新用户;每位用户只能获得一次试用。