Jenkins 介绍
持续集成:
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
一、引入持续集成测试:
当前软件开发过程存在的问题
在没有应用持续集成之前,传统的开发模式是这样的:
项目一开始是先划分好模块,分配模块给相应的开发人员;
开发人员开发好一个模块就进行单元测试;
等所有的模块都开发完成之后,由项目经理对所有代码进行集成;
集成后的项目由项目经理部署到测试服务器上,被交由测试人员进行集成测试;
测试过程中出现 Bug 就提把问题记录进行 Bug 列表中;
项目经理分配 Bug 给相应的责任人进行修改;
修改完成后,项目经理再次对项目进行集成,并部署到测试服务器上;
测试人员在下一次的集成测试中进行回归测试;
通过通过之后就部署到生产环境中;
如果测试不通过,则重复上述“分配 Bug -> 修改 Bug -> 集成代码 -> 部署到测试服务器上 -> 集成测试”工作。
这个过程中可能会出现如下问题:
1. Bug 总是在最后才发现
随着软件技术的发展,软件规模也在扩大,软件需求越来越复杂,软件已经不能简单地通过划分模块的方式来开发,往往需要在项目内部互相合作,模块之间存在一定的依赖关系,那么早期就存在的 Bug 往往会在最后集成的时候才被发现。
2. 越到项目后期,问题越难解决
很多开发者需要在集成阶段花费大量的时间来寻找 Bug 的根源,加上软件的复杂性,问题的根源很难定位。而且我们都清楚,间隔的时间越久,Bug 修复的成本越高,因为连开发人员自己都忘了当初写得是什么鬼代码,从而不得不从头阅读代码、理解代码。
3. 软件交付时机无法保障
正是因为我们无法及时修复 Bug,或者是没能在早期就修复 Bug,从而令整个修复 Bug 的周期拉长了。不管怎么样,我们不可能把明知存在 Bug 的软件交付给客户。
而且,大量没有在前期预估到的工作量产生了——开发人员不得不花费大把时间在查找 Bug 上;测试人员不断的需要进行回归测试;项目经理不得不疲命于该死的代码的集成、部署这些重复性工作——最终导致整个项目的周期拉长,交付时间点往后拖。
4. 程序经常需要变更
某些项目,程序会经常需要变更,特别是敏捷开发的实践者。由于产品经理在与客户交流过程中,往往实际的软件就是最好的原型,所以软件会被当作原型作为跟客户交流的工具。当然,客户最希望的当然是客户的想法能够马上反映到原型上,这会导致程序会经常被修改的。那么也就意味着“分配 Bug -> 修改 Bug -> 集成代码 -> 部署到测试服务器上 -> 集成测试”工作无形又爆增了。
5. 无效的等待变多
有可能开发在等集成其他人的模块;测试人员在等待开发人员修复 Bug;产品经理在等待新版本上线好给客户做演示;项目经理在等待其他人提交代码。不管怎么样,等待意味低效。
6. 用户的满足度低
这里的用户是广义的,可以指最终的客户,也可以是产品经理、公司领导、测试人员,甚至可能是开发人员自己。你想想看,本来三个月做完的项目被拉长到了九个月甚至一年,用户能满意吗!产品经理、公司领导经常需要拿项目作为演示的原型,结果告诉我在演示前一刻发现还有很多 Bug 没有解决,项目启动不了无法访问,这叫人情何以堪。
持续集成、持续集成服务器的概念
那么好了,在上面论述的这些问题中,我们发现有些工作是无法避免的,比如测试工作、修改程序、集成工作、部署工作。但其实在整个工作流程上,是存在可以优化的空间的,比如,集成测试的工作是否可以提前做?可否有自动化的手段来代替测试、集成、部署工作?围绕这些,软件行业的大师们提出“持续集成”口号。
一般就是按照自己项目的实际需要来设置一定的频率,少则可能几次,多则可能达几十次。可以设置按照代码的变更来触发集成,或者设置一个固定时间周期来集成,也可以手工点击集成的按钮来“一键集成”。
持续集成的优点
1.统一的代码库
2.自动构建
3.自动测试
4.每个人每天都要向代码库主干提交代码
5.每次代码递交后都会在持续集成服务器上触发一次构建
6.保证快速构建
7.模拟生产环境的自动测试
8.每个人都可以很容易的获取最新可执行的应用程序
9.每个人都清楚正在发生的状况
10.自动化的部署
用什么来实现集成?
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
什么是jenkins?
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能
jenkins的功能?
1、软件的持续构建和测试
2、监视job的执行
3、项目源代码修改的检测
4、分布式构建
节点配置:(代理服务器)
jenkins安装在一台机器,所有的jobs都在这台机器上运行,如果超过太多jobs去运行,会形成等待,节点存在就是解决这个问题提高效率,安装jenkins的机器称为master机,而其它机器就属于master的分支,成为slave;而要利用其它机器用执行jenkins的jobs,则需要一些配置,形成两台机器互通,当然下面的例子你用本机当做slave也是可以的。节点可以理解为一个代理,一台服务器。Jenkins是一个ci(持续集成)平台,每个代理服务器要与jenkins进行集成,需要执行java -jar ,后面是代理服务器Ip地址,通过这条命令,执行成功说明代理已集成在ci平台
Jenkins 介绍的更多相关文章
- jenkins介绍和安装
1.jenkins介绍 1.1 Jenkins概念: • Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台. • 这是一个免费的源代码,可以处理任何类型的构建或持 ...
- 有手就行——Jenkins介绍 及 Gitlab代码托管服务器安装
Jenkins 介绍 及 Gitlab代码托管服务器安装 Gitlab安装 源码上传到Gitlab仓库 Jenkins介绍 Jenkins 是一款流行的开源持续集成(Continuous Integr ...
- Jenkins--持续集成及Jenkins介绍
Jenkins--持续集成及Jenkins介绍 目录 Jenkins--持续集成及Jenkins介绍 一.持续集成及Jenkins介绍 1. 软件开发生命周期 1.1 需求分析 1.2 设计 1.3 ...
- 【大话QT之十七】Jenkins介绍及安装使用文档(与Git集成)
文章文件夹结构例如以下: 1> Jenkins与Git相关介绍 2> Jenkins部署安装 3> Gitblit部署安装 4> Jenkins与Git集成使用 5> 项 ...
- 持续集成-jenkins介绍与环境搭建
什么是持续集成? 转自:https://blog.csdn.net/tanshizhen119/article/details/80328523 持续集成,俗称CI, 大师Martin Fowler对 ...
- jenkins介绍及其简单操作
一.jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包 ...
- Jenkins介绍和安装及配合GitLab代码自动部署
Jenkins是什么? 基于JAVA的开源的自动化系统平台 加速自动化CI,CD任务及流水线,所有类型的任务:构建,测试,部署等 丰富的插件生态系统支持功能扩展,1400+插件和SCM,测试,通知,报 ...
- Jenkins系列-Jenkins介绍与部署
Jenkins是什么? Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测 ...
- jenkins学习 01 jenkins介绍
jenkins 是一个可扩展的持续集成引擎. 使用Jenkins目的: 持续.自动地构建/测试软件项目. 监控一些定时执行的任务. jenkins拥有的特性: 易于安装,只要jenkins.war部署 ...
- Jenkins介绍-安装-部署...
1.背景 大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成. ...
随机推荐
- 2018蓝桥杯省赛(C/C++ C组)
因进考场不让带优盘,顾想不起有些啥题了,静待更新吧! 再次强调C++最新标准,main函数必须指定返回类型为int,且返回值最好为0(人走的多了就是路了,有人偏返回999那也没办法) 1.大概是小明给 ...
- IdentityServer4 QuckStart 授权与自定义Claims
最近在折腾IdentityServer4,为了简单,直接使用了官方给的QuickStart示例项目作为基础进行搭建.有一说一,为了保护一个API,感觉花费的时间比写一个API还要多. 本文基于ASP. ...
- 解决同层hover事件重叠闪烁问题
完整代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 中国剩余定理(CRT)
只看懂了CRT,EXCRT待补.... 心得:记不得这是第几次翻CRT了,每次都有迷迷糊糊的.. 中国剩余定理用来求解类似这样的方程组: 求解的过程中用到了同余方程. x=a1( mod x1) x= ...
- sorted排序的两个方法 - Python
在给列表排序时,sorted非常好用,语法如下: sorted(iterable[, cmp[,key[,reverse]]]) 简单列表排序,很容易完成,sorted(list)返回的对象就是列表结 ...
- [GitHub] 75+的 C# 数据结构和算法实现
C#中标准数据结构和算法的即插即用类库项目 GitHub:https://github.com/aalhour/C-Sharp-Algorithms Watch: 307 Star: 3.4k For ...
- mongoDB(一)——mongoDB安装部署和常用shell命令
1.mongoDB简介 mongoDB 是由C++语言编写的,是一种分布式的面向文档存储的开源nosql数据库.nosql是Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统 ...
- C# WCF之用接口创建服务契约、部署及客户端连接
服务契约描述了暴露给外部的类型(接口或类).服务所支持的操作.使用的消息交换模式和消息的格式.每个WCF服务必须实现至少一个服务契约.使用服务契约必须要引用命名空间System.ServiceMode ...
- 分析 Nanocore
Nanocore是一个非常强大的木马控制系统,当Nanocore木马运行时,我们发现Windows Defender可以很好地识别威胁.本文的目的是分析Nanocore的传播方式,它是怎样感染Wind ...
- Java 排序算法-冒泡排序及其优化
Java 排序算法-冒泡排序及其优化 什么是冒泡排序 基本写法 优化后写法 终极版本 源码及测试 什么是冒泡排序 这里引用一下百度百科上的定义: 冒泡排序(Bubble Sort),是一种计算机科学领 ...