无公网 IP 打通 CI/CD:内网穿透对接 GitHub Actions 自动部署内网服务

GitHub / Gitea 工作流

企业把项目代码、CI 托管在【公有云 GitHub】与企业自建 Gitea 中,是很多团队的开发常态:代码在 GitHub 上,通过 workflows 连接内网数据库、或必须把 Webhook 打进内网中的 Jenkins、自建 Actions或内网部署服务器等完成自动构建与部署。

以往难的不是【Runner 能不能跑脚本】,而是 公网事件怎么安全进内网 ,以及 内网服务怎么临时给云端 Job 一个可达的 HTTPS 入口

github 工作流目前面临的几个问题:

  1. 项目环境在内网,github workflows 不能连接内网服务器进行自动部署发布
  2. 内网的 webhook,github workflows 无法回调内网中的 webHook
  3. 数据库部署在内网,github workflows 不能连接内网数据库进行数据初始化及数据迁移
  4. 测试环境没有公网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 的实现

  1. 在内网测试数据库所在的服务器上部署 ZeroNews 客户端,然后在控制台上给数据库添加TCP隧道,然后将数据库的隧道地址对接到github / gitea 的workflows 工作流中,即可实现数据的初始化/迁移等
  2. 在内网环境服务器上部署 ZeroNews 客户端,然后在控制台上给测试服务器添加TCP隧道,然后将服务器的连接隧道地址对接到github / gitea 的workflows 工作流中,即可实现数据的初始化/迁移等
  3. 在内网部署 Jenkins 的服务器上部署 ZeroNews 客户端,然后在控制台上添加 HTTPS隧道实现 jenkins 的 webhook 端点映射
  4. 然后将这些 服务器 / Jenkins / 数据库的隧道地址对接到 github / gitea 的workflows ,就可以实现在推送代码的时候,实现将代码自动初始化到内网数据/构建并部署到内网服务器
  5. 给数据库跟内网服务器添加 IP访问黑白名单/地址围栏等访问控制策略,保障访问安全

用 ZeroNews 实现 CI 过程中的内网 Webhook 回调

在 github 的 workflows 执行过程中,需要从内网的 Webhook API 获取或推送相关数据,用 ZeroNews 把 Webhook 收敛成一条受控 HTTPS 隧道 ,而不是给 Runner 开整网 VPN。

ZeroNews 的实现

  1. 在内网 webhook api 的服务器上部署 ZeroNews 客户端
  2. 然后给 webhook api 添加固定的自定义域名
  3. 再给 webhook api 模块添加一条 HTTPS 隧道,并将 隧道的域名访问地址对接到 github workflow 中接口
  4. 再叠加 路由白名单只开发 workflows 需要调用的 api 路由地址,避免暴露面过大
  5. 再给接口 添加 basicauth 认证,访问接口被滥用

若 E2E 很重、调用很频,更稳的组合往往是:构建与重测试放在内网 self-hosted Runner,ZeroNews 只留给必须由云端发起的少量检查------延迟与稳定性通常更好,也符合【穿透只承担跨边界那几条 HTTPS】的用法。

用 ZeroNews 代理项目测试环境,进行公网联调测试

当项目经过 github / gitea 的workflows 自动部署发布完成后,我们可以利用ZeroNews 给 项目的前后端模块都提供一个公网可访问的 HTTPS 公网端点,通过 ZeroNews 提供的固定域名即可进行公网联调测试,用户再也不用部署 nginx / TLS 证书管理。

ZeroNews 的实现

  1. 在内网项目测试环境所在的服务器上部署 ZeroNews 客户端
  2. 然后给测试环境中每个模块添加固定的自定义域名
  3. 然后再给每个模块添加一条 HTTPS 隧道,即可实现公网访问,就可以进行联调与测试

、小结

ZeroNews 用 HTTPS / TCP 隧道能很好的支持 GitHub / Gitea 的 workflows 驱动内网交付,测试服务器始终在内容,不开整网 VPN 的前提下完成自动部署、Webhook 回调与测试环境联调;ZeroNews 完成 HTTPS 与 TCP 的固定地址的公网访问端点,再叠加路由白名单、IP 与 Basic 等策略收紧暴露面,只映射工作流真正需要的那几跳,入口可控、可回收。

相关推荐
bellus-1 小时前
win11使用ubuntu 26.04
linux·运维·ubuntu
复园电子2 小时前
USB Over IP技术详解:基于USB服务器实现USB设备远程访问、重定向与集中管理
服务器·网络协议·tcp/ip
略略略咯咯2 小时前
centos更换镜像源
linux·运维·centos
测试者家园2 小时前
Harness由浅入深:CI/CD流水线里的质量门禁怎么设计
软件测试·人工智能·ci/cd·混沌测试·智能化测试·harness·质量门禁
IKUN家族2 小时前
Spring MVC(三)
运维·服务器·spring boot·spring·servlet·java-ee
用户526835677903 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
github
Leon-Ning Liu3 小时前
【真实经验分享】ORA-12516 排查实录:共享服务器模式下 SHARED_SERVER_SESSIONS 不足引发的监听故障
运维·服务器·oracle
运维大师3 小时前
【K8S 运维实战】34-多集群管理Karmada
java·运维·kubernetes
dong_junshuai3 小时前
每天一个开源项目#58 DwarfStar:2万星原生引擎,让DeepSeek V4跑在Mac上
github
东方护航数据恢复(深圳)3 小时前
服务器硬盘黄灯/红灯故障排查与处理命令全指南_东方护航数据恢复深圳店
运维·服务器·chrome