云计算百科
云计算领域专业知识百科平台

【CI/CD·入门篇】工具链全景:Jenkins、GitLab CI、GitHub Actions、Drone 对比选型

前言

了解了 CI/CD 的三个层次,接下来就是选工具。市面上的 CI/CD 工具不下二十种,但真正在企业中广泛使用的就那么几个。本篇对比四个主流工具的优劣势,帮你在搭建平台时做出正确的选型决策。


一、四大工具速览

| 工具 | 出身 | 架构 | 核心配置方式 | 部署方式 |

|——|——|——|————-|———|

| Jenkins | Sun/CloudBees | 主从架构 | Jenkinsfile (Groovy DSL) | 自托管 |

| GitLab CI | GitLab | Runner 架构 | .gitlab-ci.yml (YAML) | 自托管/SaaS |

| GitHub Actions | Microsoft/GitHub | Runner 架构 | YAML | SaaS/自托管 Runner |

| Drone | Drone.io | Server+Agent | .drone.yml (YAML) | 自托管/SaaS |


二、Jenkins:老牌全能选手

架构

┌──────────────────────────────────┐
│ Jenkins Master │
│ ┌─────────┐ ┌────────────────┐ │
│ │ Web UI │ │ Job Scheduler │ │
│ │ (管理) │ │ (任务调度) │ │
│ └─────────┘ └───────┬────────┘ │
│ ┌───────┴────────┐ │
│ │ Plugin System │ │
│ │ (插件生态) │ │
│ └────────────────┘ │
└──────────────────┬─────────────────┘
│ 分发任务
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Agent 1 │ │ Agent 2 │ │ Agent 3 │
│ (Java) │ │ (Docker) │ │ (K8s) │
└─────────┘ └─────────┘ └─────────┘

优势

  • **插件生态最丰富**:1800+ 插件,几乎能集成一切工具
  • **灵活性极高**:Groovy DSL 可以实现复杂逻辑
  • **社区成熟**:问题几乎都能在 Stack Overflow 上找到答案
  • **免费开源**:无许可费用

劣势

  • **维护成本高**:Jenkins 本身需要维护,插件升级经常出兼容性问题
  • **UI 老旧**:界面体验停留在2010年代
  • **Groovy 门槛**:Pipeline 语法对非 Java 团队不友好
  • **资源占用大**:JVM 启动慢,内存占用高

最小安装示例

# Docker 方式启动 Jenkins
docker run -d \\
–name jenkins \\
-p 8080:8080 \\
-p 50000:50000 \\
-v jenkins_home:/var/jenkins_home \\
-v /var/run/docker.sock:/var/run/docker.sock \\
jenkins/jenkins:lts-jdk17

# 获取初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

适用场景

  • 需要深度定制流水线逻辑
  • 团队以 Java 技术栈为主
  • 有专职 DevOps 团队维护 Jenkins
  • 需要与大量传统工具集成

三、GitLab CI:一体化的最佳实践

架构

┌──────────────────────────────────────┐
│ GitLab 实例 │
│ ┌──────────┐ ┌──────────────────┐ │
│ │ Git 仓库 │ │ CI/CD 调度器 │ │
│ │ (代码) │ │ (Pipeline 执行) │ │
│ └──────────┘ └────────┬─────────┘ │
└─────────────────────────┼────────────┘
│ 分发任务
┌──────────────┼──────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Runner 1│ │ Runner 2│ │ Runner 3│
│ (shell) │ │ (docker)│ │ (k8s) │
└─────────┘ └─────────┘ └─────────┘

优势

  • **代码与 CI 一体化**:不需要单独维护 CI 系统
  • **YAML 配置**:比 Groovy 更直观,团队上手快
  • **内置功能完整**:CI/CD + 制品库 + 安全扫描 + 看板一体化
  • **Kubernetes 原生支持**:内置 Auto DevOps

劣势

  • **绑定 GitLab**:如果代码不在 GitLab 上就没法用
  • **Runner 管理复杂**:Runner 扩缩容需要额外方案
  • **重型应用**:GitLab 自身资源占用不小

Runner 安装示例

# 注册一个 Docker 类型的 Runner
docker run –rm -it \\
-v /srv/gitlab-runner/config:/etc/gitlab-runner \\
gitlab/gitlab-runner:latest register \\
–url https://gitlab.com \\
–token YOUR_REGISTRATION_TOKEN \\
–executor docker \\
–docker-image "alpine:latest" \\
–description "docker-runner"

适用场景

  • 代码托管在 GitLab 上(自建或 SaaS)
  • 希望 CI/CD 与代码仓库深度一体化
  • 团队技术栈多样,不只有 Java
  • 中大型团队,需要权限管理和多环境隔离

四、GitHub Actions:云原生的后起之秀

架构

┌──────────────────────────────┐
│ GitHub 平台 │
│ ┌──────────┐ ┌───────────┐ │
│ │ Git 仓库 │ │ Actions │ │
│ │ │ │ Workflow │ │
│ └──────────┘ │ Engine │ │
│ └─────┬─────┘ │
└─────────────────────┼────────┘

┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ GitHub │ │ GitHub │ │ 自托管 │
│ 托管Runner│ │ 托管Runner│ │ Runner │
│ (Linux) │ │ (Windows)│ │ (私有) │
└──────────┘ └──────────┘ └──────────┘

