什么是 Jenkins? 运用Jenkins持续集成
【注】本文译自: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 将为您自动完成其余过程。 |
什么是 Jenkins? 运用Jenkins持续集成的更多相关文章
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
- jenkins + Git 搭建持续集成环境
持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风险,使得系统在开发中始终保持在一个稳定健康的集成状态.jenkins是目前 ...
- Jenkins+Gitlab搭建持续集成(CI)环境
利用Jenkins+Gitlab搭建持续集成(CI)环境 Permalink: 2013-09-08 22:04:00 by hyhx2008in intern tags: jenkins gitla ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- Jenkins 快速搭建持续集成环境
持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...
- Jenkins快速搭建持续集成
基于Jenkins快速搭建持续集成环境 Jenkins+tortoisesvn+MSBuild做到持续集成 附Jenkins的使用:http://www.infoq.com/cn/articles/M ...
- 构建基于Jenkins + Github的持续集成环境
搭建持续集成首先要了解什么是持续集成,带着明确的目标去搭建持续集成环境才能让我们少走很多弯路.持续集成(Continuous integration)简称CI,是一种软件开发的实践,可以让团队在持续集 ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境
写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...
随机推荐
- H.265 & H.264
H.265 & H.264 HEVC (H.265) vs. AVC (H.264) https://en.wikipedia.org/wiki/High_Efficiency_Video_C ...
- modal 遮罩层,滚动穿透 bug
modal 遮罩层,滚动 穿透bug float 弹层 taro 小程序弹框 滚动击穿 问题 https://segmentfault.com/q/1010000011134345 solution ...
- NGK每日快讯2021.1.29日NGK公链第87期官方快讯!
- 看超额担保免信任的NGK DeFi 乐高如何打造下一个千倍币?
2020年中,DeFi的高收益率吸引了大量热钱涌入,DeFi总锁仓量破百亿美金.如今,流动性挖矿的热潮暂时停歇,但对于 NGK DeFi项目来说,它背后的演变进化从未停止. 免信任是 NGK DeFi ...
- 为什么Linux默认页大小是4KB
本文转载自为什么 Linux 默认页大小是 4KB 导语 我们都知道 Linux 会以页为单位管理内存,无论是将磁盘中的数据加载到内存中,还是将内存中的数据写回磁盘,操作系统都会以页面为单位进行操作, ...
- java基础第12期——反射、注解
一. 反射 反射: 将类的各个组成部分封装为其他对象. 1.1 获取class对象的方式 Class.forName("全类名"): 将字节码文件加载进内存,返回class对象 多 ...
- 谈一下HashMap的底层原理是什么?
底层原理:Map + 无序 + 键唯一 + 哈希表 (数组+Entry)+ 存取值 1.HashMap是Map接口的实现类.实现HashMap对数据的操作,允许有一个null键,多个null值. Co ...
- ERROR 1040 (HY000) Too many connections
C:\Users\Jilil>mysql -u root -pEnter password: *************ERROR 1040 (HY000): Too many connecti ...
- 使用 xunit 编写测试代码
使用 xunit 编写测试代码 Intro xunit 是 .NET 里使用非常广泛的一个测试框架,有很多测试项目都是在使用 xunit 作为测试框架,不仅仅有很多开源项目在使用,很多微软的项目也在使 ...
- 聊聊Dotnet的垃圾回收
最近在做一个项目,用到了大量的非托管技术,所以垃圾回收变得很重要. 在说垃圾回收之前,先说说两个概念: 托管代码,是由CLR管理的代码 非托管代码,是由操作系统直接执行的代码 在早期C++的时候, ...