什么是 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 ...
随机推荐
- Swift in Action
Swift in Action Swift Playgrounds https://apps.apple.com/us/app/swift-playgrounds/id1496833156?mt=12 ...
- BGV崛起带动DeFi重回大众视野
自10月份比特币二次发力以来,DeFi越来越被市场忽略,这当然也有比特币给力和DeFi低迷的双重原因,但随着Baccarat的平台币BGV于A网的正式上线,近期DeFi重新回到了大众的视野中. 正如区 ...
- @RestController和@Controller
1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 2 ...
- Socket实现简单聊天
服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...
- 设置ViewPager 自动滑动时间,速度 方便展示动画
ViewPager.setCurrentItem(position),即使已设置动画,但是没有动画效果 原因:因为ViewPager滑动之前的时间间隔太短,可以通过反射,去修改ViewPager自动滑 ...
- wxWidgets源码分析(1) - App启动过程
目录 APP启动过程 wxApp入口定义 wxApp实例化准备 wxApp的实例化 wxApp运行 总结 APP启动过程 本文主要介绍wxWidgets应用程序的启动过程,从app.cpp入手. wx ...
- 《C++ Primer》笔记 第2章 变量和基本类型
如果你的数值超过了int表示范围,选用long long 如果你需要使用一个不大的整数,那么明确指定它的类型是signed char或者unsigned char 执行浮点数运算选用double 当一 ...
- KMP(超详细复杂度分析)
从 stackoverflow中找到了一个时间复杂度分析很棒的链接 https://www.inf.hs-flensburg.de/lang/algorithmen/pattern/kmpen.htm ...
- POJ-1062(原始dijiksra算法+思维)
昂贵的婚礼 POJ-1062 这道题目一开始看的时候难以理解,但是仔细想,还是可以和最短路联系的,我觉得类似于硬币交换等问题. 以下需要注意几个点,第一就是因为题目规定如何和超出了等级限制的人交易,则 ...
- 漏洞复现-CVE-2018-15473-ssh用户枚举漏洞
0x00 实验环境 攻击机:Win 10 0x01 影响版本 OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机 0x02 漏洞复现 针 ...