跳到主要内容

Jenkins 基础与架构

Jenkins 是一套主从(Master/Agent)架构的自动化平台。理解它的运行模型,是后续排障和性能调优的基础。

本篇目标:能画出 Jenkins 的部署拓扑,解释构建请求如何流转,并知道它与 GitLab CI、Argo CD 的分工边界。


1. Jenkins 核心概念​

概念是什么一句话
Master(Controller)Jenkins 主进程管理配置、调度构建、提供 Web UI 与 API
Agent(Executor)执行构建的节点接收 Master 派发的 Job,在独立环境中运行流水线
Job / 项目一个自动化任务绑定源码、触发方式、流水线脚本
Node可运行构建的机器包括内置节点(master)和 Agent 节点
Executor节点上并发执行槽位一个 Executor 同时只能跑一个构建
构建队列等待执行的任务无空闲 Executor 时构建排队
Workspace构建工作目录检出代码、执行构建、生成产物的位置
插件功能扩展单元与 Git、K8s、通知平台对接的载体

1.1 构建如何流转​

开发者 push 代码
│ webhook
▼
Jenkins Master ──触发 Job──▶ 从代码仓库拉取(SCM)
│
▼
分配到有空闲 Executor 的 Agent ──▶ 在 Workspace 检出源码
│
▼
执行流水线(编译 → 测试 → 打包 → 部署)
│
▼
归档产物 + 发送通知 + 记录结果

2. 主从(Master/Agent)模型​

2.1 为什么不能只用一个进程​

初学者常用"安装 Jenkins 后在本机跑构建"的方式。它的问题:

  • Master 资源被构建挤占:构建吃 CPU/内存,拖慢 Web UI 和调度;
  • 构建环境无法隔离:每个 Job 共享同一个环境,依赖互相污染;
  • 无弹性:构建高峰时执行器固定,队列堆积。

生产推荐 Master 只管调度,Agent 专职执行。

2.2 Agent 的几种形态​

Agent 形态适用场景特点
固定物理机 / 虚拟机有专属构建机的团队环境稳定,需手工维护
Docker 容器(SSH 或 Docker 插件)需要干净隔离环境每次构建用容器,环境可复现
Kubernetes 动态 Pod已有 K8s 集群按需创建/销毁,弹性最好(见第 10 篇)
Windows / Mac 节点需要跨平台构建各平台独立 Agent

2.3 内置节点(master)上不要跑构建​

内置节点默认有 2 个 Executor,建议设为 0 或只跑轻量管理任务。构建应全部交给 Agent,保证 Master 的调度和 UI 响应稳定。


3. 插件机制​

Jenkins 几乎一切能力来自插件。核心插件分层:

层插件举例作用
基础层Pipeline、Credentials、Timestamper流水线语法、凭证存储、日志时间戳
集成层Git、Kubernetes、Docker Pipeline、GitLab对接代码仓库、K8s、容器
交付层Blue Ocean、Notifications(钉钉/飞书)、Email Extension可视化、通知
平台层Folders、Matrix Authorization、LDAP、Audit Trail组织、权限、审计
插件版本与兼容性

插件是 Jenkins 最大风险源之一。升级前先在测试实例验证,关注插件与 Jenkins 版本的兼容矩阵(Plugin Manager 中会标记)。不要在生产无脑"Update All"。


4. 与周边工具的边界​

场景用什么说明
代码托管 + MR 评审GitLab / Gitea / GitHubJenkins 负责 MR 触发的构建,不负责代码评审
平台内置 CIGitLab CI / GitHub Actions与 Jenkins 二选一或并存,各有生态
声明式基础设施Terraform构建 Agent、构建机由 IaC 管理(见 automation/terraform)
容器编排KubernetesJenkins 可部署其上,也用它做动态 Agent
应用部署kubectl / Helm / Argo CDJenkins 负责产出与触发,GitOps 负责持续同步
监控告警Prometheus / Grafana通过 Jenkins 插件暴露指标(见 monitor/prometheus)
Jenkins 与 Argo CD 的分工

典型的现代流水线:Jenkins 负责"构建出可部署的产物"(编译、测试、打镜像),Argo CD 负责"把产物部署到集群并持续同步"。Jenkins 在产物就绪后更新 Git 中的镜像 tag,Argo CD 检测到变更后自动同步。不要把部署逻辑全写进 Jenkins 脚本里与 GitOps 冲突。


5. 验收清单​

  • 能解释 Master、Agent、Executor、构建队列的关系
  • 知道为什么生产不在内置节点跑构建
  • 知道 Agent 的三种常见形态(固定机 / 容器 / K8s Pod)
  • 能说清 Jenkins 与 GitLab CI、Argo CD 的分工边界
  • 了解插件升级前需先验证兼容性

下一篇:Jenkins 安装部署。