第一章:Jenkins 简介
了解 Jenkins 的发展历程、核心概念、架构设计和应用场景。
最后更新: 2024-01-15
页面目录
Jenkins 简介
Jenkins 是开源 CI/CD 领域的标杆工具,为软件开发团队提供强大的自动化能力。本章将介绍 Jenkins 的发展历程、核心概念和整体架构。
什么是 Jenkins?
Jenkins 是一个用 Java 编写的开源自动化服务器,主要用于:
- 持续集成 (Continuous Integration):频繁地将代码变更集成到共享主线
- 持续交付 (Continuous Delivery):自动构建、测试和准备代码部署
- 持续部署 (Continuous Deployment):自动将变更部署到生产环境
Jenkins 的历史
| 年份 | 里程碑 |
|---|---|
| 2004 | Hudson 项目启动 |
| 2011 | 因 Oracle 收购 Sun 后的商标争议,Hudson 分支为 Jenkins |
| 2014 | Jenkins 2.0 发布,引入 Pipeline as Code |
| 2016 | Jenkins Evergreen 发布 |
| 2020 | Jenkins X 发布,专注云原生 |
| 2022 | Jenkins 2.361+ 支持 Java 11/17 |
核心概念
1. Job(任务)
Job 是 Jenkins 中的基本工作单元,用于定义一个完整的构建流程:
// Jenkins Pipeline 示例
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
2. Build(构建)
每次 Job 执行产生一个 Build,包含:
- 构建编号(Build Number)
- 构建结果(Success/Failure/Unstable/Aborted)
- 构建日志(Console Output)
- 构建产物(Artifacts)
3. Node/Agent(节点)
Jenkins 架构支持分布式构建:
- Controller(主节点):负责调度任务、管理配置
- Agent(代理节点):实际执行构建任务的worker
4. Plugin(插件)
Jenkins 的核心功能通过插件扩展:
| 插件类别 | 代表插件 |
|---|---|
| 源码管理 | Git, SVN, CVS |
| 构建工具 | Maven, Gradle, Ant |
| 测试框架 | JUnit, TestNG, pytest |
| 部署工具 | Docker, Kubernetes, AWS |
| 通知 | Email, Slack, DingTalk |
Jenkins 架构
┌─────────────────────────────────────────────────────────────────┐
│ Jenkins Controller │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Web UI │ │ API/REST │ │ Scheduler │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Security │ │ Plugin Mgr │ │ Config Store│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓ ↓
┌───────────────────┐ ┌───────────────────┐
│ Agent Node 1 │ │ Agent Node 2 │
│ (Linux) │ │ (Windows) │
└───────────────────┘ └───────────────────┘
↓ ↓
┌───────────────────┐ ┌───────────────────┐
│ Executor 1 │ │ Executor 1 │
│ Executor 2 │ │ Executor 2 │
└───────────────────┘ └───────────────────┘
为什么选择 Jenkins?
优势
- ✅ 开源免费:完全免费,无授权费用
- ✅ 插件生态:2,000+ 官方插件
- ✅ 跨平台:支持 Linux、Windows、macOS
- ✅ 易于扩展:开放的插件开发 API
- ✅ 活跃社区:丰富的文档和社区支持
- ✅ 灵活配置:支持 Freestyle 和 Pipeline 两种方式
适用场景
| 场景 | 推荐配置 |
|---|---|
| 小型团队 | 单节点 + 必要插件 |
| 中型团队 | 主节点 + 多个代理节点 |
| 大型企业 | 高可用集群 + Kubernetes |
Jenkins 与其他 CI/CD 工具对比
| 特性 | Jenkins | GitLab CI | GitHub Actions | CircleCI |
|---|---|---|---|---|
| 费用 | 免费 | 免费/付费 | 免费/付费 | 免费/付费 |
| 自托管 | ✅ | ✅ | ❌ | ❌ |
| 插件生态 | 丰富 | 中等 | 有限 | 有限 |
| 学习曲线 | 中等 | 低 | 低 | 中等 |
| Pipeline即代码 | ✅ | ✅ | ✅ | ✅ |
常用术语表
| 术语 | 说明 |
|---|---|
| Build | 一次构建执行 |
| Downstream | 依赖当前构建的下游任务 |
| Upstream | 触发当前构建的上游任务 |
| Artifact | 构建产物,如 JAR、Docker 镜像 |
| Workspace | Jenkins 在节点上分配的工作目录 |
| Executor | 节点上并行执行构建的槽位 |
下一步
现在您已经了解了 Jenkins 的基本概念,接下来让我们学习如何安装和配置 Jenkins。
👉 安装指南
📖 扩展阅读: