一 、 GitHub / Gitea 工作流
企业把项目代码、CI 托管在【公有云 GitHub】与企业自建 Gitea 中,是很多团队的开发常态:代码在 GitHub 上,通过 workflows 连接内网数据库、或必须把 Webhook 打进内网中的 Jenkins、自建 Actions或内网部署服务器等完成自动构建与部署。
以往难的不是【Runner 能不能跑脚本】,而是 公网事件怎么安全进内网 ,以及 内网服务怎么临时给云端 Job 一个可达的 HTTPS 入口 。
github 工作流目前面临的几个问题:
- 项目环境在内网,github workflows 不能连接内网服务器进行自动部署发布
- 内网的 webhook,github workflows 无法回调内网中的 webHook
- 数据库部署在内网,github workflows 不能连接内网数据库进行数据初始化及数据迁移
- 测试环境没有公网IP,公网无法联调测试
二 、 内网穿透在GitHub / Gitea 工作流中的作用
内网穿透在不要求企业具备公网IP的情况下,可以为 内网数据库,入站回调(Webhook) 与 出站联调 / PR 预览入口 提供GitHub / Gitea 工作流的公网连接入口, 完成项目环境的自动化构建部署,这给 工作流提供了访问内网webhook / 内网部署的可行性。
内网穿透需满足以下几点:
Webhook 可达 ------GitHub / Gitea 云端(或对端 Forge)能稳定 POST 到内网接收服务;
预览可回收 ------PR / 联调隧道随 Job 创建与销毁,避免长期悬挂;
暴露面最小 ------尽量只开放 Hook 路径或预览站点必要路由,而不是整站;
访问可控 ------可叠加多种安全策略,内网服务只接受 workflows 过程中的调用,不被滥用与攻击;
三、ZeroNews 内网穿透是什么
ZeroNews 内网穿透(零讯)是一个企业级的安全内网穿透与反向代理平台,简单几步操作,就可以实现企业在无固定公网IP 的网络环境下,为企业内网中 Webhook / Jenkins / 数据库 提供安全稳定的 HTTPS 公网端点及固定公网TCP端口,以便于在 github / gitea 的 workflows中集成, 实现代码环境的自动化构建与部署,并提供IP访问黑白名单 / 路由白名单/Basicauth 认证等多种安全策略,保障内网应用的访问安全。
同时,ZeroNews 还可以将内网环境映射到公网,满足生产级别的公网测试环境,从而贯穿项目从 workflows 工作流自动部署,公网环境的联调/测试 的整体流程,解决企业在开发过程中公网访问的各种问题。

ZeroNews 在github 工作流中能做什么?
用 ZeroNews 承接 GitHub 的内网项目的 CD 部署
当我们进行 push 将最新代码推送到 GitHub 或 云端 Gitea 自托管代码仓库时,通过由 ZeroNews 统一提供内网 服务器 / Jenkins / 数据库的 公网 HTTPS 入口 + TCP公共端点入口 , 在GitHub 或 云端 Gitea 的workflows 中,对接内网 服务器 / Jenkins / 数据库这些内网环境的公共端口,实现内网环境的自动化构建部署与发布。

ZeroNews 的实现
- 在内网测试数据库所在的服务器上部署 ZeroNews 客户端,然后在控制台上给数据库添加TCP隧道,然后将数据库的隧道地址对接到github / gitea 的workflows 工作流中,即可实现数据的初始化/迁移等
- 在内网环境服务器上部署 ZeroNews 客户端,然后在控制台上给测试服务器添加TCP隧道,然后将服务器的连接隧道地址对接到github / gitea 的workflows 工作流中,即可实现数据的初始化/迁移等
- 在内网部署 Jenkins 的服务器上部署 ZeroNews 客户端,然后在控制台上添加 HTTPS隧道实现 jenkins 的 webhook 端点映射
- 然后将这些 服务器 / Jenkins / 数据库的隧道地址对接到 github / gitea 的workflows ,就可以实现在推送代码的时候,实现将代码自动初始化到内网数据/构建并部署到内网服务器
- 给数据库跟内网服务器添加 IP访问黑白名单/地址围栏等访问控制策略,保障访问安全
用 ZeroNews 实现 CI 过程中的内网 Webhook 回调
在 github 的 workflows 执行过程中,需要从内网的 Webhook API 获取或推送相关数据,用 ZeroNews 把 Webhook 收敛成一条受控 HTTPS 隧道 ,而不是给 Runner 开整网 VPN。

ZeroNews 的实现
- 在内网 webhook api 的服务器上部署 ZeroNews 客户端
- 然后给 webhook api 添加固定的自定义域名
- 再给 webhook api 模块添加一条 HTTPS 隧道,并将 隧道的域名访问地址对接到 github workflow 中接口
- 再叠加 路由白名单只开发 workflows 需要调用的 api 路由地址,避免暴露面过大
- 再给接口 添加 basicauth 认证,访问接口被滥用
若 E2E 很重、调用很频,更稳的组合往往是:构建与重测试放在内网 self-hosted Runner,ZeroNews 只留给必须由云端发起的少量检查------延迟与稳定性通常更好,也符合【穿透只承担跨边界那几条 HTTPS】的用法。
用 ZeroNews 代理项目测试环境,进行公网联调测试
当项目经过 github / gitea 的workflows 自动部署发布完成后,我们可以利用ZeroNews 给 项目的前后端模块都提供一个公网可访问的 HTTPS 公网端点,通过 ZeroNews 提供的固定域名即可进行公网联调测试,用户再也不用部署 nginx / TLS 证书管理。

ZeroNews 的实现
- 在内网项目测试环境所在的服务器上部署 ZeroNews 客户端
- 然后给测试环境中每个模块添加固定的自定义域名
- 然后再给每个模块添加一条 HTTPS 隧道,即可实现公网访问,就可以进行联调与测试
五 、小结
ZeroNews 用 HTTPS / TCP 隧道能很好的支持 GitHub / Gitea 的 workflows 驱动内网交付,测试服务器始终在内容,不开整网 VPN 的前提下完成自动部署、Webhook 回调与测试环境联调;ZeroNews 完成 HTTPS 与 TCP 的固定地址的公网访问端点,再叠加路由白名单、IP 与 Basic 等策略收紧暴露面,只映射工作流真正需要的那几跳,入口可控、可回收。