2. Jenkins 核心概念:Job、Pipeline、Node、Agent、Executor、View
Jenkins 作为自动化运维与 CI/CD 的核心引擎,其架构由一组清晰的概念构成。理解 Job、Pipeline、Node、Agent、Executor 和 View 是编写 Runbook 并联动事件触发部署的基础。下面逐一拆解这些概念及其在自动化流程中的角色。
2.1 概念总览与关系
下表从定义、职责和典型场景三个维度对比这六个核心概念,帮助你快速建立整体认知。
| 概念 | 定义 | 核心职责 | Runbook 典型场景 |
|---|---|---|---|
| Job | Jenkins 中可执行的最小任务单元 | 定义“做什么”:构建、测试、部署等 | 一个 Job 对应一次微服务部署 |
| Pipeline | 以代码形式编排的 Job 执行流程 | 定义“怎么做”:阶段、步骤、条件 | Jenkinsfile 描述构建→测试→部署 |
| Node | Jenkins 环境中的物理或虚拟机器 | 提供计算资源,运行 Job 或 Pipeline | Master 节点调度,Worker 节点执行 |
| Agent | 连接到 Master 并执行任务的远程节点 | 分布式执行,隔离环境 | Kubernetes Pod 作为临时 Agent |
| Executor | Node 上并发执行任务的工作槽位 | 控制并行度,限制资源占用 | 每个 Agent 配置 2 个 Executor |
| View | Job 的逻辑分组与仪表盘视图 | 分类展示,权限隔离 | 按环境(dev/staging/prod)分组 |
2.2 核心概念详解
2.2.1 Job(任务)
Job 是 Jenkins 中最基本的可配置任务。一个 Job 可以是一个自由风格项目(Freestyle project),也可以是一个 Pipeline 项目。在自动化 Runbook 中,每个部署步骤通常对应一个或多个 Job。
- 自由风格 Job: 通过 UI 配置 SCM、构建触发器、构建步骤。适合简单任务。
- Pipeline Job: 通过 Jenkinsfile 定义完整流程,适合复杂部署流水线。
- 多分支 Pipeline: 自动为每个 Git 分支创建对应的 Pipeline Job。
2.2.2 Pipeline(流水线)
Pipeline 是 Jenkins 2.x 的核心特性,它将 Job 的执行流程以代码形式(Jenkinsfile)管理。Pipeline 支持两种语法:
- 声明式(Declarative): 结构清晰,适合大多数场景。
- 脚本式(Scripted): 更灵活,适合复杂逻辑。
一个典型的声明式 Pipeline 结构如下:
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building...'
}
}
stage('Test') {
steps {
echo 'Testing...'
}
}
stage('Deploy') {
steps {
echo 'Deploying...'
}
}
}
}
2.2.3 Node(节点)
Node 是 Jenkins 架构中的计算资源抽象。Jenkins 环境至少包含一个 Master 节点,可以添加多个 Worker 节点(即 Agent)。
- Master 节点: 负责调度、管理 UI、存储配置。不建议在 Master 上执行繁重任务。
- Worker 节点: 执行具体的构建、测试、部署任务。
2.2.4 Agent(代理)
Agent 是实际执行任务的远程节点。Agent 通过 JNLP 或 SSH 协议连接到 Master。在云原生场景下,Agent 可以动态创建和销毁(如 Kubernetes Pod)。
docker 的 Agent 只运行容器化部署任务。
2.2.5 Executor(执行器)
Executor 是 Node 上并发执行任务的“槽位”。每个 Node 可以配置多个 Executor,控制并行任务数量。
- 默认值: Master 节点通常配置 2 个 Executor,Agent 节点根据 CPU/内存配置。
- 最佳实践: 不要将 Executor 数量设置过高,避免资源争抢导致任务失败。
2.2.6 View(视图)
View 用于对 Job 进行逻辑分组,方便管理和监控。Jenkins 内置多种视图类型:
- 列表视图(List View): 手动添加 Job 到分组。
- 仪表盘视图(Dashboard View): 显示构建状态、最近构建等。
- 分类视图(Category View): 按 Job 名称自动分组。
2.3 架构关系图
下图展示了 Jenkins 核心组件之间的调度与执行关系,帮助你理解 Master、Agent、Executor 和 Job 的协作流程。
2.4 View 分组与 Runbook 联动
在自动化部署验证场景中,View 用于按环境或服务对 Job 进行分组。下图展示了一个典型的 View 组织方式:
2.5 核心概念对比速查
下表从“是否可编程”、“是否可分布式”、“是否可动态创建”三个维度进一步区分这些概念:
| 概念 | 可编程(代码定义) | 可分布式(跨机器) | 可动态创建 | Runbook 中的角色 |
|---|---|---|---|---|
| Job | 是(Jenkinsfile) | 否(定义在 Master) | 是(通过 API) | 部署动作单元 |
| Pipeline | 是(Jenkinsfile) | 是(Agent 执行) | 是(多分支) | 部署流程编排 |
| Node | 否(配置管理) | 是(Master/Worker) | 是(云插件) | 计算资源池 |
| Agent | 是(标签选择) | 是(远程执行) | 是(K8s 动态 Pod) | 执行环境 |
| Executor | 否(节点配置) | 是(每个 Node 独立) | 否(固定数量) | 并发控制 |
| View | 是(通过 API) | 否(Master 本地) | 是(通过 UI/API) | 监控分组 |
2.6 本章小结
- Job 是执行单元,Pipeline 是编排脚本,两者共同定义“做什么”和“怎么做”。
- Node 是机器抽象,Agent 是远程执行者,Executor 是并发槽位,三者共同构成 Jenkins 的分布式执行能力。
- View 提供逻辑分组,便于在 Runbook 中按环境或服务快速定位 Job。
- 在后续章节中,我们将基于这些概念构建事件触发的自动化部署验证 Runbook。