
本 Jenkins 教程将全面讲解 Jenkins 的相关核心概念,带大家认识 Jenkins 最具特色的功能 ——Jenkins 流水线,并学习其管理与操作方法。同时,我们还会介绍 Jenkins 的安装步骤,以及如何借助 Jenkins 插件创建、调度和运行构建任务。
本教程将为你的 DevOps 学习之路打下基础,让你熟练掌握 Jenkins 的搭建方法,并能将其运用于持续集成工作中。
后续我将推出有关 Jenkins 系列视频教程,希望多多支持,如果大家关注的人多,我将打算免费向大家讲解。希望朋友们多多分享。
Jenkins 是一款基于 Java 编写的自动化工具,内置多款适用于持续集成任务的插件。它可用于项目的持续构建与测试,能让代码的迭代集成工作更便捷。
Jenkins 可与多种部署和测试技术协同工作,助力软件的快速交付,同时通过任务自动化加速开发流程。它本质上是一款基于服务器的应用程序,需要 Tomcat 等网页服务器的支持。
Jenkins 之所以广泛普及,核心在于其能对重复执行的任务进行监控。在团队开发项目的过程中,Jenkins 会持续检查和校验代码,在开发初期就及时反馈潜在的错误或执行失败问题。
既然提到了 “持续集成” 这个概念,接下来我们就深入了解一下。
持续集成(CI)是 DevOps 体系中至关重要的组成部分,核心作用是将 DevOps 的各个阶段整合起来。简单来说,它是一种编码实践方法,能让开发团队频繁地对代码做出小幅度修改,并通过版本控制工具进行管理。
持续集成的常规落地方式为:所有开发人员将代码推送到共享代码仓库,且每天推送的次数通常不止一次。这种方式非常适用于需要在不同平台、通过多种工具进行编码开发的项目。如今,搭建这样的机制,以并行方式集成和验证代码修改,已成为开发工作的刚需。
持续集成究竟有哪些优势?为何开发团队都会采用这种实践方法?以下为大家梳理持续集成的核心优点,解答上述问题:

接下来,我们通过一个实际案例进一步理解持续集成。
假设现有一个医疗系统开发项目,该系统原本每天在固定时间从共享代码仓库拉取代码并执行构建操作。这种方式看似属于持续集成,但由于每天仅构建一次,只能在一天中的某个时间点发现代码漏洞。
要让该系统符合持续集成的要求,可对其进行优化:每当代码发生修改,就将其推送到共享代码仓库,并立即执行构建操作。
这样一来,所有开发人员基于最新代码进行开发时,能在漏洞出现的第一时间发现并解决问题。对于医疗系统这类核心关键系统而言,这种方式还能确保软件的实时更新迭代。

独立运行的 Jenkins 实例会大量占用磁盘和 CPU 资源。为解决这一问题,我们可通过配置从节点实现 Jenkins 的横向扩展,将主节点的部分工作负载分担至从节点。从节点是被配置为代表主节点执行任务的设备,主节点是 Jenkins 的基础安装端,负责执行基础操作并提供用户交互界面,而实际的任务执行工作则由从节点完成。
下图中,Jenkins 主节点负责管理用户界面,从节点则基于不同的操作系统搭建。[Jenkins 主从节点架构图]

那么,如何在 AWS 云平台上搭建 Jenkins 主从节点系统呢?具体步骤如下:
步骤 1:创建一台新的 EC2 实例,选用 2016.03 版本的亚马逊 Linux 系统镜像(AMI)。
步骤 2:执行以下命令更新系统并安装 Jenkins:
yum update –y wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install –y jenkins注意:安装 Jenkins 时,需拥有系统的根用户权限或 sudo 管理员权限。
步骤 3:编辑/etc/sysconfig/jenkins配置文件,授权 Jenkins 访问插件所需的环境变量,并将系统默认时区修改为本地时区。
步骤 4:配置完成后,执行以下命令注册并启动 Jenkins 服务:
chkconfig jenkins on
service jenkins start注意:上述步骤同样适用于在 CentOS 系统中安装 Jenkins。
步骤 5:Jenkins 服务已启用并运行,访问地址http://服务器IP:8080。跳转至 “入门引导” 页面后,获取并输入解锁密码,完成 Jenkins 的解锁操作。
unlock jenkins
至此,一个空的 Jenkins 主节点就搭建完成了,接下来我们开始配置从节点。
我们需要完成从节点的配置,并将其信息添加至主节点的配置中,具体步骤如下:
步骤 1:以同样的方式创建一台新的 EC2 实例,确保拥有 sudo 或根用户权限。
步骤 2:执行以下命令安装 Java、Git、Docker 等基础依赖环境:
yum install -y docker git java-1.8.0-openjdk
curl -L https://github.com/docker/compose/releases/download/1.6.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose步骤 3:在 AWS 平台创建自定义系统镜像(AMI):进入 EC2 控制台,点击 “启动实例”,选中刚配置好的从节点实例,创建新镜像;镜像创建完成后,记录下对应的 AMI 标识。

