Skip to main content
☘️ Septvean's Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Jenkins 核心概念

一、Jenkins 是什么?(本质认知)

1️⃣ Jenkins 的本质

Jenkins = 一个任务调度 + 执行的自动化平台

Jenkins 本身不关心你是 Java / Python / Go / 前端

它只关心三件事:

  1. 什么时候执行
  2. 在哪执行
  3. 执行什么

2️⃣ Jenkins 解决了什么问题?

在 Jenkins 出现之前,开发流程是:

写代码 -> 手动 build -> 手动 test -> 手动 deploy -> 出问题回滚

Jenkins 出现之后:

git push -> Jenkins 自动 build -> test -> deploy -> 通知

核心目标:

  • 减少人为操作
  • 提高交付频率
  • 降低发布风险
  • 流程可追溯、可回滚

二、Jenkins 架构核心概念

3️⃣ Controller(Master)

Jenkins 2.x 官方称呼:Controller

职责:

  • 提供 Web UI
  • 管理 Job / Pipeline
  • 调度构建任务
  • 管理插件
  • 管理 Credentials
  • 与 Agent 通信

⚠️ 最佳实践:

Controller 不执行构建任务(executor = 0)

4️⃣ Agent(Node)

实际执行构建任务的工作节点

特点:

  • 可以是物理机 / 虚拟机 / 容器
  • 支持 Linux / Windows / macOS
  • 可根据 Label 指定执行环境

常见类型:

  • SSH Agent
  • JNLP Agent
  • Docker Agent
  • Kubernetes Agent(动态 Pod)

5️⃣ Executor(执行器)

Executor = 并行执行能力

  • 每个 Agent 可设置多个 executor
  • 一个 executor 同时只能跑一个 Job
  • executor = 0 -> 不执行任何构建

生产建议:

  • Controller:0
  • Agent:1~4(看 CPU / IO)

6️⃣ Label(标签)

用于 精准调度 Job 到指定 Agent

例:

linux
docker
java
node
k8s

Pipeline 中使用:

agent { label 'docker' }

三、Jenkins Job & Pipeline 核心概念

7️⃣ Job(项目)

Job = Jenkins 中的一个任务定义

常见 Job 类型:

类型 说明
Freestyle 老式任务(已不推荐)
Pipeline Jenkinsfile 驱动
Multibranch Pipeline 多分支自动化
Folder 组织 Job
Organization Folder GitHub/GitLab 组织

现代 Jenkins = Pipeline + Multibranch Pipeline

8️⃣ Pipeline(流水线)

Pipeline = 一条完整的 CI/CD 流程

特点:

  • 代码化(Pipeline as Code)
  • 可版本控制
  • 可 review
  • 可复现

Pipeline 定义在 Jenkinsfile 中。

9️⃣ Declarative vs Scripted Pipeline

两种 Pipeline 模式:

类型 特点
Declarative 结构清晰、简单、推荐
Scripted 灵活、基于 Groovy

Declarative 示例:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                echo 'build'
            }
        }
    }
}

🔟 Stage / Step / Stage View

  • Stage:逻辑阶段(Build / Test / Deploy)
  • Step:具体命令
  • Stage View:可视化流程

四、源码管理(SCM)与触发机制

1️⃣1️⃣ SCM(Source Code Management)

Jenkins 支持:

  • Git(最常用)
  • GitHub / GitLab / Bitbucket
  • SVN

SCM 只负责:代码来源

1️⃣2️⃣ 触发方式(Triggers)

常见触发机制:

方式 说明
手动 点击 Build
Webhook Git push 自动触发
Poll SCM 定期拉取
cron 定时构建
PR Trigger Pull Request

生产只推荐 Webhook + cron

五、Credentials(凭据)核心理论

1️⃣3️⃣ Credentials 是什么?

Jenkins 统一的密钥管理系统

支持:

  • 用户名 + 密码
  • SSH 私钥
  • Token
  • 文件(kubeconfig)

核心原则:

不把密钥写在 Jenkinsfile 中

1️⃣4️⃣ Credentials Scope(作用域)

  • Global
  • Folder
  • Job
  • Domain

生产推荐:

Global credentials (unrestricted)

六、Jenkins 执行模型(非常重要)

1️⃣5️⃣ Jenkins 执行流程

触发 -> 排队 -> 分配 Agent -> 分配 Executor -> 执行 Pipeline -> 结果存储

如果卡住,排查顺序:

  1. Queue
  2. Agent 在线状态
  3. Executor 数量
  4. Workspace 锁

1️⃣6️⃣ Workspace

Workspace = 构建目录

特点:

  • 每个 Job / Branch 一个 workspace
  • 支持并发构建
  • 可能被锁住

常用清理:

cleanWs()

七、插件系统(Plugin System)

1️⃣7️⃣ 插件的作用

Jenkins = 核心 + 插件

插件负责:

  • Git
  • Docker
  • Kubernetes
  • Credentials
  • UI
  • 通知

⚠️ 插件过多 = 不稳定

企业建议 < 40 个

八、分布式与云原生

1️⃣8️⃣ Jenkins 分布式构建

通过多个 Agent 实现:

  • 横向扩展
  • 资源隔离
  • 多环境构建

1️⃣9️⃣ Jenkins on Kubernetes

核心思想:

Jenkins Controller 稳定运行
Agent 按需创建 Pod,用完即销毁

优势:

  • 弹性
  • 干净
  • 成本低
  • 云原生

九、可靠性、稳定性与安全

2️⃣0️⃣ Jenkins 稳定性三原则

  1. Controller 不跑 Job
  2. Agent 无状态
  3. Jenkinsfile 简洁

2️⃣1️⃣ Jenkins 安全模型

  • RBAC
  • Credentials 加密存储
  • Script Approval
  • CSRF 防护
  • HTTPS

十、总结

Jenkins 是一个以 Pipeline 为核心,通过 Controller 调度、Agent 执行、插件扩展,实现 CI/CD 自动化的任务调度平台。