Jenkins 是开源的自动化服务器 ,广泛用于持续集成(CI)与持续交付/部署(CD) 。本文介绍其核心概念、与 Hudson 的渊源、主要能力、Controller / Agent 架构、优劣与典型场景,并归纳从 1.x 、2.0 Pipeline 到 Weekly/LTS 双轨及近年云原生相关演进。具体行为与支持的 Java 版本以当前官方文档为准:https://www.jenkins.io/
- CI/CD 与 Jenkins 的定位
- 一条流水线的逻辑阶段(示意)
- 发展简史:从 Hudson 到 Jenkins
- 演进时间轴(示意)
- 核心能力
- 基本架构与触发路径
- 任务形态:Freestyle 与 Pipeline
- Declarative 与 Scripted Pipeline
- 优势与挑战
- 典型应用场景
- 版本与演进脉络
- Weekly 与 LTS 发布线
- 近代特性与生态(概览)
- 生产环境检查清单(参考)
- 延伸阅读:与选型文档的衔接
- 免责声明
Jenkins 通过任务/流水线 编排上述步骤,并依托插件对接源码、构建工具、容器与通知渠道。
实际阶段名称与是否自动部署,由 Jenkinsfile 或 Freestyle 配置 决定;F 常需配合审批、蓝绿/金丝雀策略与外围系统。
现今日常所说 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 主线(简化)
Jenkinsfile,将阶段、步骤、环境纳入版本库,便于评审与复用。
插件生态 大量插件扩展
Docker、Kubernetes、SonarQube、制品库、IM 通知等。
分布式执行
Controller(主节点)调度任务,
Agent(从节点)在 Windows/Linux/macOS 或容器中执行,并行扩展吞吐。
可视化与报告 Web UI 展示构建历史、日志、测试结果趋势;支持邮件与企业 IM 通知。
安全 认证、授权矩阵、CSRF 等机制(具体能力取决于版本与插件配置)。
历史文档中曾使用 Master / Slave 称谓,当前官方文档普遍采用 Controller / Agent。
Jenkinsfile 描述阶段与步骤,可入库、做 Code Review 团队规范、多环境、复杂编排
Multibranch Pipeline 按仓库
分支/PR自动创建流水线 GitFlow、特性分支密集的团队
pipeline { stages { stage { steps } } } 结构固定,
校验严格,适合规范团队与新手入门
Scripted Pipeline
node { … } 内任意 Groovy,
灵活,适合复杂逻辑与库封装
二者可结合使用;团队宜在文档中约定默认风格。
npm build、移动端打包、上传测试分发平台
容器与云原生 构建镜像、调用
Kubernetes 插件、滚动发布
运维自动化 定时巡检、备份、清理等脚本化任务(需注意权限与审计)
Hudson 时期(约 2004–2011)
Hudson 解决 Sun 内部及社区的持续构建需求,与当时 CruiseControl 等相比更易用,曾获 JavaOne Duke’s Choice 等奖项;后因治理分叉为 Jenkins 与 Hudson 两线。
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 指标插件等,便于与监控栈对接。
升级 LTS 前应阅读 changelog 与 升级指南 ,并在预发 Controller 上验证插件集。
Jenkinsfile 入库与 Code Review
配置治理 JCasC、制品与密钥凭据管理
运行环境 容器化 Controller/Agent、K8s 动态 Agent
替代与并存 团队也可能采用
GitLab CI、GitHub Actions、Tekton 等;Jenkins 仍是自托管、强插件定制场景常见选择
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。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/256709.html