优势

  • **零运维**:GitHub 托管 Runner 开箱即用
  • **Marketplace 生态**:大量社区 Action 可直接复用
  • **YAML 配置**:简洁易懂
  • **免费额度**:公开仓库无限免费,私有仓库2000分钟/月免费

劣势

  • **绑定 GitHub**:代码必须在 GitHub 上
  • **私有部署的 Runner 需要自维护**
  • **复杂场景下调试困难**:日志查看不如 Jenkins 直观

自托管 Runner 安装

# 在你的服务器上注册自托管 Runner
mkdir actions-runner && cd actions-runner
curl -o actions-runner-linux-x64-2.317.0.tar.gz -L \\
https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
tar xzf actions-runner-linux-x64-2.317.0.tar.gz

# 配置(Token 从 GitHub 仓库 Settings → Actions → Runners 获取)
./config.sh –url https://github.com/your-org/your-repo –token YOUR_TOKEN

# 安装为系统服务并启动
sudo ./svc.sh install
sudo ./svc.sh start

适用场景

  • 代码托管在 GitHub 上
  • 开源项目(免费额度无限)
  • 小型团队或初创公司(不想维护 CI 基础设施)
  • 需要丰富的社区 Action

五、Drone:轻量级的云原生选手

架构

┌──────────────────────────────────┐
│ Drone Server │
│ ┌─────────────┐ ┌────────────┐ │
│ │ Web UI │ │ Scheduler │ │
│ └─────────────┘ └──────┬─────┘ │
└──────────────────────────┼────────┘

┌────────────┼────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Drone │ │ Drone │ │ Drone │
│ Agent 1 │ │ Agent 2 │ │ Agent 3 │
└─────────┘ └─────────┘ └─────────┘

优势

  • **极致轻量**:Go 编写,启动快,资源占用小
  • **纯 Docker 执行**:每步都在容器中运行,环境隔离好
  • **YAML 配置**:极简语法
  • **性能好**:比 Jenkins 快很多

劣势

  • **社区小**:插件和文档不如前三者丰富
  • **功能有限**:复杂场景需要自己写插件
  • **UI 简陋**:功能够用但不够好看

安装示例

# docker-compose.yml
version: '3'
services:
drone-server:
image: drone/drone:2
ports:
– "80:80"
– "443:443"
volumes:
– drone-data:/data
– /var/run/docker.sock:/var/run/docker.sock
environment:
– DRONE_GITHUB_CLIENT_ID=${GITHUB_CLIENT_ID}
– DRONE_GITHUB_CLIENT_SECRET=${GITHUB_CLIENT_SECRET}
– DRONE_RPC_SECRET=${RPC_SECRET}
– DRONE_SERVER_HOST=drone.mycompany.com
– DRONE_SERVER_PROTO=https

drone-runner:
image: drone/drone-runner-docker:1
environment:
– DRONE_RPC_PROTO=http
– DRONE_RPC_HOST=drone-server
– DRONE_RPC_SECRET=${RPC_SECRET}
– DRONE_RUNNER_CAPACITY=2

volumes:
drone-data:

适用场景

  • 追求轻量和高性能
  • 团队技术能力强,不依赖丰富插件
  • 已有 Docker 基础设施

六、选型决策矩阵

| 维度 | Jenkins | GitLab CI | GitHub Actions | Drone |

|——|———|———–|—————|——-|

| 上手难度 | 中高 | 中 | 低 | 低 |

| 配置方式 | Groovy DSL | YAML | YAML | YAML |

| 插件生态 | ★★★★★ | ★★★★ | ★★★★ | ★★ |

| 维护成本 | 高 | 中 | 低 | 低 |

| 自托管 | 是 | 是 | 部分(Runner) | 是 |

| K8s 集成 | 需插件 | 原生 | 自托管 | 原生 |

| 私有化部署 | 是 | 是 | Runner可自托管 | 是 |

| 费用 | 免费 | 免费/付费版 | 免费+付费 | 免费/付费 |

选型建议

初创团队 / 开源项目:GitHub Actions,零运维成本,直接用

中大型企业 / 代码在 GitLab:GitLab CI,一体化优势太大

传统企业 / 复杂流水线 / Java 技术栈:Jenkins,插件生态无敌

追求轻量 / 已有 Docker 环境:Drone,简单高效

**培训要点**:不要被"某某工具更好"的说法左右。工具选型的核心标准是——你的代码在哪里托管、团队最熟悉什么、有没有专职运维人员。满足这三点的工具就是好工具。


七、本篇要点回顾

1. 四大工具各有所长:Jenkins 重定制、GitLab CI 重一体化、GitHub Actions 重便捷、Drone 重轻量

2. 架构上分两类:Jenkins 的主从架构 vs 其他三者的 Runner/Agent 架构

3. 配置语言趋势:从 Groovy DSL 向 YAML 发展,降低上手门槛

4. 选型核心标准:代码托管位置 + 团队熟悉度 + 运维能力

5. 没有最好的工具,只有最合适的工具

下一篇预告:《CI/CD与DevOps的关系:文化、工具与实践的融合》——从工具选型回到方法论层面,理解 CI/CD 在 DevOps 体系中的定位。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 【CI/CD·入门篇】工具链全景:Jenkins、GitLab CI、GitHub Actions、Drone 对比选型
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!