什么是詹金斯? 历史、架构、管道和优势

已发表: 2020-05-01

对于愿意集成 DevOps 不同阶段的团队,可以通过持续集成来实现。 有多种工具可用于帮助执行此集成。 其中最受欢迎的之一是詹金斯。 但是,在您开枪并开始使用此工具之前,您必须了解它到底是什么,它是如何工作的,它具有哪些功能,以及它与其他类似工具相比具有哪些优势。

Jenkins 刚推出的时候,还只是一个开源的持续集成工具。 然而,在最近的更新之后,它已经成为一个能够执行两项工作的工具——持续集成和持续交付。 它现在也是一种有助于组织应用程序部署的工具。 本博客旨在涵盖在您开始在 IT 项目中使用 Jenkins 之前您应该了解的所有详细信息。

目录

詹金斯的历史

就像多年来我们有很多关于开发这么多技术和工具的有趣故事一样,我们也有一个关于 Jenkins 的故事。 可以追溯到 2004 年,Jenkins 的开发者 Kohsuke Kawaguchi 作为 Java 开发者在 Sun Microsystems 工作。

Kawaguchi 几乎不知道未来对他来说有一些非常特别的东西。 当时,川口参与了多个开发项目。 他不喜欢由于代码失败而破坏构建。 这使他寻找可以帮助他在代码提交到存储库之前知道代码是否可以工作的东西。

这种好奇心导致了名为 Hudson 的自动化服务器的开发。 2011 年,独立的 Hudson 开源社区与 Oracle 之间发生了一场臭名昭著的纠纷,后者现在将 Sun Microsystems 纳入旗下。

这场争论导致了一个名为 Jenkins 的分叉。 詹金斯和哈德森都继续存在了很长时间。 然而,詹金斯是更受欢迎的选择。 Hudson 项目于 2020 年 1 月关闭。Jenkins 仍然活跃。

什么是詹金斯?

Jenkins 可以被称为 DevOps 团队使用的自动化工具,希望将持续集成引入他们的项目中。 它是用 Java 构建的开源软件。 它在软件开发的整个生命周期中使用。

不仅在开发和测试中,而且在部署中。 它允许开发人员轻松地将更改集成到他们的项目中。 Jenkins 还用于软件项目的持续交付。

了解:使用 DevOps 解决实时场景

持续集成如何工作?

持续集成 (CI) 是软件开发过程中不可或缺的一部分。 它可以包含许多不同的任务,包括使用存储库中的独特功能、功能开发和错误修复等。

持续集成工具(例如 Jenkins)非常适合识别当前应用程序源的问题,并通过在自动构建和测试功能的帮助下检查集成过程来提供快速响应。

持续集成来自与敏捷方法相关的编程模型。 然而,这个概念仍然可以应用于所有那些本质上是迭代的编程模型。

瀑布模型和其他此类开发方法也可以从持续集成所提供的功能中受益。 CI 通常与持续交付 (CD) 协同工作,以更快的速度和自动化的方式将可执行代码交付到生产环境中。 下面列出了常见的 CI 实践:

  1. 常规代码提交
  2. 构建分期
  3. 专用于集成的构建机器
  4. 持续反馈
  5. 开发者测试分类

考虑到您的项目和公司,可以以您认为合适的任何频率发布持续集成。 因此,使用 CI 的公司比使用传统软件开发流程的公司有更多的定期发布。

越来越多的公司开始使用 CI,因为一个简单的事实——即使是代码中最微小的变化也可能产生新的构建。 CI 可以在软件开发过程中给予持续的反馈。

这有助于 DevOps 团队摆脱每个开发阶段的错误。 它还可以在开发过程的早期发现问题。 这使得这些问题的破坏性较小、不太复杂且易于处理。

阅读:市场上的顶级 DevOps 工具

持续交付如何工作?

持续交付是软件开发过程的一部分,它使您能够以始终准备好将软件发布到生产环境的方式继续开发。 以下是持续交付证明另外富有成效的几次:

1. DevOps 团队确保即使在功能开发过程中软件也可以部署

