# 🚀 常用 CI/CD 工具全景图
CI/CD 早已从 “写脚本 + cron” 演进成一片繁荣生态。下面先按 CI 为主、CD 为主、GitOps 原生 三大类梳理,随后用对比表格深入拆解关键指标,最后给出选型建议。
flowchart LR
subgraph 传统 CI
Jenkins -->|插件| Jenkinsfile
GitLabCI --> .gitlab-ci.yml
GitHubActions --> workflows
TravisCI
CircleCI
TeamCity
Bamboo
end
subgraph 现代化 CD / GitOps
ArgoCD -- declarative --> K8s
Flux -- declarative --> K8s
Tekton
Spinnaker
Harness
end
subgraph 云原生 Pipeline
AzurePipelines
CodePipeline
CloudBuild
end
# 1️⃣ 代表性工具速览
工具 | 类型 | 部署模式 | 管道描述方式 | 特色亮点 | 主要局限 |
---|---|---|---|---|---|
Jenkins | CI ➕ 插件式 CD | 自托管 | Jenkinsfile (Groovy/Pipeline DSL) | 插件最多、生态活跃、二次开发灵活 | 维护成本高,核心单体架构,横向扩容复杂 |
GitLab CI/CD | CI+CD 一体 | SaaS / 自托管 | .gitlab-ci.yml | 与 Git 流程深度融合、内置容器注册表、自带 CD、K8s Auto‑DevOps | 私有部署资源开销大,Runner 手动扩容 |
GitHub Actions | CI+轻量 CD | SaaS (可自托管 Runner) | YAML Workflow | Marketplace 动作丰富、按分钟计费、PR 触发天然 | Job 并发有限制,大规模私有流水线需自托管 |
CircleCI | CI 为主 | SaaS / 自托管 | YAML Orb/Pipeline | 极速并发启动、资源隔离、自动化测试友好 | 中国区网络偶有不稳,复杂 CD 需外部配合 |
Travis CI | CI 为主 | SaaS / 自托管 | YAML | 早期开源项目首选,简单易上手 | 社区热度下滑,企业版功能相对单薄 |
Azure DevOps Pipelines | CI+CD 一体 | SaaS / 自托管 Agent | YAML (Classic UI 可视化) | 微软全家桶整合、多阶段 CD、审计合规完备 | 界面偏“老气”,非 Azure 生态会觉得绑得深 |
TeamCity | CI ➕ 插件式 CD | 自托管 | Kotlin DSL / UI | “JetBrains 风”的 UI/IDE 集成、超强缓存 | 扩容靠额外节点,插件生态相对小众 |
Bamboo | CI+CD 一体 | 自托管 | UI / Specs | 与 Jira/Bitbucket 无缝 | 价格高、发布节奏慢,云原生适配一般 |
Argo CD | CD(GitOps) | K8s 原生 | Git 声明式 | Pull‑based, 自动漂移修正、渐进式发布 (Canary/Rollout) | 只做 K8s 目标环境,需另接 CI |
Flux | CD(GitOps) | K8s 原生 | Git 声明式 | 全 Helm/Kustomize 支持、事件驱动同步 | 学习曲线比 ArgoCD 陡,UI 生态薄弱 |
Tekton | CI/CD 基础框架 | K8s 原生 | CRD (YAML) | “K8s 上的 CI/CD 积木”,Cloud‑native Task 组合 | 需要自行拼装 UI、权限、触发器 |
Spinnaker | CD 高阶 | 微服务集群 | Pipeline (UI) | 多云多集群发布、自动回滚/验证、强大发布策略 | 组件众多、运维成本最高 |
Harness | CD‑as‑a‑Service | SaaS / 自托管 Delegate | 可视化 + YAML | 内建智能回滚、成本分析、自动验证 | 收费商模,开源版功能阉割 |
小贴士:Jenkins ⬄ GitLab Runner / GitHub Runner 可以混搭,CI 与 GitOps CD(ArgoCD/Flux)组合在云原生场景最流行。
# 2️⃣ 深度维度对比
维度 | Jenkins | GitLab CI/CD | GitHub Actions | Argo CD | Spinnaker |
---|---|---|---|---|---|
生态活跃度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
自托管难度 | 中(插件多) | 中 | 易 | 易(K8s 内) | 难 |
SaaS 体验 | 无 | 有 | 极佳 | 无 | 有 (Armory) |
可扩展性 | Master‑Agent, 静态 ➕ 动态 pod | 动态 Runner | Dynamic Runner | K8s 标准横向扩容 | 多微服务,弹性好 |
流水线语义 | Groovy DSL / Declarative | YAML | YAML | Git 期望状态 | JSON/YAML |
发布策略 | 自写脚本/插件 | Auto DevOps / Helm | Actions + 环境 | ✨ Canary、Blue‑Green、Progressive | ✨ 自动验证、手动 Gate |
权限与审计 | 插件 | GitLab 权限体系 | GitHub 权限 + OIDC | RBAC + SSO | 内建 RBAC |
典型场景 | 传统企业、异构环境 | 私有仓库一体化 | 开源 / 混部 | 云原生多集群 | 大型多云发布 |
# 3️⃣ 选型思考框架
交付模型
- 预算够、团队小 ➡️ SaaS 优先(GitHub Actions、CircleCI)
- 合规/内网 ➡️ 自托管(Jenkins、GitLab Runner、TeamCity)
生态耦合
- 已用 GitLab ➡️ 直接上 GitLab CI/CD
- 已全面 K8s ➡️ “CI + Argo CD/Flux” GitOps
规模与复杂度
- 单体/少服务 ➡️ 任何 All‑in‑one 即可
- 数百服务、多环境 ➡️ Spinnaker / Harness or ArgoCD + Progressive Rollout
团队技能栈
- 强脚本能力 ➡️ Jenkins 依旧无敌
- 想要纯声明式 ➡️ GitOps 工具 or GitHub Workflows
云厂商绑定
- Azure 世家 ➡️ Azure Pipelines
- AWS 重度 ➡️ CodePipeline + CodeBuild
# 4️⃣ 示范组合方案(与你当前 Jenkins 经验呼应)
目标 | 建议组合 | 说明 |
---|---|---|
快速试水云原生 | Jenkins CI + Argo CD | 继续沿用 Jenkins 构建,产出 Docker/Helm 包 ➡️ Git 推送触发 Argo 自动部署 |
纯 GitOps | GitLab CI + GitLab Deploy‐ments or Argo CD | 全流程在同一 GitLab Group;若多集群发布,用 Argo 取代 GitLab Deploy‑ments |
Serverless 小团队 | GitHub Actions + GitHub Environments | 工作流即代码,借助 Environments + OIDC 发布到 AWS/Azure/GCP |
企业级多云 | Spinnaker + Jenkins/CodeBuild | Jenkins 负责 Build/Test,Spinnaker 管多个云账号、复杂落地策略 |
# 5️⃣ 一句话总结
“没有万能钥匙。” 先明确 组织规模、现有生态、合规/成本,再在 声明式(YAML/GitOps) 与 脚本式(Groovy/Bash) 间权衡。小步快跑、逐步替换,CI/CD 才能真正落地而非“又一个项目”。祝选型顺利!