Jenkins介绍

持续集成:java

持续集成是一种软件开发实践,即团队开发成员常常集成他们的工做,经过每一个成员天天至少集成一次,也就意味着天天可能会发生屡次集成。每次集成都经过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。服务器

1、引入持续集成测试:分布式

当前软件开发过程存在的问题工具

在没有应用持续集成以前,传统的开发模式是这样的:单元测试

项目一开始是先划分好模块,分配模块给相应的开发人员;测试

开发人员开发好一个模块就进行单元测试;优化

等全部的模块都开发完成以后,由项目经理对全部代码进行集成;spa

集成后的项目由项目经理部署到测试服务器上,被交由测试人员进行集成测试;代理

测试过程当中出现 Bug 就提把问题记录进行 Bug 列表中;ci

项目经理分配 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的功能?

一、软件的持续构建和测试

二、监视job的执行

三、项目源代码修改的检测

四、分布式构建

节点配置:(代理服务器)

jenkins安装在一台机器,全部的jobs都在这台机器上运行,若是超过太多jobs去运行,

会造成等待,节点存在就是解决这个问题提升效率,安装jenkins的机器称为master机,

而其它机器就属于master的分支,成为slave;而要利用其它机器用执行jenkins的jobs,则须要一些配置,造成两台机器互通,固然下面的例子你用本机当作slave也是能够的。

节点能够理解为一个代理,一台服务器。Jenkins是一个ci(持续集成)平台,每一个代理

服务器要与jenkins进行集成,须要执行java -jar ,后面是代理服务器Ip地址,经过这条

命令,执行成功说明代理已集成在ci平台

触发器是用于控制自动化测试执行时间的

日程表里有5个数字,分别表明

格式:H /* * * *   (要空)

第一个*:分钟:0-59

第二个*:小时:0-23

第三个*:日:1-31

第四个*:月:1-12

第五个*:周:0-7   0和7都表明星期天

* 指定全部有效的值

M-N 指定一个值的范围

例如:

# 每隔15分钟。(或许:07, :22, :37, :52)

H/15 * * * *

# 每前半小时中每隔10分钟。 (3次, 或许:04, :14, :24)

H(0-29)/10 * * * *

# 每一个工做日从早上9点45分开始到下午3点45分结束这段时间内每间隔2小时的45分钟那一刻。

45 9-16/2 * * 1-5

#每一个工做日从早上9点到下午5点这段时间内每间隔2小时之间的某刻。(或许在上午10:38, 下午12:38, 下午2:38 , 下午4:38)

H H(9-16)/2 * * 1-5

相关文章
相关标签/搜索