2. 在整个软件开发周期中,软件已准备好部署

3. 通过按钮方式部署是实现不同版本软件到不同按需环境的现实

如何实现持续交付? 第一个要求是软件应该已经在进行持续集成。 然后,开发团队应该构建可执行文件并对其执行测试以检测错误或错误。 此外,在不同的生产环境中测试可执行文件以确保软件随时可以发送到生产环境非常重要。 为此,有必要进行部署。

Jenkins 的自动化使公司能够显着加快他们的软件开发过程。 Jenkins 能够集成不同类型的软件开发生命周期流程,包括构建、测试、部署等。 插件对于确保持续集成非常重要。 如果您希望向 Jenkins 添加新工具,您首先必须确保为它安装插件。

阅读:詹金斯面试问答

什么是詹金斯管道?

Jenkins 管道是按顺序相互连接的作业、任务或事件的组合。 换句话说,它是一组插件,可以轻松集成和实施持续交付管道。 可扩展的自动化以代码的形式并在特定领域的语言或 DSL 的帮助下支持创建复杂和简单的交付管道的管道。

现在让我们讨论一下持续交付管道及其工作原理。 Jenkins 管道的基本特征是它持有的每个事件、任务或作业都以一种或另一种方式依赖于这些事件、作业或任务中的一个或多个。 持续交付管道具有不同的状态,例如构建、测试、部署、发布。 所有这些状态都相互关联。

持续交付管道是每个状态的事件工作的序列。它是获取版本控制软件所需的过程的自动化表达。 在软件发布之前,对软件所做的所有更改都必须经过几个复杂的过程。 此过程还确保以可重复和可靠的方式开发软件,并涉及软件进行的多个测试和部署阶段。

JenkinsFile 是一个文本文件,用于定义 Jenkins 管道。 JenkisFile 经常被用来以代码的形式来实现管道,而这整个过程都是使用 DSL 来定义的。 您还可以使用 JenkinsFile 写下运行 Jenkins 管道需要遵循的步骤。 下面提到的是使用 JenkinsFile 的一些好处:

  1. 它使审查管道上的代码变得容易。
  2. 它可以帮助您对为不同分支创建的所有管道执行拉取请求。
  3. 它是可以由不同用户修改的管道的唯一来源。
  4. 它可以帮助您对 Jenkins 管道进行审计。

JenkinsFile 使用两种类型的语法定义

声明性管道语法

使用这种语法创建管道要容易得多。 它具有完善的层次结构,有助于创建管道。 它为您提供了简单的方法来控制与管道执行相关的各个方面。

脚本化管道语法

它使用轻量级执行器并在 Jenkins master 上运行。 它有自己的一组资源,可用于将管道转换为原子命令。 从它们的定义中可以很明显地看出,这两种语法彼此完全不同。 不仅如此,它们甚至还以不同的方式定义。

为什么要使用 Jenkins 管道?

Jenkins 通过其持续集成功能使软件开发过程自动化。 您可以使用不同的用例来创建许多自动化作业,然后使用 Jenkins 管道来运行所有这些作业。 下面列出了使用 Jenkins 管道的几个原因:

  1. 由于它是以代码的形式实现的,因此 Jenkins 管道可以拥有多个可以编辑和执行流程的用户。
  2. 它支持比平常更大的项目。 一次运行多个项目或在循环中使用管道都是可能的。
  3. 他们很健壮。 如果您的服务器在不可预见的情况下重新启动,您不必担心。 Jenkins 管道将自动恢复。
  4. 在您收到用户输入之前,管道过程可以暂停并且不会恢复。

詹金斯架构

在本节中,我们将重点讨论 Jenkins 如何帮助开发人员和测试人员? 让我们讨论一下 Jenkins 持续集成来理解这一点。

一开始,开发人员在源代码中进行他们想要的所有更改。 此代码存储在 Git 存储库中。 在提交这些更改之后进行修改。 Jenkins 服务器正在完成其工作并跟踪对存储在存储库中的文件所做的更改。 Jenkins 服务器会检测到开发人员所做的更改。 然后 Jenkins 提取这些更改并开始基于这些更改构建新的软件,

