Jenkins 教程

17 Mar 2025 | 6 分钟阅读
Jenkins Tutorial

Jenkins 教程专为初学者和专业人士设计。 我们的教程提供 Jenkins 的所有基本和高级概念,例如 Jenkins 安装、Jenkins 配置、Jenkins Pipeline 等。

Jenkins 是一种用 Java 编程语言编写的开源自动化工具,允许持续集成。

Jenkins 构建和测试我们的软件项目,持续使开发人员更容易将更改集成到项目中,并使使用者更容易获得最新的构建版本。

什么是 Jenkins?

Jenkins 是一种用 Java 编程语言编写的开源自动化工具,允许持续集成。

Jenkins **构建** 和 **测试** 我们的软件项目,持续使开发人员更容易将更改集成到项目中,并使使用者更容易获得最新的构建版本。

它还允许我们通过与大量测试和部署技术集成来持续 **交付** 我们的软件。

Jenkins 提供了一种直接的方法,可以使用 pipelines 为几乎任何语言和源代码存储库的组合设置持续集成或持续交付环境,以及自动化其他常规开发任务。

借助 Jenkins,组织可以通过自动化来加速软件开发过程。 Jenkins 添加各种类型的开发生命周期过程,包括构建、文档、测试、打包、分期、部署静态分析等等。

Jenkins 借助插件实现 CI(持续集成)。 插件用于允许集成各种 DevOps 阶段。 如果要集成特定工具,则必须安装该工具的插件。 例如:Maven 2 Project、Git、HTML Publisher、Amazon EC2 等。

**例如:** 如果任何组织正在开发一个项目,那么 **Jenkins** 将持续测试您的项目构建,并在开发初期阶段向您显示错误。

Jenkins 可能执行的步骤例如

  • 使用像 Gradle 或 Maven Apache 这样的构建系统执行软件构建
  • 执行 shell 脚本
  • 存档构建结果
  • 运行软件测试

工作流程

What is Jenkins

Jenkins 的历史

Kohsuke Kawaguchi 是一位在 SUN Microsystems 工作的 Java 开发人员,他厌倦了重复构建代码和修复错误。 2004 年,他创建了一个名为 Hudson 的自动化服务器,该服务器可自动执行构建和测试任务。

2011 年,拥有 Sun Microsystems 的 Oracle 与 Hudson 开源社区发生纠纷,因此他们 fork 了 Hudson 并将其重命名为 Jenkins

Hudson 和 Jenkins 继续独立运作。 但在很短的时间内,Jenkins 获得了大量的贡献者和项目,而 Hudson 仅保留了 32 个项目。 随着时间的推移,Jenkins 变得越来越流行,而 Hudson 不再维护。

什么是持续集成?

持续集成 (CI) 是一种开发实践,其中开发人员需要在固定时间间隔将更改提交到共享存储库中的源代码。 然后构建在存储库中所做的每个提交。 这使开发团队能够及早发现问题。

持续集成要求开发人员定期构建。 一般的做法是,每当发生代码提交时,都应触发构建。

使用 Jenkins 进行持续集成

让我们考虑一个场景,其中应用程序的完整源代码被构建,然后部署在测试服务器上进行测试。 这听起来像是开发软件的完美方式,但此过程存在许多问题。

  • 开发团队必须等到整个软件开发完成后才能获得测试结果。
  • 测试结果很可能会显示多个错误。 开发人员很难找到这些错误,因为他们必须检查应用程序的整个源代码。
  • 它减慢了软件交付过程。
  • 由于缺少与架构或编码问题、构建失败、测试状态和文件发布上传等相关的持续反馈,软件质量可能会下降。
  • 整个过程是手动的,这增加了频繁失败的威胁。

从上面所述的问题中可以明显看出,不仅软件交付过程变慢了,而且软件的质量也下降了。 这导致客户不满意。

因此,为了克服此类问题,需要存在一个系统,开发人员可以针对源代码中所做的每个更改持续触发构建和测试。

