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

👉 安装指南


📖 扩展阅读