第44章|Jenkins 入门:为何仍重要、基本概念与安装方式

GitHub Actions、GitLab CI、云厂商流水线像精装交付的列车——买票即走;Jenkins 更像自带车厂与改装车间: 你可以按企业网络、合规、异构工具链任意拼装。本章说清楚它为何在 2026 年仍常见,拆解 controller / agent / executor 的心智模型, 并给出可落地的安装路径与插件治理底线——下一章再开上 Jenkinsfile 高速公路。

Why Jenkins

Still relevant

  • plugins & legacy
  • air-gap / VPC
  • multi-VCS
Model

Brain & hands

  • controller
  • agent + labels
  • workspace
Install

Ship it

  • Docker / K8s
  • packages
  • ops baseline

1. 为什么 Jenkins 还在“主舞台”之一?

不是因为“最新”,而是因为可控边界与可组合性:插件生态覆盖千奇百怪的内部系统;自建控制器能落在私有网络、与 AD/LDAP、制品库、大型机批处理共存。 许多组织已有十年 Jenkins 作业与流水线——迁移成本本身就成了继续使用的理由。 反过来,它的代价也明确:你要自己运维、打补丁、管插件兼容性。选型本质是“买 SaaS 省心 vs 买自由度与锁定规避”。

Jenkins architecture (conceptual) Controller orchestrates; agents execute; plugins extend both sides Controller UI · REST · cron · webhooks Job queue & scheduling Credentials store (backed) Plugin update center · Groovy runtime Agents (nodes) Linux agent labels: docker · jdk17 executors run builds Windows agent labels: msbuild K8s pod elastic Each build gets a workspace (checkout · artifacts · logs) Agent connects inbound (SSH) or controller connects outbound (JNLP/WebSocket)
图 1:控制器负责“接单与记账”,agent 负责“动手”;标签把任务匹配到对的机器或镜像。

2. 核心名词一张表

术语 角色
Controller 调度、存储配置与凭据、提供 Web UI 与 API
Agent / Node 实际执行构建的机器、VM、容器或 pod
Executor 节点上并行槽位:一个 executor 同时跑一个构建
Label 字符串标签,用于把 job 路由到特定 agent 池
Workspace 某次构建的工作目录(检出、产物、日志)

3. Job 类型速览(先建立地图)

4. 安装路径:从笔记本试跑到生产基线

学习阶段用 Docker 最快;生产常见组合是:控制器高可用(或至少持久卷 + 备份)+ 无状态或弹性 agent。 无论哪种方式,提前决定:JENKINS_HOME 持久化备份策略升级窗口出站代理(插件下载、artifact 上传)。

# Quick local trial (official image pattern; pin versions in production)
docker run --rm -d -p 8080:8080 -p 50000:50000 \
  -v jenkins_home:/var/jenkins_home \
  docker.io/jenkins/jenkins:lts-jdk17

# Then open http://localhost:8080 and complete setup wizard
生产提示:不要把控制器同时当重型构建机——CPU/IO 争用会让队列与 UI 卡顿;大编译放到专用 agent 或 Kubernetes 动态 pod。 反向代理(Nginx/Traefik)终止 TLS,并限制管理端口暴露面。
Common deployment shapes Docker (LTS) volume for JENKINS_HOME simple HA: external DB + shared FS (advanced) VM / systemd .deb / .rpm packages fits traditional IT ops Kubernetes Helm chart · ingress · PVC agents as pods (elastic)
图 2:形态不同,但都要回答同一题:数据放哪、如何升级、如何备份。

5. 插件:超能力也是技术债

Jenkins 的强大来自插件;风险也来自插件:供应链(恶意或停更)、版本地狱(与核心 LTS 不兼容)、攻击面(脚本权限)。 基线做法:最小安装、在测试控制器验证升级、锁定 BOM 或插件清单、定期审计“谁在跑 Groovy with full permissions”。

6. 安全底线(入门就必须知道)

Ops burden → ← Flexibility / control SaaS CI low ops · fast start Jenkins you own upgrades Many enterprises live in the middle: hybrid
图 3:没有绝对更好——只有与组织成熟度、合规与团队技能是否匹配。

7. 与 GitHub / GitLab 原生 CI 的取舍

维度 Jenkins 托管 Git + 原生 CI
运维 自建控制器与 agent,补丁与备份自理 供应商承担大部分平台运维
集成深度 插件连接任意内部系统 与同一产品(PR/MR)深度集成
计费模型 基础设施 + 人力 常按分钟/席/托管费
学习曲线 Groovy、插件矩阵、拓扑复杂 YAML 为主,上手快

8. 本章清单

  1. 画一张团队现状图:控制器几台、agent 池、关键插件列表。
  2. 用 Docker 起 LTS 控制器,走完初始化向导,确认 JENKINS_HOME 持久化思路。
  3. 为 agent 规划 label 策略(语言、OS、GPU、可信级别)。
  4. 列出必须的安全开关:认证、授权、凭据、CSRF、代理暴露面。
  5. 预告下一章:把 Freestyle 思维切换到 Jenkinsfile
← 上一章:GitLab CD 下一章:Pipeline 与 Jenkinsfile →