如果构建失败,相关团队会收到通知。 另一方面,如果构建成功,Jenkins 会将其部署在测试服务器上。 开发人员会收到有关构建开发和测试结果的通知。 这个循环继续重复。

现在我们了解了 Jenkins 的工作原理,我们将更容易区分它的工作方式以及之前用于发布和部署的方式。

所以在 Jenkins 脱颖而出之前,这个过程涉及到完整源代码的构建和测试。 定位和修复错误和缺陷根本不是用来延迟软件交付的简单任务。 开发人员不得不等待很长时间才能获得测试结果。 部署过去是手动进行的。

在 Jenkins 之后,对源代码中的所有更改都进行了测试。 开发人员不需要通过完整的源代码来定位错误和错误。 构建版本的发布现在更加频繁。 开发人员被告知所有更改和提交的测试结果。 提交更改后,Jenkins 服务器可以开始执行其他进程。

Jenkins 分布式架构

Jenkins 在主从架构的帮助下管理构建。 主从单元使用 IP/TCP 协议相互通信。 这里有一个关于它是如何工作的小下载。

詹金斯大师

这是 Jenkins 的主服务器。 它处理许多任务,包括但不限于调度构建作业、记录和呈现构建结果、将构建分派给从属服务器执行、离线和在线监控所有从属服务器等。 Master Jenkins 能够直接执行构建作业。

詹金斯奴隶

它在远程服务器上运行。 Jenkins 服务器遵循 Jenkins master 的请求,兼容所有操作系统。 由 master 分派的构建作业由 slave 执行。 该项目可以适当地配置以选择特定的从机。

詹金斯的好处

1. Jenkins 是一个开源工具,非常易于安装和使用。 您不需要额外的组件来使用它

2.免费,可在不同平台上使用,如Windows、Linux、macOS等

3. 应用广泛,所以在网上社区寻求支持不是什么大问题

4. Jenkins 自动化所有集成工作。 集成问题很少,因此它有助于在项目生命周期中节省时间和金钱。

5、易于配置、扩展和修改。 它允许即时生成测试以及在不同平台上构建、自动化和部署代码

6. Jenkins 可以配置为正确运行 CI 和 CD 概念

7.它可以很容易地检测和修复问题。 该软件始终准备好突然发布

8. 支持多种插件,提供更好的灵活性

9. 有助于及早发现错误,从而为开发人员节省大量时间和精力

使用 Jenkins 插件提高生产力

以下是开发人员使用的一些最常用的插件。

1.作业生成插件

在成长中或更大的组织中维护项目工作有点困难,因为开发人员经常在不同的分支和版本上工作。 虽然您已准备好让开发人员自行创建工作,但您不确定他们是否能够满足公司标准。 这是一个很大的困境。 该插件允许您定义模板,您的开发人员可以使用这些模板来创建作业。 您可以使用基于角色的授权插件禁用模板的配置访问。

2.全局构建统计插件

了解您当前的容量、功能和使用情况对于为系统要求或容量规划做好准备非常重要。 您应该知道定期发生的构建数量。 您还需要知道发布构建所需的时间。 该插件为您提供回答所有这些问题所需的所有必要信息。

3. GitLab/GitHub 拉取请求构建器

您可以使用此模板将 GitLab/GitHub 中的代码审查过程自动化到比平时更高的水平。 对于每个拉取请求,您可以期望这个插件不仅运行构建,还构建结果并与拉取请求共享状态或收集重要的静态分析。 这个插件告诉了很多关于需要合并的代码。 在某些情况下也可以使用此插件定义自动合并。

结论

这个博客提供了关于 Jenkins 如何工作以及如何使用 CI/CD 实现不同项目想法的合理想法。 它是当今最受欢迎的 DevOps 工具之一,其有效的界面和插件使事情变得非常容易。

如果您有兴趣了解有关全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发 PG 文凭,该文凭专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和作业, IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。

软件开发课程 | 掌握 Java、C、Python 等‎

行业值得信赖的学习 - 以实践为导向的课程 - 行业认可的认证。
了解更多