跳到主要内容

Jenkins 教程

欢迎学习 Jenkins!本教程将带你从零基础开始,逐步掌握 Jenkins 持续集成/持续部署(CI/CD)工具的核心知识和技能。

什么是 Jenkins?

Jenkins 是一个开源的自动化服务器,用于自动化软件开发过程中的构建、测试和部署。它基于 Java 开发,拥有庞大的插件生态系统,是目前最流行的 CI/CD 工具之一。

Jenkins 的核心概念

Pipeline(流水线):Jenkins Pipeline 是一套插件,支持将持续交付流水线以代码形式实现和可视化。Pipeline 使用 DSL(领域特定语言)来描述整个构建过程。

Job(任务):Job 是 Jenkins 的基本工作单元,代表一个需要执行的任务,如构建项目、运行测试、部署应用等。

Node(节点):Jenkins 支持分布式构建,Node 代表一个可以执行构建任务的工作节点。主节点(Master)负责管理,从节点(Agent/Slave)负责执行具体任务。

Plugin(插件):Jenkins 的强大之处在于其丰富的插件生态,超过 1800+ 插件可以扩展 Jenkins 的功能,支持各种版本控制系统、构建工具、通知方式等。

Jenkins 的优势

特性说明
开源免费基于 MIT 协议开源,完全免费使用
插件丰富1800+ 插件支持各种工具和平台
易于安装支持多种安装方式,配置简单
分布式构建支持多节点并行构建,提高效率
社区活跃拥有庞大的用户社区和丰富的文档资源
可扩展性强支持自定义插件和共享库

工作流程图

┌─────────────────────────────────────────────────────────┐
│ Jenkins 工作流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐│
│ │ 代码提交 │ -> │ 自动构建 │ -> │ 运行测试 │ -> │ 部署上线││
│ │ (Git) │ │ (Build) │ │ (Test) │ │(Deploy)││
│ └─────────┘ └─────────┘ └─────────┘ └────────┘│
│ │ │ │ │ │
│ └──────────────┴──────────────┴──────────────┘ │
│ 自动化流水线 │
│ │
└─────────────────────────────────────────────────────────┘

为什么学习 Jenkins?

  1. 自动化构建:自动从代码仓库拉取代码并构建项目
  2. 持续集成:频繁地将代码集成到主干,快速发现问题
  3. 持续交付:自动化部署流程,缩短交付周期
  4. 质量保证:自动化测试,确保代码质量
  5. 提高效率:减少人工操作,降低错误率
  6. 可视化监控:直观的构建状态和日志查看

Jenkins 的应用场景

持续集成

  • 代码提交后自动触发构建
  • 集成代码质量检查工具(SonarQube)
  • 自动化单元测试和集成测试

持续交付/部署

  • 自动化部署到测试环境
  • 蓝绿部署和金丝雀发布
  • 多环境部署管理(开发、测试、生产)

自动化测试

  • 定时执行自动化测试套件
  • 测试报告自动生成和归档
  • 测试结果通知和告警

基础设施管理

  • 基础设施即代码(IaC)
  • 容器镜像自动构建和推送
  • 云服务资源自动化管理

Jenkins 核心组件

Jenkins Master

Jenkins 主节点负责:

  • 管理配置和任务调度
  • 维护构建队列
  • 管理插件和凭据
  • 提供 Web 界面和 API

Jenkins Agent

Jenkins 从节点负责:

  • 执行具体的构建任务
  • 支持多种操作系统
  • 可以动态创建和销毁(如云环境)

Jenkins Pipeline

Pipeline 是 Jenkins 的核心功能:

  • Declarative Pipeline:声明式语法,易于理解和维护
  • Scripted Pipeline:脚本式语法,更灵活强大
  • Blue Ocean:现代化的可视化 Pipeline 界面
┌─────────────────────────────────────────┐
│ Jenkins 架构 │
├─────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ Jenkins │ │
│ │ Master │ │
│ │ (Web UI) │ │
│ └──────┬──────┘ │
│ │ │
│ ┌───────────┼───────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │Agent │ │Agent │ │Agent │ │
│ │Node 1│ │Node 2│ │Node 3│ │
│ └──────┘ └──────┘ └──────┘ │
│ │
└─────────────────────────────────────────┘

Jenkins 生态系统

常用插件

  • Git Plugin:集成 Git 版本控制
  • Pipeline Plugin:支持 Pipeline 功能
  • Docker Plugin:集成 Docker 容器
  • Kubernetes Plugin:在 Kubernetes 上运行 Jenkins
  • SonarQube Plugin:代码质量检查
  • Slack/Email Plugin:构建通知

集成工具

  • 版本控制:Git、SVN、Mercurial
  • 构建工具:Maven、Gradle、Ant、MSBuild
  • 测试框架:JUnit、TestNG、Selenium
  • 部署工具:Ansible、Puppet、Chef
  • 云平台:AWS、Azure、GCP、阿里云

教程目录

基础阶段

进阶阶段

知识速查

  • 速查表 - Jenkins 常用命令和配置速查

学习建议

  1. 动手实践:每学一个概念,都要动手配置和验证
  2. 理解原理:不只是记住配置,要理解 CI/CD 的核心理念
  3. 循序渐进:从基础 Job 开始,逐步掌握 Pipeline
  4. 阅读官方文档:Jenkins 官方文档是最权威的参考
  5. 项目练习:将实际项目接入 Jenkins 是最好的学习方式

参考资料

准备好开始学习了吗?点击下一章开始你的 Jenkins 学习之旅!