持续集成的魅力:工具推荐

什么是持续集成?Continuous Integration, CI

它是一种软件项目管理方法,依据资产库(源码,类库等)的变更自动完成编译、测试、部署和反馈。

持续集成的背景

  在没有CI的情况,开发人员进行开发,测试人员测试,最后支持人员进行部署和代码的发布。

  这是一种线性的开发流程,一旦测试通不过,可能最后就没办法交付产品。

  有句话说得对,目前软件开发最大的难度在于:

  1 确定软件的需求

  2 确定软件的剩余量

  无法确定软件的需求,是因为需求随着开发的落实在不断的变化。最开始用户不知道自己想要什么,你给了他一种方案,他便在这种方案基础上想象更多,于是无论提交什么产品,都不会是用户最终想要的。

  无法确定软件的剩余量,是因为我们无法像造汽车一样,看到整个开发过程。也许生于的20%工作,要花费80%的时间。

  

  持续集成采用”水滴石穿、分而治之“的思想,既然我们不能马上交付一个可用的产品,为什么不随时提供一个可以使用的产品呢。

  通过上面的结构图,就可以看到CI持续集成的基本思想。

  就是程序员在向版本库中提交代码后,CI持续集成服务器自动发现或者定时发现变更,依据这些源码,重新构建产品的编译、测试、审查、部署和反馈过程。

如何做到持续集成

  根据上面的思想,持续集成工具需要做到下面几个功能:

  1 自动构建:要求无人值守,如果人工来操作,那就没有持续集成的必要了。

  2 发现版本库的变更:通过轮询或者定时,或者程序员使用命令,处罚持续集成发现版本库的变更

  3 反馈机制:在出现问题时,能及时的把问题反馈给正确的人(提交者、测试者、管理者)

  4 回滚:在出现问题后,拥有回滚到可交付的能力。

  5 纯净的构建环境:每一次都应该把之前的环境删除干净,让每一次构建都是一个新的构建。

  6 完善的集成功能:代码的测试,审查都应该做到完善。如果单纯的利用它做持续的编译,那就是大材小用了。

  

  利用什么工具都是其次的,关键是要注意养成持续集成的习惯,软件的开发流程以及代码的编写,都应该注意CI的风格。

  比如编写具有单元测试的代码,命名符合代码审查的规范等等。

  另外在持续集成的时候,还需要注意:

  1 为了避免每次过多出现问题的构建,开发者在提交代码的时候,最好在本地独立的构建一次。可以自行运行构建脚本,模拟构建。

  2 由于数据库与编码的分离,最好把数据库相关的DDL\DML等脚本一起放入版本库中,这样CI进行构建的时候,可以连同数据库一起重新构建。

推荐的工具资料

  【1】《持续集成:软件质量改进和风险降低之道》

  【2】持续集成:http://www.martinfowler.com/articles/continuousIntegration.html

  【3】CI持续集成工具:

    Apache Continuum:  http://continuum.apache.org/

    CruiseControl:  http://cruisecontrol.sourceforge.net/

    Hudson:  http://hudson-ci.org/

    Jekins:  http://jenkins-ci.org/

    Luntbuild:  http://jenkins-ci.org/

  【4】构建脚本:

    Ant:  http://ant.apache.org/

    Maven:  http://maven.apache.org/

  【5】测试:

    JUinit

    DbUnit

    Floyd

    HtmlUnit

    JWebUnit

    SQLUnit

  【6】自动化审查:

    CheckStyle:  http://sourceforge.net/projects/eclipse-cs/files/

    JavaNCSS:  http://mojo.codehaus.org/javancss-maven-plugin/

    JDepend:  http://www.clarkware.com/software/JDepend.html

    PMD:  http://pmd.sourceforge.net/

    Siminan:  http://www.redhillconsulting.com.au/products/simian/

  【7】反馈

    Jabber:  http://www.jabber.org/

时间: 2024-10-15 04:39:39

持续集成的魅力:工具推荐的相关文章

一个Web 持续集成工作实践

一个web的持续基础实践: https://mp.weixin.qq.com/src=3&timestamp=1494325174&ver=1&signature=wFVC0E6YlKsNsCYnhs8XlMdRTmtwBU8qMW4YCsNoryvcIAGD8hPCnOCaXb5WisyGrmEOVUJVd1n2FRjV3ohyUWuTDUGMGhkDPXAlvd6t0RtNSivqrMRgof1KJcnZrAvzTYkjURSzDPjk8wR5vq8ASUOarm9mFlUad

