`
EricShaw
  • 浏览: 29816 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

持续集成构建方案

阅读更多

    这周一直在调研项目自动化构建和持续集成方面的东西,以期望在新产品中得以应用。持续集成(Continuous Integration)这个概念相信大家都不陌生,简单来说,持续集成是频繁、持续的将多个团队成员的工作进行集成,构建,运行,并且给与反馈。

 

    我们不妨想象一下如下场景:开发人员编写代码以及单元测试,并提交到配置库,这时候持续集成服务器会自动从配置库更新代码,然后开始构建和运行,完成后及时给予反馈信息,包括代码是否能build,单元测试通过了几个,失败了几个。每天晚上我们可以定时(比如12点)去自动运行配置库中的代码,生产运行结果,并邮件通知相关开发人员,第二天开发人员上班的时候就能知道自己前一天提交的代码哪些单元测试没有通过。这个场景在很多大公司是非常常见的,比如微软,它的配置库本身就集成了这一整套功能,能够完成像windows这种大型程序的自动build。

 

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

  1. 持续集成服务器不断从配置库检查代码状态,看代码是否有更新。
  2. 如果发现代码有最新的提交,那么就从版本控制服务器下载最新的代码。
  3. 等代码完全更新以后,调用自动化编译脚本,进行代码编译。
  4. 运行所有的自动化测试用例。
  5. 进行代码分析,并将结果反馈给开发人员。
  6. 产生可执行的软件,能够提供给测试人员进行测试。

    在Qone的开发中,我们经常会经历如下问题:svn上的代码不知道怎么的就不能build了,无奈只能在群里面吼一下,谁谁谁的代码没提交;开发人员随便改了个模块,测试人员就得大动干戈地进行一轮回归测试,有问题打回来再改,改完再回归。。。;自己提交的代码心理也没什么底气,依赖测试人员去发现问题。。。其实这些问题,我们都可以通过引入持续集成和单元测试的框架得以解决,目前也有很多开源的工具提供了这种支持,实施的成本并不大,却可以在后期给我们节省很大的成本和工作量。

 

     经过这几天的调研,初步决定采用Maven(构建工具) + SVN (配置库)+ Hudson(持续集成服务器)的持续构建方案。


    Maven可能有一些人不知道,但是说道ant相信大家都知道,Qone就是用它来完成代码的打包工作。Maven的功能远比ant强大,目前主流的开源程序基本都是基于Maven构建的。像Ant这样的构建工具仅仅是关注预处理,编译,打包,测试和分发。而像 Maven 这样的一个项目管理工具提供了构建工具所提供功能的超集。 除了提供构建的功能,Maven 还可以生成报告,生成Web 站点,并且帮助推动工作团队成员间的交流。同时它对OSGI的支持很好,很适合Qone online的自动化构建。

 

    Hudson是一个开源的持续集成服务器,其实国内用的最多的应该是CruiseControl,因为它出来的早,但是近几年Hudson势头很猛,在国外的应用比CruiseControl更多,而且它对Maven和OSGI应用的支持比CruiseControl好很多。

 

    这里只是简单介绍一下持续集成的概念和初步方案,具体的配置步骤后面有时间会写个word文档贴上来。涉及的东西比较多,很难在一篇文章说清楚,大家感兴趣的话可以上http://maven.apache.org/了解maven的相关知识。

<!-- END entry -->
分享到:
评论

相关推荐

    pad客户端持续集成方案

    描述iPad,aPad持续集成方案。包括构建打包,静态检测,自动安装,自动化测试,测试代码覆盖率统计分析。

    企业IT持续集成与持续交付实践.pdf

    企业IT持续集成与持续交付实践.pdf

    产品持续集成工程建设方案.pptx

    资料介绍了产品持续集成需要的工具,部署方案,使用流程,部署计划信息。 资料介绍了产品持续集成需要的工具,部署方案,使用流程,部署计划信息。

    使用Hudson持续集成.pptx

    通过持续集成控制代码质量 Maven+Hudson+Sonar 持续集成的基本原则很简单:尽早集成,经常集成。 持续自动构建 :使用CI,您只要按一下按钮,它会依照预先制定的时间表,或者响应某一特定事件,就开始进行一次构建...

    持续集成在项目构件化开发中的应用研究

    随着软件行业的发展,许多软件集成方案已被大量项目使用,经过实践,人们逐渐认识到传统软件集成的不足,为了降低集成失败的风险,许多开发人员开始关注和使用持续集成技术,逐步认识到持续 集成的价值。 在软件...

    持续集成演示文档

    gitlab:代码仓库;进行版本控制 grrit :人工代码审核 sonar:自动代码规范审核 jenkins:自动构建、部署

    Jenkins持续化集成部署文档(Linux)

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

    持续集成-构建接口自动化测试的一种解决方案.docx

    持续集成-构建接口自动化测试的一种解决方案.docx

    基于Jenkins的企业持续集成系统的设计与实现

    持续集成( Continuous Integration,简称 CI)是一种软件开发实践,在实践中 项目成员频繁地进行集成,通常每个成员每天都会做集成工作,如此,每天整个 项目将会有多次集成。每次集成后都会通过自动化构建(包括...

    SirenOfShame, 面向 持续集成的游戏化.zip

    SirenOfShame, 面向 持续集成的游戏化 摘要一个让团队避免破坏构建的迂回解决方案。 当silmultaneously让项目变得更加有趣的时候 有关更多信息,请参见:https://sirenofshame.com 。是什么?shame Siren是一个构建...

    GitLabCI持续集成配置方案

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

    超大型系统的持续集成与持续交付解决方案及案例分析

    首先来看什么是持续集成。大师MartinFowler,敏捷开发方法的创始人之一,提出的敏捷开发方法是一种思想,可以为软件的研发提供指导性的建议。而持续集成则是敏捷开发具体实践的一个建议环节,通过这个环节可以在研发...

    XMeter之性能测试持续集成

    在持续集成和持续部署的流程中,自动构建和自动部署一般是技术团队选择优先实现的目标。有了持续交付的流水线,我们要关心的就是流水线上产品的质量了。从代码编译打包前的单元测试,代码扫描测试,到构建后的功能...

    高效客户端持续集成实践之路

    敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。...闲鱼在客户端持续集成方案上面做了些探索和实践,本文主要以iOS多bundle的工程为例,讲解下如何用SpringBoot、Vue实现持续集

    Jenkins + docker 持续集成方案,最全最小白的图文教程,快速上手,踩坑归纳

    全图文介绍,快速上手CI/CD持续集成环境的搭建,适合没有经验的小伙伴阅读。 基于docker构建发布镜像,有一定的docker基础最好,若没有基础,简单学习docker指令也可快速上手。

    Git管理实战(二):多分支子模块持续集成

    本文来自hahack,文章讨论了对子模块进行持续集成的三种方案,并利用自动化手段实现逐层往上提交子模块commitid从而触发主工程构建。这些构建结果为我们快速定位工程的编译问题提供了重要的线索。在中,我简单描述了...

    GitLab CI持续集成配置方案

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

    持续集成方案

    在使用持续集成之前,很多开发团队都是用每日构建(nightlybuild)。当时,微软使用这个实践很多年了。谁破坏了构建,就要负责监视后续的构建构成,直至发现下一个破坏了构建的人。对于大多数项目来说,采纳持续集成...

Global site tag (gtag.js) - Google Analytics