【注】本文译自:https://www.edureka.co/blog/what-is-jenkins/
持续集成是 DevOps 最重要的部分,用于集成各个 DevOps 阶段。Jenkins 是最著名的持续集成工具,我知道你很好奇 Jenkins 受欢迎的原因以及 Jenkins 是否容易学习。我确信阅读完本文后,您的所有问题都会得到解答。
让我们用简要概括什么是 Jenkins。
什么是 Jenkins 以及为什么要使用它?
Jenkins 是一个用 Java 编写的开源自动化工具,带有用于持续集成的插件。Jenkins 用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。
借助 Jenkins,组织可以通过自动化来加速软件开发过程。Jenkins 集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。
Jenkins 借助插件实现了持续集成。插件允许集成各种 DevOps 阶段。如果要集成特定工具,则需要安装该工具的插件。例如 Git、Maven 2 项目、Amazon EC2、HTML 发布者等。
下图描绘了 Jenkins 正在集成各个 DevOps 阶段:
Jenkins 的优势包括:
- 是一个具有社区大力支持的开源工具。
- 易于安装。
- 拥有 1000 多个插件,可简化您的工作。如果不存在插件,则可通过编码实现并与社区共享。
- 它是免费的。
- 它是用 Java 构建的,因此可以移植到所有主要平台。
Jenkins 的某些方面将其与其他持续集成工具区分开来。让我们看看这些要点。
Jenkins 的特性
以下是有关Jenkins的一些事实,这些事实使它比其他的持续集成工具更好:
- 应用:Jenkins 应用非常广泛,在全球范围内有超过 147,000 个活跃安装和超过 100 万用户。
-
插件:Jenkins 与1000 多个插件互连,从而使其可以与大多数开发、测试和部署工具集成。
从以上几点可以看出,Jenkins 在全球范围内有很高的需求。在我们深入研究 Jenkins 之前,先了解什么是持续集成以及它的重要性。
什么是持续集成?
持续集成是一种开发实践,在这种实践中,要求开发人员每天多次或更频繁地对共享存储库中的源代码提交更改。然后构建存储库中进行的每个提交。这使团队可以及早发现问题。除此之外,根据持续集成工具的不同,还有其他一些功能,例如在测试服务器上部署构建应用程序,为相关团队提供构建和测试结果等。
让我们通过用例了解它的重要性。
持续集成示例:诺基亚
我敢肯定,您一生中的某些时候都使用过诺基亚手机。在诺基亚的一个软件产品开发项目中,有一个名为每晚构建(Nightly builds)的过程。每晚构建可以被认为是持续集成的前身。这意味着每天晚上,自动化系统都会拉一整天添加到共享存储库中的代码并构建该代码。这个想法与持续集成非常相似,但是由于在夜间构建的代码很大,因此查找和修复错误确实很麻烦。因此,诺基亚采用了持续集成(CI)。 结果,构建了对存储库中的源代码的所有提交。 如果构建结果表明代码中存在错误,则开发人员仅需要检查该特定提交。 这大大减少了发布新软件所需的时间。
现在是了解 Jenkins 如何实现持续集成的正确时机。
运用 Jenkins 持续集成
让我们想象一个场景,构建了应用程序的完整源代码,然后将其部署在测试服务器上进行测试。听起来这是开发软件的理想方法,但是这个过程存在许多缺陷。我将逐一解释:
- 发人员必须等到开发出完整的软件才能获得测试结果。
- 测试结果很有可能显示多个错误。开发人员很难找到这些错误,因为他们必须检查应用程序的整个源代码。
- 这会减慢软件交付过程。
- 关于编码或架构问题、构建失败、测试状态和文件发布上传等问题的持续反馈会导致软件质量下降。
- 整个过程是手动的,这增加了频繁故障的风险。
从上述问题可以明显看出,不仅软件交付过程变慢,而且软件质量也下降了。这导致了客户的不满。因此,为了克服这种混乱,迫切需要一个系统,使开发人员可以连续触发构建并测试源代码中的每个更改。这就是 CI 的全部意义所在。Jenkins 是可用的最成熟的 CI 工具,因此让我们看看运行 Jenkins 的持续集成如何克服了上述缺点。
首先,我将向您介绍运用 Jenkins 进行持续集成的通用流程图,可以一目了然地看到 Jenkins 如何克服上述缺点。同时有助您了解 Jenkins 的工作方式。
上图描述了以下功能: - 首先,开发人员将代码提交到源代码存储库。同时,Jenkins 服务器会定期检查存储库是否有更改。
- 提交后不久,Jenkins 服务器检测到源代码存储库中发生的更改。Jenkins 将拉出这些更改,并将开始准备新的构建。
- 如果构建失败,那么相关团队将得到通知。
- 如果构建成功,Jenkins 将在测试服务器中部署新的版本。
- 在测试之后,Jenkins 会生成反馈,然后通知开发人员构建和测试结果。
- 它将继续检查源代码存储库中是否对源代码进行了更改,并且整个过程不断重复。
您现在知道了 Jenkins 是如何克服传统 SDLC 缺点的。下表显示了“运用 Jenkins 前后”的对比。
运用 Jenkins 前后对比
运用 Jenkins 前 | 运用 Jenkins 后 |
---|---|
构建并测试了整个源代码。在构建和测试失败的情况下查找和修复错误既困难又耗时,这反过来又减慢了软件交付过程的速度。 | 在源代码中进行的每个提交都将被构建和测试。因此,开发人员无需检查整个源代码,而只需要专注于特定的提交即可。可频繁发布新软件。 |
开发人员必须等待测试结果 | 开发人员知道源代码中每次提交的测试结果。 |
整个过程是手工的 | 您只需要提交对源代码的更改,Jenkins 将为您自动完成其余过程。 |