CI/CD 工具怎么选
团队做持续集成/持续部署,最容易在”用哪个工具”上纠结。Jenkins、GitLab CI、GitHub Actions 三者定位差异很大,选错会让你后期迁移成本极高。本文从实操角度做个横向对比。
一、Jenkins:老牌自托管王者
优点:
- 插件生态极其丰富,几乎没有它干不了的。
- 完全自托管,数据和安全边界都在自己手里。
- Pipeline 用 Groovy 写,表达力强。
缺点:
- 要专人维护(升级、插件冲突、节点管理)。
- 配置即代码门槛高,新人上手慢。
pipeline {
agent any
stages {
stage('Build') { steps { sh 'mvn package' } }
stage('Deploy') { steps { sh './deploy.sh' } }
}
}
二、GitLab CI:代码仓库自带流水线
优点:
- 和 GitLab 仓库深度集成,权限/MR 联动天然顺滑。
- 用
.gitlab-ci.yml声明,学习成本低。 - Runner 可自托管,也能用共享 Runner。
stages: [build, test, deploy]
build:
stage: build
script:
- mvn package
deploy:
stage: deploy
only: [main]
script:
- ./deploy.sh
三、GitHub Actions:生态驱动的云原生方案
优点:
- Marketplace 海量 Action,几行就能接第三方。
- 托管 Runner 开箱即用,不用管基础设施。
- YAML 语法直观,和仓库绑定。
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: mvn package
四、横向对比
| 维度 | Jenkins | GitLab CI | GitHub Actions |
|---|---|---|---|
| 部署方式 | 必须自托管 | 自托管/共享 | 托管为主 |
| 学习曲线 | 陡 | 中 | 平缓 |
| 维护成本 | 高 | 低-中 | 极低 |
| 生态 | 插件最多 | 中等 | Marketplace 丰富 |
| 私有化要求 | 天然支持 | 支持 | 需 GHES |
五、选型建议
- 代码在 GitLab、要私有化、团队有运维 → GitLab CI,集成最省心。
- 代码在 GitHub、追求快速上手、不想管机器 → GitHub Actions,托管 Runner 真香。
- 极端复杂的流水线、特殊插件需求、强合规私有化 → Jenkins 仍不可替代。
- 小团队/个人项目 → 优先 GitHub Actions 或 GitLab CI,别碰 Jenkins 的维护坑。
小结
工具没有绝对好坏,只有匹配不匹配。个人站点和中小团队,能用托管 Runner 就别自托管 Jenkins——把精力留给业务,而不是伺候 CI 服务器。




