完整的CI/CD流水线,会在你掌握的核心主干基础上,补充大量前置门禁、安全合规、发布管控、故障兜底的环节,形成全流程自动化的安全闭环,下面给你按流水线顺序,完整拆解清楚。
一、最小可用CI/CD完整步骤
这是CI/CD的灵魂,不管流程怎么扩展,核心永远不变,完全可以直接用于个人项目、小型业务:
→ 代码提交
→ CI(合并主干 → 代码lint → 单元/集成测试 → 代码验证通过)
→ 持续交付(生产级标准构建 → 预发布环境全量校验 → 版本化推送到Harbor制品库 → 待上线就绪)
→ 持续部署(持续交付全流程 + 自动审批 + 自动部署到生产服务器)二、完整企业级CI/CD全链路步骤
以下是中大型企业核心业务的标准流水线,按执行顺序拆解,补充的都是你之前没提到、但生产环境必做的环节:
【前置阶段:代码提交前(CI的隐形起点,提前拦截80%的低级问题)】
- 本地pre-commit钩子:开发者提交代码前,自动在本地跑lint、单元测试、简单格式校验,有问题直接拦在本地,不用推到仓库才发现
注意: 当前功能在jetbrain家的产品中没有显式标明, 实际在提交时会自动执行. 但可以通过ide自带的lint和预执行单元测试命令实现, 比写git脚本更简单, 方便, 直接. - 代码评审(CR):代码提交后,必须经过团队成员评审通过,才能触发CI流水线,避免单人编写的风险代码进入流程
【CI阶段:代码集成与基线验证(核心主干不变,补充企业级门禁)】
- 核心主干:拉取主干代码 → 冲突检测 → 语法lint → 单元测试 → 模块集成测试
补充必做环节(全是门禁,不通过直接终止流水线,绝不进入下一环节):
- 代码质量门禁:扫描代码重复率、圈复杂度、潜在bug、安全坏味道,不达标直接拦截
- 第三方依赖安全扫描(SCA):检测项目用的开源组件有没有已知高危漏洞(比如log4j漏洞),有风险直接拦截
- 构建缓存优化:缓存不变的依赖包,避免每次构建重复下载,大幅提升流水线速度
- 阶段终点:得到经过验证、可用于生产构建的干净源代码
【持续交付阶段:制品标准化与上线就绪】
- 核心主干:生产级构建 → 预发布环境验证 → 推送到Harbor制品库
补充必做环节(彻底解决环境差异、安全风险、合规问题,也是你之前疑惑的“持续交付到底干了什么”的核心补充):
- 严格执行「一次构建原则」:全程只构建一次,这个制品会贯穿预发布测试、入库、生产部署全流程,绝对不会重新构建,从根源避免“测试环境能跑,生产环境跑不起来”的问题
- 制品签名与防篡改校验:给构建好的Docker镜像/程序包打上唯一数字签名,后续所有环节都会校验签名,确保制品没被篡改,守住供应链安全
- 制品二次安全扫描:推入库前,再次扫描制品本身的漏洞(比如镜像里的系统漏洞、恶意文件),有问题直接拦截
- 生产级全量验证:把制品部署到和生产环境1:1的预发布环境,跑端到端全链路测试、性能压测、兼容性测试、安全渗透测试,确保制品在生产环境100%可用
- 版本全生命周期管理:给制品打上不可修改的唯一版本号,和代码提交记录、测试报告、构建日志强绑定,实现任何版本可追溯、出问题可秒级回滚
- 合规审批与审计:自动触发上线审批流(负责人、安全团队审批),全流程所有操作留存审计日志,满足企业合规要求
- 阶段终点:制品完成所有上线前准备,锁在制品库里,随时可以一键安全上线到生产环境,无需任何额外加工
【持续部署阶段:自动化上线与故障兜底(核心逻辑不变,补充生产级管控)】
- 核心主干(你已完全掌握):完整持续交付全流程 + 自动部署到生产服务器
补充必做环节(避免自动部署变成“自动故障”,是企业级持续部署的核心):
- 灰度/金丝雀发布:不直接全量上线,先把1%-5%的流量切到新版本,观察无异常再逐步全量,把故障影响范围降到最低
- 无损上下线与健康检查:先启动新版本实例,自动校验服务健康状态(能否正常响应请求),健康后再逐步切流量,等老版本实例的所有请求处理完再下线,完全不影响用户
- 线上自动化验收:上线后自动跑核心链路冒烟测试,确保线上核心功能正常
- 监控联动与自动回滚:实时对接监控系统,观察新版本的错误率、响应时间、资源占用等核心指标,一旦发现异常,自动触发回滚,瞬间切回上一个稳定版本,无需人工干预
- 上线结果通知:不管成功失败,自动把上线结果、日志、核心指标推送给相关开发、运维人员
【后置闭环阶段:全流程归档与持续优化】
- 全流程日志、测试报告、部署记录、审计日志归档留存,用于后续问题排查与合规审计
- 收集本次上线的监控数据、用户反馈,持续优化流水线的效率、拦截率与稳定性
关键补充说明
- 没有绝对的“所有步骤”:CI/CD流水线是可定制的,个人小项目、非核心业务,用你梳理的核心主干就完全够用;金融、政务、大型互联网的核心业务,必须把补充环节落地,才能满足安全、合规、高可用的要求。
- 核心本质永远不变:不管流程怎么扩展,CI/CD的核心始终是把代码交付的全流程自动化,提前拦截问题,让上线更快、更稳、更安全,减少人工操作带来的风险。
注:文档内容由 AI 生成, 感谢豆包AI. 后续我会在实践后手动修改文档