持续集成:

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

一、引入持续集成测试:

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

在没有应用持续集成之前,传统的开发模式是这样的:

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

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

等所有的模块都开发完成之后,由项目经理对所有代码进行集成;

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

测试过程中出现 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平台

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

日程表里有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

最新文章

  1. Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
  2. 【Make a H5 game】JS for beginner——FROM U2B
  3. ASIHTTPRequest中数据压缩问题与gzip
  4. Redis_Spring与Jedis的集成
  5. Hadoop HDFS 架构设计
  6. android source
  7. Java web 项目 tomcat部署方式.
  8. keepalived 结合mysql 自动切换
  9. H5页面中尝试调起APP
  10. UVa12100,Printer Queue
  11. 读书笔记---HTML5实战 MARCO CASARIO(后六章)
  12. 关于java职业路径
  13. 页面引入js问题
  14. Java -- JDBC 学习--使用 DBUtils
  15. <转载> nginx服务器安装及配置文件详解 https://segmentfault.com/a/1190000002797601
  16. 基数估算HyperLogLog
  17. unlimited 控制
  18. listview下拉刷新 上拉(滑动分页)加载更多
  19. bzoj1091
  20. Asp.netMVC中地址后缀使用.html,jsp等404错误解决

热门文章

  1. 使用Python SMTP发送邮件
  2. 动态设置 view 在布局中位置
  3. Net基础篇_学习笔记_第十天_方法(函数)
  4. b161: NOIP2007 4.Hanoi双塔问题
  5. hadoop snapshot 备份恢复 .
  6. Mysql高手系列 - 第13篇:细说NULL导致的神坑,让人防不胜防
  7. JS的运动1(从简单到复杂运动,从单一属性到多属性同时进行的运动过程分析)
  8. CDH6.3.0 - Cloudera Enterprise 6 Release Guide 安装准备篇
  9. 国庆佳节第四天,谈谈我月收入增加 4K 的故事
  10. ouc_software第一次作业:OUC二手物品交易