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

⚡ 智能摘要

Jenkins 是一个开源自动化服务器,它会在每次开发人员提交代码时构建和测试代码,将持续集成从一项夜间任务变成一个在整个工作日持续运行的过程。

  • 🔘 目的: Jenkins 每次提交后自动协调构建、测试和部署步骤。
  • ☑️ 产地: 该服务器于 2011 年从 Hudson 分支而来,现在是部署最广泛的 CI 服务器。
  • ✅ 管道: A Jenkins与代码一起存储的文件定义了构建的每个阶段。
  • 🧪 插件: 超过两千个插件连接 Jenkins 适用于 Git、Maven、Docker 和 Kubernetes。
  • 🛠️ 权衡: 自托管带来完全控制权,但也意味着服务器管理工​​作。

Jenkins 持续集成服务器概述

什么是 Jenkins?

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

Jenkins 是一款在全球范围内广泛使用的应用程序,拥有数十万的安装量,并且每天都在增长。通过使用 Jenkins软件公司可以加快其软件开发流程,因为 Jenkins 可以快速实现自动化构建和测试。

这是一个基于服务器的应用程序,需要像 Apache Tomcat 这样的 Web 服务器。原因 Jenkins 软件之所以如此受欢迎,是因为它能够监控项目开发过程中出现的重复性任务。例如,如果你的团队正在开发……ping 一个项目, Jenkins 我们会持续测试您的项目构建,并在开发初期就向您展示错误。

注意: 将 WAR 部署到 Apache (阿帕奇) Tomcat 仍然可以运行,但当前版本包含一个嵌入式 servlet 容器,因此 Jenkins 通常情况下,它可以独立运行。2.555.x LTS 系列需要 Java 21.

什么是持续集成?

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

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

如何 Jenkins 工作?

Jenkins 是一个基于服务器的应用程序,需要像 Apache Tomcat 这样的 Web 服务器才能在各种平台上运行,例如 Windows,Linux, macOS,Unix 等。使用 Jenkins你需要创建管道,管道是一系列步骤。 Jenkins 服务器将进行处理。 Jenkins 持续集成管道是一个强大的工具,它包含一系列用于托管、监控、编译和测试代码或代码更改的工具,例如:

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

在当前版本中,这些步骤位于 Jenkins文件与代码一起提交。 Jenkins 控制器读取该文件,并将每个阶段交给代理,代理是实际运行工作的机器。

Jenkins 历史

  • 川口浩介 Java 曾在 SUN Microsystems 工作的开发人员厌倦了反复构建代码和修复错误。2004 年,他创建了一个名为 Hudson 的自动化服务器,用于自动执行构建和测试任务。
  • 2011年, Oracle Sun Microsystems 的所有者与 Hudson 开源社区发生了纠纷,因此他们将 Hudson 分支出来并更名为…… Jenkins.
  • 哈德森和 Jenkins 继续独立运营。但在很短的时间内, Jenkins Hudson 只保留了 32 个项目,而其他公司则获得了大量项目和贡献者。随着时间的推移, Jenkins 变得越来越受欢迎,Hudson 已经不再维护了。

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

有些人可能认为老式的发展方式ping 使用软件是更好的方法。让我们来了解一下持续集成 (CI) 的优势。 Jenkins 以下示例

假设有大约 10 位开发人员在同一个代码库中工作。有些开发人员 25 天就能完成任务,而有些开发人员则需要 30 天才能完成。

之前 Jenkins 后 Jenkins

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

Code 提交构建完成,但测试周期非常不频繁,很多天后才进行了一次构建。

开发者提交代码后,代码会立即被构建和测试。 Jenkins 一天内会多次构建和测试代码。

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

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

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

持续集成的真实案例研究

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

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

诺基亚的每日构建被提交触发的持续集成周期所取代

Jenkins 插件

默认情况下, Jenkins 功能有限。如果您想集成您的 Jenkins 如果使用 Git 等版本控制工具进行安装,则需要安装与 Git 相关的插件。实际上,如果要与 Maven 等工具集成, Amazon EC2,您需要在服务器上安装相应的插件。 Jenkins如下面的插件管理器所示。

Jenkins 插件管理器列出了可供安装的插件

使用优势 Jenkins

  • Jenkins 它由一个非常开放的社区管理。他们每月都会举行公开会议,听取公众对发展的意见。 Jenkins 项目。
  • 该项目保持着可预测的发布节奏:每十二周选择一个新的长期支持基线,然后按计划发布补丁。
  • 随着科技的发展,也随之发展 Jenkins插件数据库目前已收录两千多个插件。有了插件, Jenkins 功能更加强大,特性更加丰富。
  • Jenkins 该工具还支持基于云的架构,因此您可以进行部署。 Jenkins 在基于云的平台上。
  • 之所以 Jenkins 之所以流行,是因为它是由开发者为开发者创建的。

使用的缺点 Jenkins

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

  • 与当前的 UI 设计趋势相比,它的界面已经过时且不够用户友好,尽管最近的版本已经对屏幕设计进行了很多现代化改造。
  • 虽然 Jenkins 虽然深受许多开发者的喜爱,但维护起来却并不容易,因为 Jenkins 运行在服务器上,需要服务器管理员具备一定的技能来监控其活动。
  • 许多人不实施的原因之一是 Jenkins 这是由于其安装和配置困难造成的。 Jenkins.
  • 持续集成经常会因一些小的设置更改而中断。持续集成将暂停,因此需要开发人员注意。
  • 当许多插件在不同时间升级时,就会出现插件依赖冲突,因此插件更新需要有自己的维护窗口。

如果这些权衡取舍对你的团队很重要,请进行比较。 最棒的 Jenkins 替代工具 以及更广泛的列表 顶级持续集成工具 在决定是否使用自托管服务器之前。

常见问题

是的。 Jenkins 该软件以 MIT 许可证发布,下载和运行均免费。成本主要体现在间接方面:维护自托管控制器所需的服务器、存储空间和管理员时间。

2.555.x 长期支撑线运行于 Java 21, Java 25人也表示支持; Java 版本 2.555.1 已移除 17。升级前请检查版本要求,因为旧版本的 JDK 会导致控制器无法启动。

A Jenkins该文件是一个文本文件,其中包含管道定义,与应用程序代码一起提交。它可以采用声明式或脚本式语法编写,并且保持……ping 在版本控制中,构建过程可以像其他任何更改一样进行审查。

控制器是 Jenkins 该安装程序负责调度任务并提供 Web 界面服务。代理程序是一台独立的机器,它执行给定的构建步骤,从而分散负载并允许在多个操作系统上进行构建。

机器学习模型能够对重复出现的故障进行聚类,区分真正的回归错误和不稳定的测试用例,并指出最有可能导致问题的提交记录。这样,冗长的控制台日志就变成了一个简短的、按优先级排序的列表,方便值班开发人员查看。

GitHub 副驾驶 从评论中提炼声明阶段和常见步骤。 Rev请查看每一条建议,因为它经常会创建控制器上未安装的插件步骤名称。

托管服务无需服务器维护,启动速度也更快,而 Jenkins 它能完全控制硬件、插件和数据位置。拥有特殊构建环境的团队通常会保留 Jenkins小型项目通常更喜欢托管运行器。

是的。构建步骤可以调用 Maven的, Gradle 或者蚂蚁,以及 JUnit, TestNG or Selenium 结果会发布回作业页面,因此如果测试套件失败,则整个构建过程都会被标记为红色。

总结一下这篇文章: