第一章: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。

👉 安装指南


📖 扩展阅读: