Jenkins 是一款开源 CI/CD 自动化服务器,基于 Java 跨平台运行。内置 1800+ 插件、Pipeline 流水线、Master-Agent 分布式架构,Git/Docker/K8s 一键集成,是 DevOps 团队自动化构建测试部署的事实标准。
🎤 引言
说到持续集成与持续交付,几乎每个 DevOps 工程师的电脑上都有一个 Jenkins 在跑。这个诞生于 2011 年的开源工具(前身是 Hudson,源自 Kohsuke Kawaguchi 在 Sun Microsystems 的内部项目),如今在 GitHub 上已经积累了 26k Stars、9.7k Forks、38,510 次 Commits,是 CI/CD 领域当之无愧的事实标准。
为什么 Jenkins 能在 GitHub Actions、GitLab CI、CircleCI 这么多后起之秀的围攻下依然稳坐钓鱼台?答案藏在它那 1800+ 的插件生态里。从 Java 到 Python,从 Docker 到 Kubernetes,从 Slack 到钉钉,几乎所有你能想到的工具链节点,都有现成的插件帮你对接。这不是技术有多炫,而是生态足够深。
⭐ 核心功能
Jenkins 之所以二十多年长盛不衰,靠的是这八个核心能力:
1. 持续集成与持续交付(CI/CD)
根据官方文档描述,Jenkins 可以作为简单的 CI 服务器使用,也可以扩展为整个项目的持续交付中枢。从代码拉取、编译构建、单元测试、集成测试到部署发布,全流程自动化编排。
2. Pipeline as Code(Jenkinsfile)
支持将流水线写成 Jenkinsfile,与代码一同纳入版本控制。声明式(Declarative)和脚本式(Scripted)两种语法并存,复杂工作流也能清晰表达。
3. 1800+ 插件生态
内置插件中心覆盖 Git、Docker、Maven、Gradle、Node.js、Selenium、Kubernetes、AWS、Slack 等几乎所有主流工具链。需要什么装什么,组合出最适合自己团队的流水线。
4. Master-Agent 分布式架构
主节点负责任务调度,从节点(Agent/Slave)执行具体构建。任务可分发到不同操作系统、不同配置的机器上并行运行,大幅提升构建效率。
5. 跨平台运行
基于 Java 构建,提供 Windows、Linux、macOS 以及各种 Unix-like 系统的原生安装包,一套配置多端运行。
6. Web GUI 配置
通过浏览器即可完成绝大部分配置工作,包含 on-the-fly 错误检查和内置帮助文档,对新手友好。
7. REST API 扩展
提供 Python、XML、JSON 三种风格的远程 API,方便与外部系统对接,实现更深度的自动化。
8. 技术栈无关
支持 Java、Python、Node.js、Go、.NET、Ruby 等几乎所有主流编程语言,不用为了 CI 工具改变技术选型。
📥 安装使用
Jenkins 的安装方式非常灵活,这里介绍三种最常用的方案。
方式一:Docker 部署(推荐)
最快的上手方式,一条命令搞定:
docker run -d \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts-jdk17容器启动后访问 http://localhost:8080,按提示输入初始管理员密码(密码在容器日志或 /var/jenkins_home/secrets/initialAdminPassword 文件中)。
方式二:WAR 包部署
下载 jenkins.war 后直接运行:
java -jar jenkins.war --httpPort=8080适合不想用 Docker 又想快速验证的环境。
方式三:系统包管理器
# Ubuntu/Debian
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \
/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update && sudo apt install jenkins -y
# macOS
brew install jenkins-lts
# Windows
# 使用官方 MSI 安装包初始化配置
首次启动后建议安装推荐插件集,创建一个管理员账号,然后就可以开始新建第一个 Job 了。Pipeline 项目类型是当下最推荐的选择,配合 Jenkinsfile 体验最佳。
一个最小化的 Jenkinsfile 示例:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'echo Building...'
}
}
stage('Test') {
steps {
sh 'echo Testing...'
}
}
stage('Deploy') {
steps {
sh 'echo Deploying...'
}
}
}
}更多安装细节参考 Jenkins 官方安装文档。
🎯 适用场景
Jenkins 不是万能的,但它在以下场景里表现非常稳:
- 传统企业 DevOps 转型:需要本地化部署、满足合规要求(如 HIPAA、GDPR),Jenkins 的自托管特性正好契合。
- 多语言技术栈团队:团队同时维护 Java、Python、前端等多种语言项目,Jenkins 的技术栈无关性能省去大量适配成本。
- 重度定制化流水线:业务流非常复杂,需要灵活的钩子和扩展点,1800+ 插件 + 脚本能力可以堆出任何想要的工作流。
- 已有 Jenkins 资产的大型组织:迁移成本太高,继续用 Jenkins + 加 Jenkins X 或 CloudBees 现代化是更现实的选择。
🔍 对比/替代方案
横向对比几款主流 CI/CD 工具,帮你看清 Jenkins 的位置:
Jenkins vs GitLab CI/CD
GitLab CI 与 GitLab 仓库深度绑定,YAML 配置体验统一,适合 GitLab 一站式用户;Jenkins 不绑定仓库,灵活性更高,但配置更分散。GitLab CI 是自托管免费,Jenkins 是本地托管免费。
Jenkins vs GitHub Actions
GitHub Actions 对 GitHub 仓库原生支持极佳,Marketplace 插件市场也很成熟,公有仓库免费额度充足;Jenkins 在自托管、私有仓库、跨平台 Agent 调度上更胜一筹。
Jenkins vs CircleCI
CircleCI 是云优先的代表,开箱即用体验好,但本地部署能力弱;Jenkins 几乎只用于本地部署,配置自由度更高但维护成本也更高。
Jenkins vs Drone
Drone 是 Docker 原生 CI 工具,配置文件即 Dockerfile,容器化体验拉满;Jenkins 的容器支持更像是事后补充,没有 Drone 那样原生。
简单总结:Jenkins 适合需要自托管、生态深度、跨语言、深度定制的团队;如果你是单一云平台用户且不需要复杂流水线,GitHub Actions / GitLab CI / CircleCI 上手更轻。
⚠️ 注意事项
用了这么多年 Jenkins,踩过几个坑,分享给准备上手的朋友:
1. Java 版本兼容
Jenkins 不同版本对 JDK 要求不同,老项目还在跑 Jenkins 2.150 配 JDK 8,新版本则要求 JDK 11 或 17。升级前一定看 LTS 版本说明。
2. 插件兼容性陷阱
插件之间存在依赖关系,盲目升级核心插件可能导致整条流水线挂掉。生产环境升级前,先在测试环境跑一遍再动手。
3. Master 单点风险
默认架构下 Master 既负责调度也承担 Web UI,繁忙时容易成为瓶颈。建议将构建任务全部下放到 Agent,Master 只做调度。
4. 容器化支持是"加补丁"而非原生
Jenkins 诞生时还没有容器概念,架构上不是 Cloud Native。Docker 支持是后来加的,与 Jenkins X 的容器化思路有差距。如果团队是云原生重度用户,建议评估下 Tekton 或 Argo Workflows。
5. 维护成本
Jenkins 本身是免费,但插件升级、Agent 维护、备份、升级、安全补丁这些隐性成本不低。中小团队如果没有专职运维,建议谨慎评估。
✅ 总结
Jenkins 是一款老牌但依然能打的 CI/CD 工具。它的优势在于生态深度(1800+ 插件)、架构灵活(Master-Agent)、跨语言跨平台、永久免费开源。它的短板在于容器化不够原生、Master 单点、维护成本偏高、上手门槛不低。
推荐人群:需要自托管、有多语言项目、对流水线定制要求高的中大型团队;GitHub Stars 26k、9.7k Forks、3.4k Issues 的活跃社区意味着这工具还会持续迭代下去。
如果你刚入门 CI/CD,Jenkins 可能不是最快的选择;但如果你需要一个能陪你走 5-10 年的工作流引擎,Jenkins 依然是稳妥的答案。