技术分享|基于Jenkins的持续集成CI

2018-02-28 16:17:28

本文是西安中软卓越的技术老师为大家分享的基于Jenkins的持续集成CI知识,希望对大家的生活和学习有所帮助。

技术分享|基于Jenkins的持续集成CI.jpg

CIcontinuous integration)持续集成

一次构建:可能包含编译,测试,审查和部署,以及其他一些事情,一次构建就是将源代码放在一起,并验证软件是否可以作为一个一致的单元运行的过程。可以理解为频繁的在多个团队的工作中集成,并且给与反馈的过程。团队开发成员经常集成它们的工作,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

CI场景如下:

1)开发人员向版本控制库提交代码,同时,集成构建计算机上的CI服务器正在轮询检查版本控制库中的变更

2)在提交发生之后,CI服务器检测到版本控制库中发生了变更,所以CI服务器会从库中取得最新的代码副本,执行构建脚本,该脚本将对软件进行集成

3CI服务器向指定的项目成员发成电子邮件,提供构建结果的反馈信息。

4CI服务器继续轮询版本控制库中的变更。

CI持续集成周期

一个典型的持续集成周期包括以下几个步骤:

1)持续集成服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。

2)如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。

3)等代码完全更新以后,调用自动化编译脚本,进行代码编译。

4)运行所有的自动化测试。

5)进行代码分析。

6)产生可执行的软件,能够提供给测试人员进行测试。

CI系统

CI中您需要一个版本控制库,比如(CVS或者SVNsubversion)来执行CI。版本控制库,大家都知道SVN,可以方便的管理源代码,可以沿着时间轴取得不同同版本的代码。CI服务器在变更提交到版本库后执行的集成构建,他会每个一段时间去检查版本库中的变更,所以我们需要对CI服务器进行配置。CI服务器还需要提供一个方便的显示板来显示构建的结果。但是CI服务器并不是必须的,也可以通过执行构建脚本来执行构建。

从上面我们知道CI4个基本特征:与版本控制库链接,构建脚本,某种类型的反馈机制,集成源代码变更的过程。这也是CI系统的4个基本功能。一个好的CI系统的关键特征就是速度,这个系统的本质就及时向开发者和项目风险承担者提供反馈信息。

既然CI这么好,但还是有些团队并没有选择使用,其实这是一个综合考虑的结果。使用CI会增加一些成本的,比如增加了维护CI系统的开销,变化太多尤其是对于老项目需要改变很多才能实现CI。失败的构建太多,如果在提交代码之前没有私有构建一次,就会造成在使用ci的时候变更变得频繁。存在额外的硬件和软件成本,使用ci就需要一台独立的集成服务器。

一些需要考虑到的问题:

测试能达到多少代码覆盖率?

执行构建需要多长的时间?

平均的代码复杂度如何?有多少代码重复?

在版本控制系统中对构建版本打上标签了吗?

已部署的软件存放在哪里?

是否使用测试覆盖率工具?

如何做好codereview

CI工具

持续集成工具:jenkinsCruiseControlHudsongauntlet

构建工具:MavenAntgroovy

CDBI:持续数据库集成,即每次项目的版本控制库中发生变更时,重建数据库和测试数据。

Jenkins

Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins还提供了非常丰富的插件支持,这使得Jenkins变得越来越强大。我们可以方便的安装各种第三方插件,从而方便快捷的集成第三方的应用。

作为一名开发人员,技术是立身的根本,是拴马桩的尊严;对于一个做教育机构,口碑如水是生命之源,是长盛不衰的根本。13年历经风雨依然昂首前行,未来的西安中软卓越同样会恪守初心,以技术立身,培养IT精英,捍卫教育本质。

本文由中软卓越(西安)汇集整理,转载请注明作者及出处。

如需学习java、UI设计、软件测试、Python、大数据、嵌入式、Linxu云计算,请点击咨询,加入我们让你的未来不再迷茫。

关于我们

“简称中软卓越”,是中软国际教育科技股份有限公司是大型IT人才培训机构,是人才战略的核心组成部分之一,承担集团发展过程中人才储备和培养的任务;专注IT培训37年,国内高端IT培训品牌,教育部指定官方IT人才培训机构。专注java培训、UI设计培训、软件测试培训、Python培训、大数据培训、嵌入式培训、Linxu云计算培训等培训课程。217家合作院校,880家合作企业,真实项目实战,素质拓展,职业规划。零首付,100%保障就业,先就业,后付款。

最牛逼的毕业学员入职名企享受高薪就业。880家合作企业,年培育学员人数逾6000人,毕业学员就职于中软国际、百度、腾讯、阿里巴巴、IBM、华为科技、中兴通讯、软通动力等知名企业。

还有什么疑问?我们全面为你解答!为您提供一对一专人服务,请点击下方咨询

  • 卓越资讯
  • 猜你想看
  • 常见问题

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。[详细课程]

    软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程;软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。[详细课程]

    软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。[详细课程]

    Python是一种面向对象的解释型计算机程序设计语言,语法简洁清晰,特色之一是强制用空白符作为语句缩进,它常被昵称为胶水语言,能够把用其他语言制作的各种模块。[详细课程]

    UI设计分为实体UI和虚拟UI,互联网说的UI设计是虚拟UI,一般是指对软件的人机交互、操作逻辑、界面美观的整体设计。[详细课程]

    大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。[详细课程]

    云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。[详细课程]

    西安市长安北路8号高速大厦三楼

    电话:029-61876930