步骤 4:配置主节点,使其关联该自定义 AMI,具体操作如下:
至此,Jenkins 主从节点就配置完成了![Jenkins 主从节点配置完成界面]以上为默认的通用配置步骤,大家也可根据自身需求,调整参数进行 Jenkins 安装实践。

了解完 Jenkins 的工作原理后,接下来我们学习 Jenkins 插件的安装方法。
插件集成是 Jenkins 的核心功能之一,通过插件可为 Jenkins 核心功能扩展更多特性,让其成为更适配项目开发的工具。
接下来,我们将学习如何在 Jenkins 中查看、安装、修改、更新和卸载插件。

若需要使用某款插件的旧版本,可从对应官网下载该版本插件,再手动上传至 Jenkins 进行安装。

如果大家开发了自定义的 Jenkins 插件,可将其上传至插件仓库,为 Jenkins 社区的发展贡献力量。
接下来,我们继续学习 Jenkins 构建任务的创建方法。
构建指将源代码转换为可使用、可运行的程序形式的过程,核心是将代码编译为可执行文件,该过程通常由构建工具完成。
一般在开发的关键节点(如完成某个功能的集成后),会执行构建操作。基于持续集成的特性,Jenkins 支持构建流程自动化,可设置在特定时间或触发特定事件时自动执行构建,这一功能被称为「定时构建」。
接下来,我们学习如何根据指定的时间或触发条件,配置 Jenkins 的定时构建任务,具体步骤如下:
步骤 1:在「构建触发器」模块中,勾选「定期构建」选项。
步骤 2:在输入框中填写定时参数,包括分钟、小时、日期、月份、星期。
定时参数的通用语法格式为:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-7)

以下为定时构建的参数配置示例:
30 08 * * 1-6H 16 * * 1-5@midnight 或 59 23 * * 6H * * * *我们已经学习了基于时间的自动化构建配置方法,那如果想要实现「代码推送到仓库后,自动执行构建」该如何操作?
可通过配置 Git Webhook 实现该需求,具体步骤如下:

http://<Jenkins域名>/jenkins/gitlab/build_now/<项目名称>;
接下来,我们进入本教程的重点内容 ——Jenkins 流水线的学习。
持续集成和持续交付(CI/CD)具体指什么?简单来说,它是一种编码实践方法,要求开发团队更频繁地对代码进行小幅度修改,并通过版本控制工具进行校验管理。
正如前文所述,持续集成(CI)的核心目标是实现应用程序构建和测试的自动化。由于代码的频繁迭代和团队的高效协作,采用该方法能有效提升软件质量。而持续交付(CD)是持续集成的延伸,承接了持续集成结束后的后续开发流程。
持续交付(CD)可实现向指定基础设施的版本发布全自动化,核心是确保代码修改能被自动推送至部署环境,同时自动完成服务器、数据库等相关服务的重启调用。

