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)分组
Runbook 视角: 在自动化部署验证中,Pipeline 是 Runbook 的“剧本”,Job 是“演员”,Node/Agent 是“舞台”,Executor 是“舞台上的工位”,View 是“节目单”。理解这个比喻有助于后续章节的编排设计。

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)。

关键配置: Agent 的标签(Label)用于将特定 Job 调度到特定环境。例如,标签 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 的协作流程。

Jenkins 核心架构关系图 Master 节点 调度器 + UI + 配置 Executor: 2 Agent 1 (Linux) 标签: docker Executor: 4 Agent 2 (Windows) 标签: windows Executor: 2 Job 队列(等待调度) Job-A (docker) | Job-B (windows) | Job-C (any) Executor 槽位分配示例 Master-Exec1 Agent1-Exec1 Agent1-Exec2 Agent2-Exec1 Agent2-Exec2

2.4 View 分组与 Runbook 联动

在自动化部署验证场景中,View 用于按环境或服务对 Job 进行分组。下图展示了一个典型的 View 组织方式:

View 分组示例:按环境组织 Job View: Dev 环境 build-service-a deploy-service-a integration-test View: Staging 环境 build-service-a deploy-service-a smoke-test View: Production 环境 deploy-service-a canary-deploy rollback
注意: View 只提供逻辑分组,不提供安全隔离。如果需要严格的权限控制,应使用 Jenkins 的“项目级矩阵授权策略”或“文件夹(Folder)”功能。

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。