跳到主要内容

基础概念

本章将介绍 Jenkins 的核心概念和术语,帮助你建立对 Jenkins 的整体理解。

Jenkins 架构

Master-Agent 架构

Jenkins 采用主从(Master-Agent)架构,支持分布式构建:

Master(主节点)

  • 负责管理配置和任务调度
  • 维护构建队列
  • 管理插件和凭据
  • 提供 Web 界面和 REST API
  • 可以执行构建任务(但不推荐)

Agent(从节点)

  • 执行具体的构建任务
  • 支持多种操作系统
  • 可以动态创建和销毁
  • 减轻 Master 的负担

核心概念

1. Job(任务/项目)

Job 是 Jenkins 的基本工作单元,代表一个需要执行的任务。

Job 类型

类型说明适用场景
Freestyle自由风格项目简单任务
Pipeline流水线项目复杂 CI/CD
Multibranch Pipeline多分支流水线多分支项目
Organization Folder组织文件夹多仓库管理
Folder文件夹项目分类

Job 配置要素

  • 源码管理(Git、SVN 等)
  • 构建触发器
  • 构建步骤
  • 构建后操作

2. Pipeline(流水线)

Pipeline 是 Jenkins 最强大的功能,使用代码定义整个构建流程。

Pipeline 类型

// Declarative Pipeline(声明式)
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
}
}

// Scripted Pipeline(脚本式)
node {
stage('Build') {
echo 'Building...'
}
stage('Test') {
echo 'Testing...'
}
}

Pipeline 优势

  • 代码化:Pipeline 即代码,可版本控制
  • 可视化:Pipeline Stage View 提供阶段视图
  • 可复用:支持共享库
  • 持久化:即使 Master 重启也能恢复

3. Node(节点)

Node 代表 Jenkins 的执行环境。

节点类型

节点属性

  • 标签(Label):用于选择节点
  • 执行器数量:并行构建数
  • 环境变量:节点特定的变量
  • 工具位置:JDK、Maven 等工具路径

4. Plugin(插件)

Jenkins 的强大之处在于其丰富的插件生态系统。

插件分类

类别代表插件功能
源码管理Git Plugin、SVN Plugin代码拉取
构建工具Maven Plugin、Gradle Plugin项目构建
通知Slack Plugin、Email Plugin消息通知
部署SSH Plugin、Kubernetes Plugin应用部署
安全Role-based Authorization权限管理
集成Docker Plugin、SonarQube工具集成

插件管理

  • 通过 Web UI 安装
  • 自动更新
  • 依赖管理
  • 版本回滚

5. Workspace(工作空间)

每个 Job 在节点上都有一个独立的工作目录。

JENKINS_HOME/
└── workspace/
├── my-project/ # 项目工作空间
│ ├── src/ # 源代码
│ ├── target/ # 构建输出
│ └── .git/ # Git 仓库
└── another-project/ # 另一个项目

工作空间特点

  • 默认在构建前清理(可配置)
  • 可以被多个构建共享
  • 支持并发构建时复制
  • 可自定义路径

6. Build(构建)

Build 是 Job 的一次执行实例。

构建状态

状态图标说明
Success🟢构建成功
Unstable🟡构建完成但有问题
Failure🔴构建失败
Aborted构建被中止
Not Built未构建

构建编号

  • 每次构建自动递增
  • 可通过 ${BUILD_NUMBER} 引用
  • 支持永久保留特定构建

7. Artifact(构建产物)

构建过程中生成的可交付文件。

常见产物

  • JAR/WAR 文件
  • Docker 镜像
  • 测试报告
  • 文档
  • 日志文件

产物管理

pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
}
post {
always {
// 归档产物
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
}
}
}

8. Credential(凭据)

安全存储敏感信息,如密码、密钥、令牌等。

凭据类型

类型用途
Username with password用户名密码
SSH Username with private keySSH 密钥
Secret file秘密文件
Secret text令牌、API Key
Certificate证书

凭据范围

  • System:仅 Jenkins 系统使用
  • Global:所有 Job 可用
  • Folder:特定文件夹内可用

9. Trigger(触发器)

定义何时启动构建。

触发器类型

触发器类型说明示例
定时触发类似 Cron 表达式,定期执行H/15 * * * *(每15分钟)
轮询 SCM定期检查代码变更,有变更则触发*/5 * * * *(每5分钟检查)
Webhook 触发Git push 自动触发,即时响应推荐,响应最快
上游项目触发其他 Job 完成后触发用于构建链
手动触发用户手动点击,支持参数化构建适合需要人工确认的场景

10. Stage(阶段)

Pipeline 中的逻辑步骤,用于组织构建流程。

pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/example/repo.git'
}
}
stage('Build') {
steps {
sh 'mvn clean compile'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
}
stage('Deploy') {
steps {
sh 'mvn deploy'
}
}
}
}

Jenkins 工作流程

典型 CI/CD 流程

构建生命周期

  1. 触发:通过定时、Webhook 或手动触发
  2. 准备:分配节点、创建工作空间
  3. 执行:按 Pipeline 定义执行各阶段
  4. 归档:保存构建产物和报告
  5. 通知:发送构建结果通知
  6. 清理:清理工作空间(可选)

关键术语对照

英文术语中文翻译说明
Master主节点Jenkins 管理节点
Agent/Slave从节点执行构建的节点
Node节点执行环境
Executor执行器并行构建槽位
Job/Project任务/项目构建单元
Build构建一次执行实例
Pipeline流水线代码化构建流程
Stage阶段Pipeline 中的步骤
Step步骤具体操作
Plugin插件功能扩展
Workspace工作空间构建目录
Artifact产物构建输出
Credential凭据敏感信息
Trigger触发器构建启动条件
View视图Job 分组展示

最佳实践

1. 架构设计

  • Master 只负责管理,不执行构建
  • 使用 Agent 执行所有构建任务
  • 根据需求配置不同环境的 Agent

2. Pipeline 编写

  • 使用 Declarative Pipeline 语法
  • 将 Pipeline 代码放入版本控制
  • 使用共享库复用代码

3. 安全管理

  • 使用 Credential 管理敏感信息
  • 配置适当的权限控制
  • 定期更新 Jenkins 和插件

4. 资源管理

  • 合理配置执行器数量
  • 及时清理旧构建
  • 监控磁盘空间使用

下一步

理解这些基础概念后,你可以:

  1. 创建你的第一个 Jenkins Job
  2. 学习 Pipeline 基础语法
  3. 探索 Jenkins 插件生态系统