在探讨 CI/CD 时,我们常会提到「Jenkins CI/CD 流水线」,它具体是什么?又有什么作用?
Jenkins 流水线是将源代码转换为可发布版本的一系列任务和作业串联形成的自动化流程:当一个任务执行成功后,会自动触发流程中的下一个自动化任务。该流程也被称为「CD 流水线」「部署流水线」或「软件开发流水线」。
流水线的整个执行过程由一个监控管理程序负责,该程序会对流水线各环节进行管理、运行、监控和结果上报。接下来,我们了解其实际工作机制。
Jenkins 流水线的实际落地方式会因项目类型不同而有所差异,尽管整体工作流程一致,但在源码追踪、构建、指标收集和测试等环节的具体参数和实现方式上会有所区别。
上述的监控管理程序会对各个独立的作业进行管理,每个作业被设计为完成特定的功能(如测试、构建等),所有作业均具备自动化、可重复、高效的特点。当一个作业执行成功后,监控管理程序会立即触发流程中的下一个作业。借助自动化特性,流水线各环节出现的错误能被及时发现并修复,这一特性被称为「快速失败」。
「快速失败」指在流程执行的第一时间发现错误,并及时向对应负责团队发送通知。该特性的优势在于,系统会根据流程执行历史,将错误问题分配至对应的负责团队,便于问题的快速处理和解决。
了解了 Jenkins 流水线的概念后,接下来我们详细学习如何从零开始搭建 Jenkins CI/CD 流水线。

Jenkins 功能强大,可通过各类界面和工具实现整个 DevOps 流程的自动化,其核心流程如下:开发团队将代码提交至 Git 代码仓库,Jenkins 通过前端工具定义待执行的作业 / 任务,随后拉取代码并进入提交阶段,接着在构建阶段完成代码编译,最后借助 Docker 将代码部署至预发布环境。
以下为结合 Jenkins 和 Docker 搭建 CI/CD 流水线的具体步骤:
步骤 1:在虚拟机中打开终端,执行以下命令启动相关服务:
systemctl start jenkins
systemctl enable jenkins
systemctl start docker步骤 2:通过指定端口打开 Jenkins,点击「新建项目」,开始创建新的作业任务。
步骤 3:选择「自由风格项目」,并填写自定义的项目名称。
步骤 4:进入「源码管理」模块,填写 Git 代码仓库地址,点击「应用」并「保存」。
步骤 5:进入「构建」模块,选择「执行 shell 脚本」。
步骤 6:编写并执行 shell 脚本,生成相关文件;脚本会自动拉取代码、安装项目依赖包,并完成应用程序的编译。
步骤 7:重复步骤 3 至步骤 5,编写新的 shell 脚本,实现代码在 Docker 中的集成和构建。
步骤 8:再次重复步骤 3 至步骤 5,创建一个新的作业(填写不同的作业名称),编写 shell 脚本检查 Docker 容器配置文件,并将应用部署至预定义的端口。
步骤 9:配置作业的触发关系:选中第一个作业(Job1),依次进入「构建后操作」→「构建其他项目」。
步骤 10:填写需要触发的后续项目名称,点击「保存」。
步骤 11:对第二个作业(Job2)重复步骤 9 的操作,配置其后续触发的项目。
步骤 12:创建流水线视图:点击页面的「+」号,选择「构建流水线视图」,并填写自定义的视图名称。
步骤 13:点击「运行」,启动系统中的 CI/CD 流水线流程。
步骤 14:构建完成后,访问localhost:8180/sample.text,即可运行部署完成的应用程序。
至此,本 Jenkins 教程的核心内容就讲解完毕了,我们一起回顾了 Jenkins 的核心知识点:Jenkins 的定义及其在 CI/CD 体系中的作用、Jenkins 主从节点的搭建方法、丰富的 Jenkins 插件生态、构建任务的创建与定时配置,以及 Jenkins CI/CD 流水线的搭建等。建议大家尝试安装新的 Jenkins 插件,并将自定义插件上传至社区,助力 Jenkins 生态的发展。
通过本教程,大家掌握了构建任务的创建和定时调度方法,而 CI/CD 流水线的搭建是 Jenkins 的核心应用能力。想要更深入地掌握 Jenkins 的使用,建议大家动手创建不同的作业任务,配置多样化的定时参数,在实践中积累经验。
Jenkins 是目前最实用的 DevOps 工具之一,掌握 Jenkins 的使用技巧,会成为你职业发展中的重要竞争力。
希望本教程能帮助大家积累 DevOps 线上课程的相关知识,如果你想要在专业讲师的指导下系统学习 DevOps 课程,可报名参加我们的 DevOps 培训课程。