这就是持续集成 (CI) 的全部内容。 Jenkins 是可用的最成熟的持续集成工具,因此让我们看看如何使用 Jenkins 进行持续集成来克服上述缺点。

让我们看一下使用 Jenkins 进行持续集成的通用流程图

What is Jenkins

让我们看看 Jenkins 是如何工作的。 上图表示以下功能

  • 首先,开发人员将代码提交到源代码存储库。 同时,Jenkins 会定期检查存储库的更改。
  • 提交发生后不久,Jenkins 服务器会找到源代码存储库中发生的更改。 Jenkins 将提取这些更改并将开始准备新的构建。
  • 如果构建失败,将会通知相关团队。
  • 如果构建成功,则 Jenkins 服务器会将构建部署到测试服务器中。
  • 测试后,Jenkins 服务器会生成反馈,然后将构建和测试结果通知开发人员。
  • 它将继续验证源代码存储库中对源代码所做的更改,并且整个过程会不断重复。

使用 Jenkins 的优点和缺点

Jenkins 的优点

  • 它是一个开源工具。
  • 它是免费的。
  • 它不需要额外的安装或组件。 意味着它很容易安装。
  • 易于配置。
  • 它支持 1000 多个插件来简化您的工作。 如果某个插件不存在,您可以为其编写脚本并与社区分享。
  • 它是用 Java 构建的,因此它是可移植的。
  • 它是平台独立的。 它适用于所有平台和不同的操作系统。 如 OS X、Windows 或 Linux。
  • 易于支持,因为它开源且被广泛使用。
  • Jenkins 还支持基于云的架构,因此我们可以将 Jenkins 部署在基于云的平台上。

Jenkins 的缺点

  • 与当前的用户界面趋势相比,它的界面已过时且不用户友好。
  • 不容易维护它,因为它在服务器上运行,并且需要一些作为服务器管理员的技能来监控其活动。
  • 由于一些小的设置更改,CI 经常中断。 CI 将被暂停,因此需要一些开发团队的关注。

Jenkins 架构

Jenkins 遵循 Master-Slave 架构来管理分布式构建。 在此架构中,slave 和 master 通过 TCP/IP 协议进行通信。

Jenkins 架构有两个组件

  • Jenkins Master/Server
  • Jenkins Slave/Node/Build Server
What is Jenkins

Jenkins Master

Jenkins 的主服务器是 Jenkins Master。 它是一个 Web 仪表板,实际上是由 war 文件提供支持的。 默认情况下,它在 8080 端口上运行。 借助仪表板,我们可以配置作业/项目,但构建发生在 Nodes/Slave 中。 默认情况下,一个节点(slave)已配置并在 Jenkins 服务器中运行。 我们可以使用 IP 地址、用户名和密码,通过 ssh、jnlp 或 webstart 方法添加更多节点。

服务器的工作或 master 的工作是处理

  • 调度构建作业。
  • 将构建分发到节点/slave 以进行实际执行。
  • 监视节点/slave(可能根据需要使它们上线和离线)。
  • 记录和展示构建结果。
  • Jenkins 的 Master/Server 实例也可以直接执行构建作业。

Jenkins Slave

Jenkins slave 用于执行由 master 分发的构建作业。 我们可以配置一个项目以始终在特定的 slave 机器、特定类型的 slave 机器上运行,或者简单地让 Jenkins 选择下一个可用的 slave/node。

正如我们所知,Jenkins 是使用 Java 开发的,是平台独立的,因此 Jenkins Master/Servers 和 Slave/nodes 可以在包括 Linux、Windows 和 Mac 在内的任何服务器中配置。

What is Jenkins

上图是不言自明的。 它由一个 Jenkins Master 组成,该 Jenkins Master 管理着三个 Jenkins Slaves。

前提条件

在学习 Jenkins 之前,您应该对测试和 Java 有基本的了解。

目标受众

我们的 Jenkins 教程旨在帮助初学者和专业人士。

问题

我们保证您在使用本 Jenkins 教程时不会遇到任何问题。 但如果出现任何错误,请在联系表中发布问题。