持续集成 .Net手册--提升开发效率和质量

参考:http://blog.csdn.net/chelsea/article/details/132525 持续集成 .Net手册 一.概念 Martin Fowler的文章:Continuous Integration  中文翻译:持续集成 二.工具 传统工具:VisualStudio.Net,VisualSourceSafe,Rational ClearCase 自动编译工具:NAnt,NAntContrib 回归测试工具:NUnit 代码检查工具:FxCop 持续集成工具:CruiseC

12 Maven-使用Hudson进行持续集成及系统配置

14 Maven-监视任务.用户管理.工作目录 13 Maven-创建Hudson任务 12.1 持续集成的作用.过程和优势 简单的说,持续集成就是快速且高频率地自动构件项目的所有源码,并为项目成员提供丰富的反馈信息. --快速:集成的速度要尽可能的快,开发人员不希望自己的代码提交半天后才得到反馈. --高频率:频率越高越好,例如每隔一个小时就是个不错的选择,这样问题才能今早的反映出来. --自动:持续集成应该是自动触发并执行的,不应该有手工参与. --构件:包括编译.测试.审查.打包.部署等工

Azure云中Web应用的持续集成实践

由于从事的工作领域关系,目前会或多或少的关注DevOps课题的相关领域,当然目前还在尝试多种适应于持续开发持续集成领域的工具和组合方式,个人粗浅的领会是DevOPS其实既不会只是开发者需要关注的,也是运维人员应该关注的领域,因为未来的IT世界其实是个"相对混合"的空间,发展之快超出想象:在开发测试领域的工具上看,Chef/Puppet/PowerShell DSC,到开源领域广泛应用Salt Stack, Ansible到 Docker生态圈等封装一系列基础架构即代码等概念的涌现,无时

用MSBuild和Jenkins搭建持续集成环境(1)

http://www.infoq.com/cn/articles/MSBuild-1 你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编译错误,或者有的测试失败了,或者代码不符合质量标准所要求的底限,你该怎么办? 最不靠谱的解决方案就是寄希望于所有人都是精英,他们根本不会犯这些错误.但如果真的出现了这些问题,我们就希望发现的越早越好.最好的方式就是只要有代码提交,我们就有某种方式对它进行验证.这就是持续集成的作用. 持续集成相关的工具

持续集成TeamCity的配置与使用

什么是TeamCity TeamCity是由Jetbrains开发的一款功能强大的持续集成(Continue Integration)工具,包括服务器端和客户端,目前支持Java,.Net项目开发. TeamCity提供一系列特性可以让团队快速实现持续继承:IDE工具集成.各种消息通知.各种报表.项目管理.编译,单元测试,自动发布等等,所有的这些,都是让你的团队快速享有持续继承带来的效率提升.高质量的软件保障. TeamCity提供一个支持20个Build Configuration+3个Age

Jenkins在Windows系统dotnet平台持续集成

        之前写过一篇文章是在CentOS上构建.net自动化编译环境, 今天这篇是针对于Windows平台的环境.        Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作, Jenkins是由Sun的前员工开发的,它的根基是Java,但也可以用在非Java的项目里,比如PHP.Ruby on Rails..NET.持续集成相关的工具有很多.它提供了Web界面,用户

CI / CD /CD 持续集成 持续交付 持续部署

CI / CD /CD 持续集成 持续交付 持续部署 CI CD 是啥?干了啥? CI continuous integration 持续集成 CD continuous delivery 持续交付 CD continuous deploy 持续部署 他们干了点啥 代码自动building 测试环境和项目的自动部署 生产环境和项目的自动部署 恩恩 都是这些 和 管理工作 ** 因为是自动化的 可以在你合并代码后几分钟就开始测试 ** 流程: 用户提交代码到仓库 ->合并代码 -> 自动编译代码

持续集成(CI)工具------Hudson(Continuous Integration)安装与配置详解

本文允许转载,但请标明出处:http://blog.csdn.net/wanghantong/article/, 版权所有 文章概述: 一. 描述了持续集成工具Hudson的安装与配置 二. 描述了Git .Maven环境的安装与配置 三. 描述了扩展邮件通知及其配置方法 四. 描述了jira的配置 一.Hudson简介 Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控持续的软件版本发布/测试项目 下载地址:http://eclipse.org/download