什么是 Jenkins?为什么要使用持续集成 (CI) 工具?

詹金斯是什么?

詹金斯 是一个开源的持续集成服务器,用 Java 用于协调一系列操作,以自动化方式实现持续集成过程。Jenkins 支持软件的完整开发生命周期,包括构建、测试、记录软件、部署以及软件开发生命周期的其他阶段。

Jenkins 是一款在世界各地广泛使用的应用程序,安装量约为 300 万,并且还在日益增长。通过使用 Jenkins,软件公司可以加速其软件开发流程,因为 Jenkins 可以快速自动完成构建和测试。

它是一个基于服务器的应用程序,需要像 Apache Tomcat 这样的 Web 服务器。Jenkins 软件如此受欢迎的原因在于它可以监控项目开发过程中出现的重复任务。例如,如果您的团队正在开发一个项目,Jenkins 将不断测试您的项目构建并在开发早期向您显示错误。

什么是持续集成?

持续整合 是将多个开发人员的代码更改多次集成到一个项目中的过程。代码提交后会立即对软件进行测试。每次代码提交时,都会构建和测试代码。如果测试通过,则测试构建以进行部署。如果部署成功,则将代码推送到生产环境。

此提交、构建、测试和部署是一个持续的过程,因此称为持续集成/部署。

詹金斯是如何工作的?

Jenkins 是一个基于服务器的应用程序,需要像 Apache Tomcat 这样的 Web 服务器才能在各种平台上运行,例如 Windows,Linux, macOS、Unix 等。要使用 Jenkins,您需要创建管道,这是 Jenkins 服务器将采取的一系列步骤。Jenkins 持续集成管道是一个功能强大的工具,它由一组旨在 主持人, 监控, 测试 代码或代码更改,例如:

  • 持续集成服务器 (詹金斯, Bamboo, CruiseControl, TeamCity, 和别的)
  • 源代码控制工具 (例如 CVS、SVN、GIT、Mercurial、Perforce、ClearCase 等)
  • 构建工具 (Make、ANT、Maven、Ivy、 Gradle, 和别的)
  • 自动化测试框架 (Selenium, Appium、TestComplete、UFT 等)

Jenkin 历史

  • 川口浩介 Java 曾在 SUN Microsystems 工作的开发人员厌倦了反复构建代码和修复错误。2004 年,他创建了一个名为 Hudson 的自动化服务器,用于自动执行构建和测试任务。
  • 2011年, Oracle 拥有 Sun Microsystems 的公司与 Hudson 开源社区发生了争执,因此他们分叉了 Hudson 并将其改名为 Jenkins。
  • Hudson 和 Jenkins 都继续独立运营。但在短时间内,Jenkins 收购了许多项目和贡献者,而 Hudson 仅剩下 32 个项目。随着时间的推移,Jenkins 变得越来越受欢迎,而 Hudson 不再维护。

为什么要使用 Jenkins 的持续集成?

有些人可能认为传统的软件开发方式更好。让我们通过以下示例了解 Jenkins 的 CI 优势

假设有 10 位左右的开发人员正在开发一款 共享库。有些开发人员在 25 天内完成任务,而其他开发人员则需要 30 天才能完成。

在詹金斯之前 詹金斯之后
一旦所有开发人员完成了分配给他们的编码任务,他们就会同时提交他们的代码。 Later,构建已测试并部署。

代码提交构建,测试周期非常少,一次构建需要很多天才能完成。

开发人员提交代码后,代码就会被构建和测试。Jenkin 会在一天内多次构建和测试代码

如果构建成功,那么 Jenkins 会将源部署到测试服务器并通知部署团队。

如果构建失败,那么 Jenkins 会将错误通知开发团队。

由于代码是一次性构建的,因此一些开发人员需要等到其他开发人员完成编码后才能检查他们的构建 任何开发人员提交后,代码就会立即构建。
隔离、检测和修复多个提交的错误并非易事。 由于代码是在单个开发人员每次提交后构建的,因此很容易检测出是谁的代码导致了构建失败
代码构建和 测试流程 都是完全手动的,因此失败的可能性很大。 自动化构建和测试过程节省时间并减少缺陷。
一旦所有错误都得到修复并测试,代码就会被部署。 每次构建和测试成功后都会部署代码。
开发周期缓慢 开发周期快。新功能更容易被用户使用。增加利润。

持续集成的真实案例研究

我相信大家都知道诺基亚的旧手机。诺基亚曾经实施过一种称为夜间构建的程序。在白天来自不同开发人员的多次提交之后,该软件每天晚上都会构建。由于该软件每天只构建一次,因此在大型代码库中隔离、识别和修复错误非常麻烦。

Later,他们采用了持续集成方法。开发人员提交代码后,软件就会立即构建和测试。如果发现任何错误,相应的开发人员可以快速修复缺陷。

持续集成的真实案例研究

Jenkins 插件

默认情况下,Jenkins 具有一组有限的功能。如果您想将 Jenkins 安装与 Git 等版本控制工具集成,则需要安装与 Git 相关的插件。事实上,要与 Maven 等工具集成, Amazon EC2,您需要在 Jenkins 中安装相应的插件。

Jenkins 插件
Jenkins 中的插件集成

使用 Jenkins 的优势

  • Jenkins 由非常开放的社区管理。每个月,他们都会举行公开会议,并向公众征求意见,以促进 Jenkins 项目的开发。
  • 到目前为止,大约有 280 张票已经关闭,该项目每三个月发布一次稳定版本。
  • 随着技术的发展,Jenkins 也在不断发展。到目前为止,Jenkins 的插件数据库中已发布约 320 个插件。有了插件,Jenkins 变得更加强大和功能丰富。
  • Jenkins 工具还支持基于云的架构,以便您可以在基于云的平台上部署 Jenkins。
  • Jenkins 之所以受欢迎,是因为它是由开发人员为开发人员创建的。

使用 Jenkins 的缺点

虽然 Jenkins 是一个非常强大的工具,但它也有缺陷。

  • 与当前的 UI 趋势相比,它的界面已经过时且不够用户友好。
  • 虽然 Jenkins 受到许多开发人员的喜爱,但维护它并不容易,因为 Jenkins 在服务器上运行,并且需要服务器管理员的一些技能来监控其活动。
  • 许多人不使用 Jenkins 的原因之一是 Jenkins 的安装和配置很困难。
  • 持续集成经常会因一些小的设置更改而中断。持续集成将暂停,因此需要开发人员注意。

结语

  • 在持续集成中,代码提交后,软件将立即构建和测试
  • Jenkins 用于协调软件项目中持续集成的一系列操作
  • 在 Jenkins 之前,当所有开发人员完成分配给他们的编码任务时,他们习惯于同时提交他们的代码。 Later,构建已测试并部署。
  • 在 Jenkins 之后,开发人员提交代码后就会立即构建和测试代码。Jenkin 会在一天内多次构建和测试代码
  • 默认情况下,Jenkins 具有一组有限的功能。如果您想将 Jenkins 安装与 Git 等版本控制工具集成,则需要安装与 Git 相关的插件。另请查看 最佳 Jenkins 替代工具
  • Jenkins 最大的优点是它由社区管理,社区会召开公开会议,并听取公众对 Jenkins 项目开发的意见
  • Jenkins 最大的缺点是它的界面过时,与当前的 UI 趋势相比不太用户友好。如果你正在考虑其他可能提供更现代用户体验的选项,你可能想探索一些 顶级持续集成工具 可用。