# 🚀 常用 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️⃣ 选型思考框架

  1. 交付模型

    • 预算够、团队小 ➡️ SaaS 优先(GitHub Actions、CircleCI)
    • 合规/内网 ➡️ 自托管(Jenkins、GitLab Runner、TeamCity)
  2. 生态耦合

    • 已用 GitLab ➡️ 直接上 GitLab CI/CD
    • 已全面 K8s ➡️ “CI + Argo CD/Flux” GitOps
  3. 规模与复杂度

    • 单体/少服务 ➡️ 任何 All‑in‑one 即可
    • 数百服务、多环境 ➡️ Spinnaker / Harness or ArgoCD + Progressive Rollout
  4. 团队技能栈

    • 强脚本能力 ➡️ Jenkins 依旧无敌
    • 想要纯声明式 ➡️ GitOps 工具 or GitHub Workflows
  5. 云厂商绑定

    • 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 才能真正落地而非“又一个项目”。祝选型顺利!

上次更新: 2025/5/11 10:28:00