Skip to content

参考:CI/CD 概念速查

基于 CI/CD 通用模型 · 核于 2026-07

速查

  • CI=频繁把改动合入主干 + 每次自动构建测试;CD=交付(人工放行)/ 部署(自动上生产)。
  • 层级:Pipeline ⊃ Stage ⊃ Job ⊃ Step;needs/DAG 打破 Stage 全等;matrix 展开多维并行。
  • artifact(可靠传递的产物)≠ cache(尽力复用提速);cache key 绑 lockfile 哈希。
  • 发布策略:蓝绿(切流量+秒级回滚)/ 金丝雀(小流量灰度)/ 滚动(逐批替换)。
  • 安全:加密 secret + 注入 + 打码;OIDC 换短时凭据;fork PR 不给密钥;Action SHA 固定SLSA/provenance;防缓存投毒;最小权限。
  • DORA:部署频率 / 变更前置时间 / 变更失败率 / MTTR。
  • 实践:主干开发、左移、流水线即代码、快慢测试分层、DevSecOps。

一、核心术语对照

术语含义备注
CI(持续集成)频繁合入主干 + 每次自动构建测试本质是频繁集成,非「有台服务器跑测试」
Continuous Delivery(持续交付)自动就绪,上生产需人工放行有手动审批闸门
Continuous Deployment(持续部署)通过检查自动上生产无人工闸门
Pipeline / Stage / Job / Step流水线 / 阶段 / 作业 / 步骤逐层嵌套
Runner / Agent / Executor执行 Job 的机器/进程云托管 or 自托管
artifact交付/传递的产物可靠、有保留期
cache加速用的复用物尽力而为、可失效
matrix一份定义展开多维并行多版本×多 OS 兼容测试
needs / DAGJob 只依赖指定前置打破 Stage 全等、提速
environment部署目标抽象 + 保护规则绑密钥/审批/分支限制
OIDC短时令牌换云临时凭据无长期密钥
provenance制品来源可验证元数据SLSA 核心产物

二、触发器速查

触发器时机
push推送提交到分支
pull_request / merge request开/更新 PR(常验证合并后结果)
tag打版本标签(常用于发布)
schedule / cron定时(如每晚全量)
workflow_dispatch手动(UI 按钮 / API),可带输入
workflow_run / repository_dispatch被其它流水线 / 外部 webhook 触发

三、发布策略对照

策略机制优点代价
蓝绿 blue-green两套对等环境,验证后整体切流量零停机、秒级回滚双份资源
金丝雀 canary小流量灰度,逐步扩大风险可控、真实验证需按比例切流量 + 指标
滚动 rolling逐批替换实例直到全量平滑、控制不可用数非流量灰度

四、DORA 四指标

指标衡量类别
部署频率多久部署一次吞吐
变更前置时间提交→上线耗时吞吐
变更失败率生产变更致故障比例稳定
MTTR / 服务恢复时间故障→恢复耗时稳定

五、易错点清单

  • 把「上了 CI 工具」当成「在做 CI」——频繁集成的习惯才是核心。
  • 混淆持续交付(人工放行)与持续部署(自动上生产)。
  • 把该做 artifact 的长期发布物存进会过期的 cache/artifact。
  • cache key 设计过宽 → 命中过期缓存拿到错依赖;过窄 → 几乎不命中。
  • 假设下游 Job 能直接读上游 Job 的工作目录(Job 环境隔离,须靠 artifact 传递)。
  • 把密钥明文写进 YAML / 打进镜像 / 打印到日志。
  • 用可变标签(@v3/@main)引用第三方 Action 而不用 SHA 固定。
  • 对公开仓库用自托管 Runner 跑 fork PR 代码而不隔离。
  • continue-on-error/allow_failure/retry 长期掩盖真正的失败或 flaky 测试。

六、权威链接