从多仓库到单体仓库:自动化 6 个 Go 微服务的发布,提速 15 倍
来源:dev.to — 2026-08-09
📋 概述
作者上个月切一个跨六个 Go 微服务仓库的发布要花一个多小时:逐个打 tag、等 CI、更新 SDK 的 go.mod、再等 CI……在并行处理 api、cli、worker 时还曾因忘了 bump cli 的依赖而让构建在晚上 11 点崩溃。那是他最后一次手工发布。本文讲述了用 Jenkins + Python + GitLab 自动化整个流程后,意识到多仓库架构才是真正的瓶颈,于是把所有模块折叠进一个 Go 单体仓库(monorepo),发布速度提升了 15 倍。整套方案跑在他的 MacBook 上,可 fork 复现。项目模拟了 6 个有严格依赖顺序的 Go 模块,前三个模块串行(log→sdk→utils),后三个可并行。
🔑 核心要点
- 痛点:手工发布需同时管理 6 仓库 × 3 分支 × 依赖顺序,一个忘掉的 go mod tidy 就能导致深夜崩溃
- 阶段一:用 Jenkins + Python + GitLab 在 MacBook 本地自动化多仓库发布,无需云 CI
- 阶段二:认识到多仓库架构才是真问题,把所有模块折叠进 Go 单体仓库
- 6 个模块分两层:log→sdk→utils 串行,api/cli/worker 三个终端模块可并行
- 最终成果:切发布提速 15 倍,并分享真实数字与踩坑清单
- 整套方案开源可复现,可在本地 MacBook 上 fork 运行
💡 金句
我忘了 bump cli 的依赖,构建在晚上 11 点崩溃了——那是我最后一次手工发布。
👍 0
👎 0
← 返回 dev.to 首页