持续构建与发布系统(CICD)
我们的 CICD 系统覆盖了从代码提交到生产上线的完整链路,把编译、测试、安全扫描、部署、验证全部串联成一条自动化流水线,让研发团队真正实现'提交即上线'。
我们搭建 CICD 的时候,目标很明确:不是做一个”能跑就行”的 Jenkins 替代品,而是要真正打通研发→测试→安全→运维的全链路。下面是这套系统的核心能力:
1. 代码与构建管理
- 支持 GitLab、GitHub、Gitee、Gitea、Bitbucket 等多平台接入
- Webhook 自动触发:Push 代码 → 自动编译 → 自动跑单元测试
- 多语言构建环境:Java(Maven/Gradle)、Node.js(npm/pnpm/yarn)、Go、Python、Rust
- 构建缓存:依赖包缓存 + 增量编译,第二次构建速度提升 80%
2. 持续集成(CI)
- 代码检查:SonarQube、ESLint、Checkstyle 自动扫描
- 单元测试 + 覆盖率:JUnit、pytest、Jest,覆盖率不达标不允许合并
- 安全扫描:SAST(静态应用安全测试)、依赖漏洞扫描(SCA)、镜像漏洞扫描
- 并行流水线:前端和后端同时构建,互不阻塞
3. 制品管理
- Docker 镜像仓库集成(Harbor / Nexus / Docker Hub)
- 制品版本追踪:哪个镜像对应哪个 Git Commit、谁构建的、什么时间
- 晋级策略:开发 → 测试 → 预发布 → 生产,逐级晋级,不能越级
- 制品签名与校验:部署前自动校验制品完整性
4. 持续部署(CD)
- 多环境管理:开发、测试、预发布、生产四套环境独立配置
- 部署策略:滚动更新、蓝绿部署、金丝雀发布
- 灰度发布:按比例(5% → 20% → 50% → 100%)逐步放量
- 健康检查:部署后自动检测服务端口、HTTP 状态码、业务指标
- 自动回滚:健康检查失败 → 自动回滚到上一个稳定版本
5. 审批与门禁
- 测试环境自动部署,生产环境需要审批
- 审批链:技术负责人→安全审核→运维审核→发布
- 变更窗口管理:非窗口时间自动排队,窗口时间一到自动执行
- 冻结期:大促、节假日自动锁定,禁止任何生产变更
6. 发布看板与度量
发布日历:可视化展示所有环境的部署历史和计划
关键指标:部署频率、变更失败率、平均恢复时间(MTTR)、变更前置时间
发布质量评分:综合测试通过率、安全扫描结果、回滚率等维度