Jenkins 开源 CI/CD 平台概览与版本演进

Jenkins 开源 CI/CD 平台概览与版本演进

Jenkins 是开源的自动化服务器 ,广泛用于持续集成(CI)持续交付/部署(CD) 。本文介绍其核心概念、与 Hudson 的渊源、主要能力、Controller / Agent 架构、优劣与典型场景,并归纳从 1.x2.0 PipelineWeekly/LTS 双轨及近年云原生相关演进。具体行为与支持的 Java 版本以当前官方文档为准:https://www.jenkins.io/


目录

  1. [CI/CD 与 Jenkins 的定位](#CI/CD 与 Jenkins 的定位)
  2. 一条流水线的逻辑阶段(示意)
  3. [发展简史:从 Hudson 到 Jenkins](#发展简史:从 Hudson 到 Jenkins)
  4. 演进时间轴(示意)
  5. 核心能力
  6. 基本架构与触发路径
  7. [任务形态:Freestyle 与 Pipeline](#任务形态:Freestyle 与 Pipeline)
  8. [Declarative 与 Scripted Pipeline](#Declarative 与 Scripted Pipeline)
  9. 优势与挑战
  10. 典型应用场景
  11. 版本与演进脉络
  12. [Weekly 与 LTS 发布线](#Weekly 与 LTS 发布线)
  13. 近代特性与生态(概览)
  14. 生产环境检查清单(参考)
  15. 延伸阅读:与选型文档的衔接
  16. 免责声明

CI/CD 与 Jenkins 的定位

概念 说明
持续集成(CI) 开发者频繁合并代码后,自动拉取、构建、测试,尽早发现集成问题,使主干尽量保持可发布状态。
持续交付/部署(CD) 在 CI 通过的前提下,将制品自动或半自动部署到测试、预发、生产等环境;部署自动化程度与组织策略相关。

Jenkins 通过任务/流水线 编排上述步骤,并依托插件对接源码、构建工具、容器与通知渠道。


一条流水线的逻辑阶段(示意)

源码变更 / 定时 / 手动
拉取 SCM
编译构建
自动化测试
制品归档
部署 / 发布

实际阶段名称与是否自动部署,由 Jenkinsfile 或 Freestyle 配置 决定;F 常需配合审批、蓝绿/金丝雀策略与外围系统。


发展简史:从 Hudson 到 Jenkins

时间 事件
2004--2010 Hudson 在 Sun Microsystems 内部由 Kohsuke Kawaguchi 等发起,用于改善 Java 构建稳定性,后开源并流行。
2010 Oracle 收购 Sun 后,社区与 Oracle 在商标与治理上产生分歧。
2011 社区分叉:项目更名为 Jenkins (同年 Oracle 继续维护 Hudson 分支);此后 Jenkins 成为主流开源 CI 事实标准之一。

现今日常所说 Jenkins 均指 jenkins.io 上的这一条开源线。


演进时间轴(示意)

2004-2010 Hudson 起源与流行 2011 分叉为 Jenkins 2011-2016 1.x 插件与分布式成熟 2016 2.0 Pipeline / Multibranch 2016至今 Weekly + LTS 双轨 2017至今 Blue Ocean / JCasC / K8s Agent Jenkins 主线(简化)


核心能力

能力 说明
构建与测试 支持 Maven、Gradle、Ant 及 Shell/PowerShell 等脚本,覆盖 Java、Python、Go 等多语言。
源码管理 通过插件集成 Git、SVN 等,按分支/标签拉取后触发构建。
流水线即代码(Pipeline as Code) 使用 Groovy DSL 编写 Jenkinsfile,将阶段、步骤、环境纳入版本库,便于评审与复用。
插件生态 大量插件扩展 Docker、Kubernetes、SonarQube、制品库、IM 通知等。
分布式执行 **Controller(主节点)**调度任务,**Agent(从节点)**在 Windows/Linux/macOS 或容器中执行,并行扩展吞吐。
可视化与报告 Web UI 展示构建历史、日志、测试结果趋势;支持邮件与企业 IM 通知。
安全 认证、授权矩阵、CSRF 等机制(具体能力取决于版本与插件配置)。

基本架构与触发路径

Controller
触发构建
Web UI / API
任务队列
插件与 Pipeline 引擎
Git / Webhook / 轮询
Agent 1
Agent 2

角色 说明
Controller 集中配置、插件、任务队列与 UI;也可在本机执行构建(内置 Agent)。
Agent 实际执行构建/测试步骤的节点,可为物理机、VM 或容器化 Agent。

历史文档中曾使用 Master / Slave 称谓,当前官方文档普遍采用 Controller / Agent


任务形态:Freestyle 与 Pipeline

形态 特点 适用
Freestyle / 传统任务 在 UI 中勾选步骤(Shell、Ant、Maven...),配置存 XML 等 简单任务、遗留项目、快速试验
Pipeline Jenkinsfile 描述阶段与步骤,可入库、做 Code Review 团队规范、多环境、复杂编排
Multibranch Pipeline 按仓库分支/PR自动创建流水线 GitFlow、特性分支密集的团队

Declarative 与 Scripted Pipeline

类型 特点
Declarative Pipeline pipeline { stages { stage { steps } } } 结构固定,校验严格,适合规范团队与新手入门
Scripted Pipeline node { ... } 内任意 Groovy,灵活,适合复杂逻辑与库封装

二者可结合使用;团队宜在文档中约定默认风格。


优势与挑战

优势 挑战
开源、社区大、案例与资料多 Pipeline Groovy 与插件组合对新手学习曲线陡
跨平台(运行于 JVM 插件版本矩阵需持续维护,升级需回归
插件覆盖广、可定制强 默认/经典 UI 的现代化程度常弱于部分新生代产品
适合从中小团队到企业级多种规模 生产环境需专门关注安全加固、备份与权限

典型应用场景

场景 示例
后端 / 微服务 CI/CD 编译、单测、镜像构建、推送仓库、部署到 K8s/VM
前端 / 移动端 npm build、移动端打包、上传测试分发平台
容器与云原生 构建镜像、调用 Kubernetes 插件、滚动发布
运维自动化 定时巡检、备份、清理等脚本化任务(需注意权限与审计)

版本与演进脉络

Hudson 时期(约 2004--2011)

Hudson 解决 Sun 内部及社区的持续构建需求,与当时 CruiseControl 等相比更易用,曾获 JavaOne Duke's Choice 等奖项;后因治理分叉为 JenkinsHudson 两线。

Jenkins 1.x(约 2011--2016)

奠定 Web UI、插件模型、分布式 Master-Agent(现称 Controller-Agent) ;大量任务以 Freestyle 等形式配置,配置可落盘为 XML 等。

Jenkins 2.0 与 Pipeline(约 2016 前后)

  • Pipeline :用 Jenkinsfile(Groovy)描述完整 CD 流水线。
  • Multibranch Pipeline:按 Git 分支自动创建流水线。
  • UI 与安全默认策略持续改进。

产品定位从「任务运行器」强化为「流水线自动化平台」。

双轨发布(约 2016 至今)

见下节 Weekly / LTS

体验与云原生(约 2017 至今)

  • Blue Ocean:更直观的流水线可视化 UI(插件形态)。
  • Declarative Pipeline :相对 Scripted Pipeline 更规整的声明式语法。
  • Configuration as Code(JCasC):用 YAML 等描述系统级配置。
  • Jenkins X :面向 Kubernetes / GitOps 的延伸项目(演进过程以官方仓库为准)。
  • JVM 升级 :核心逐步要求 Java 11+ ,并向 Java 17 / 21 等 LTS 对齐;升级前需核对 插件兼容性
  • Kubernetes 集成:动态 Agent、在云环境中弹性拉起构建 Pod 等模式普及。
  • 可观测性 :如 Prometheus 指标插件等,便于与监控栈对接。

Weekly 与 LTS 发布线

发布线 特点 典型受众
Weekly 发布频繁,包含最新功能与修复 愿意跟随新版本、自行验证的团队
LTS(Long-Term Support) 固定基线版本,长期安全与修复补丁(约每数周一补丁节奏的量级,以公告为准) 生产环境优先选用 LTS

升级 LTS 前应阅读 changelog升级指南 ,并在预发 Controller 上验证插件集。


近代特性与生态(概览)

方向 内容
流水线 Scripted / Declarative Pipeline、Jenkinsfile 入库与 Code Review
配置治理 JCasC、制品与密钥凭据管理
运行环境 容器化 Controller/Agent、K8s 动态 Agent
替代与并存 团队也可能采用 GitLab CI、GitHub Actions、Tekton 等;Jenkins 仍是自托管、强插件定制场景常见选择

生产环境检查清单(参考)

建议
版本 生产使用 LTS;升级前在沙箱 Controller 全量插件冒烟
备份 定期备份 JENKINS_HOME(任务配置、插件、密钥库)
凭据 使用 Credentials Binding ,避免在 Jenkinsfile 明文写密钥
权限 启用 RBAC,按角色最小授权;审计敏感 Job
网络安全 Controller 不暴露公网裸端口;Agent 与 Controller 间 TLS/专线
插件 只装必要插件,关注 安全通告,及时更新
CSRF / 反向代理 按官方文档配置 反向代理 与 CSRF 相关项

延伸阅读:与选型文档的衔接

GitHub Actions、GitLab CI、Tekton、Argo CD 等如何取舍,见同目录 CI/CD 平台选型对比:与 Jenkins 同类的方案


免责声明

许可证以 Jenkins 发行版及插件各自声明为准;生产部署请遵循官方安全与升级文档。


主题:Jenkins、CI/CD、Pipeline、Controller/Agent、LTS。

相关推荐
世人万千丶3 小时前
Flutter 框架跨平台鸿蒙开发 - 宠物语言翻译器应用
学习·flutter·华为·开源·harmonyos·鸿蒙
OctShop大型商城源码3 小时前
连锁商城开源_OctShop大型商城系统_零售业数字化转型新引擎
开源·商城源码·连锁商城系统·大型多用户商城系统
Are_You_Okkk_3 小时前
AI原生与外挂的区别:开源知识库的优势及优化方向
大数据·人工智能·开源
提子拌饭1333 小时前
番茄时间管理:鸿蒙Flutter 实现的高效时间管理工具
android·flutter·华为·架构·开源·harmonyos·鸿蒙
提子拌饭1334 小时前
星芒便签:鸿蒙Flutter框架 实现的美观便签应用
flutter·华为·架构·开源·harmonyos·鸿蒙
@不误正业4 小时前
第04章-开源鸿蒙的架构概览
架构·开源·harmonyos
独特的螺狮粉4 小时前
开源鸿蒙跨平台Flutter开发:近视防控数字疗法:基于 Flutter 的眼动物理追踪与睫状肌动力学舒缓测绘架构
flutter·华为·架构·开源·harmonyos·鸿蒙
世人万千丶4 小时前
Flutter 框架跨平台鸿蒙开发 - 家庭健康档案云应用
学习·flutter·华为·开源·harmonyos·鸿蒙
爱分享的阿Q4 小时前
GLM5.1-开源模型
开源