首开CSDN技术博客,正在学习CI的思想,写点先

    技术2024-04-18  113

        持续集成的思想:

        持续集成(CI)是一种实践,可以让团队在持续的基础 上收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。通俗一点儿说,就是指对于开发人员的每一次代码提交,都自动地把Repository中所有代码Check out到一个空目录,并且自动运行所有Test Case。如果成功则接受这次提交,否则告诉所有人,这是一个失败的Revision。更具体的解释可以参考Martin fowler的Continuous Integration 。 

         刚开始接触这个思想感觉很时髦,一到网上查资料才发现原来持续集成已经存在了N年了。我上一个项目是一个android项目,在Ubuntu下开发Java程序。当时组里的高人在服务器上搭建了Hudson+Maven2的持续集成环境,两周以后改成了Hudson+Ant。未请教原因,因为感觉CI离自己实在太远,自己就是一个小测试人员。

        用Maven2的过程中,要在eclipse中安装maven插件,最后在项目里Maven install。每次提交代码的时候总是通不过,郁闷的要死,改成Ant以后好多了,是不是这个原因啊哈哈。

        找了一些知识和思想性的东西。供自己参考:

     

    关于Hudson

     

    (Hudson官方网站:http://java.net/projects/hudson/)

    官网上有适用于各种操作系统的Hudson版本,不管是windows还是linux系统,配置大同小亦,稍后介绍。

     

    1. Hudson is one open source tool to perform Continuous Integration. The basic functionality of Hudson is to monitor a SCM (Source Control System) and if changes occurs to start and monitor a build system (for example Apache Ant or Maven). Hudson will monitor the whole process and provide reporting functionality and notification functionality to report success or errors.

    Hudson can be extended by additional plugins.

    2. To use Hudson you need:

    1)An accessible source code repository, e.g. subversion, with your code checked in.

    2)A working build script, e.g. ant script, checked into the respository

    3)A webapplication server, e.g. Tomcat, to run Hudson

     

    自己的理解:hudson在整个CI过程中是一个调度者的角色,他一边从subversion中checkout出代码,一边调用Ant的Build.xml脚本进行构建,部署的时候只要将hudson放在应用服务器上就可以,然后配置一下JDK,Ant,SVN/CVS。也可以配置邮件服务器,构建的触发方式,以及构建的周期等等。

    hudson的工作原理:

    (附:[1] 程序员通过SVN客户端提交代码。[2] Hudson用svnupdate命令从svn中更新代码到本地。[3] Hudson调用项目里的Ant或者Maven脚本进行构建。[4] 构建结束,生成报告并记录日志,发送结果。[5] 用户可随时通过浏览器在Hudson上浏览构建结果。)

     

    Hudson安装与配置:

     

     

     2.1. Apache Ant, Tomcat

     

    Install Tomcat. See Apache Tomcat Tutorial .

    For the usage of Hudson you need to setup Apache Ant as a build tool. See Using Apache Ant for details.

    2.2. Hudson

    Download the "hudson.war" file from Hudson Homepage and put the it into your Tomcat "webapps" directory. If you start Tomcat your Hudson installation should be available under http://localhost:8080/hudson/.

    2.3. Configure Hudson

    Before using hudson you need to tell it where your JDK and ant installation is. Go to Hudson under "http://localhost:8080/hudson/" and click "Manage Hudson" and then "Configure System"

     

     

    Other CI servers/tools:

        持续集成会将最新的代码进行构建通过测试以后方可以成功,所以我在思考怎样将自动化的测试用例整合到Hudson里面呢?或者说这样的话是不是有点外行呀呵呵?反正是自己思考的过程,自己看吧!我觉得这过程全靠Ant或者Maven。之后再说

        在进行持续集成实践前,应当正确的选择并配置持续集成服务器。比较成熟的持续集成服务器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作为开源产品,以其对于各种SCM以及构建工具的广泛支持而被许多开发团队所接受。而开发自动化专家 Duvall 采用一致的评估标准和很多说明性示例,介绍了一些开源 CI 服务器,包括 Continuum、CruiseControl 和 Luntbuild。并指出“要根据 自己的 具体技术和政策需求对工具进行分析。并用以下五个指标来评估CI工具,它们分别是:(1)  特性;(2)  可靠性;(3)  寿命;(4) 目标环境;(5) 易用性。结果如下表:而CruiseControl是我唯一真正用过的持续集成工具,它现在灵活而又强大功能也让我瞠目,而且配置与管理也较两年前容易得多啦。为什么说它强大呢?因为你只要想得到的问题,它也都会有所考虑。朋友的Blog上有些CruiseControl的最佳实践足以证明这一点,只要你肯去实践。据说:CruiseControl也是一款强大的CI服务器,以后在学习了。先留一篇博客:http://www.cnblogs.com/xiaocheng/archive/2009/06/21/1507755.html

    ANT

    说到ant,又是一个很高深的工具,要真的会持续集成,你要有本事把script写出来,build.xml,我对xml的了解只是面上的,里面嵌的shell脚本也是面上的,所以跟组里的架构师们比起来,我差得远呢。。。。。

    (一下关于Ant内容来自:http://windy2coast.javaeye.com/blog/108912)

    ANT是一个基于Java的自动化脚本引擎,脚本格式为XML。除了做Java编译相关任务外,ANT还可以通过插件实现很多应用的调用。 1)ANT的基本概念: 2)ANT的安装:解包,设置路径 3)ANT的使用:最好的学习只不过是一个简单实用的例子起步…… ANT的基本概念:Java的Makefile 当一个代码项目大了以后,每次重新编译,打包,测试等都会变得非常复杂而且重复,因此c语言中有make脚本来帮助这些工作的批量完成。在Java中应用是平台无关性的,当然不会用平台相关的make脚本来完成这些批处理任务了,ANT本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。 每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。 任务1:usage 打印本脚本的帮助信息(缺省) 任务2:clean <-- init 清空初始化环境 任务3:javadoc <-- build <-- init 生成JAVADOC 任务4:jar <-- build <-- init 生成JAR 任务5:all <-- jar + javadoc <-- build <-- init 完成以上所有任务:jar javadoc 而多个任务之间往往又包含了一定了依赖关系:比如把整个应用打包任务(jar)的这个依赖于编译任务(build),而编译任务又依赖于整个环境初始化任务(init)等。 注:我看到很多项目的ant脚本中的命名基本上都是一致的,比如:编译一般叫build或者compile;打包一般叫jar或war;生成文档一般命名为javadoc或javadocs;执行全部任务all。在每个任务的中,ANT会根据配置调用一些外部应用并配以相应参数执行。虽然ANT可调用的外部应用种类非常丰富,但其实最常用的就2,3个:比如javac javadoc jar等。 ANT的安装 解包后在系统可执行路径中加入指向ant的bin的路径就可以了,比如可以在GNU/Linux上把以下配置加入/etc/profile中: export ANT_HOME=/home/ant export JAVA_HOME=/usr/java/j2sdk1.4.1 export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin 这样执行ant 后,如果不指定配置文件ant会缺省找build.xml这个配置文件,并根据配置文件执行任务,缺省的任务设置可以指向最常用的任务,比如:build,或指向打印帮助信息:usage,告诉用户有那些脚本选项可以使用。 ANT的使用 最好的学习过程就是看懂那些open source项目中的build.xml脚本,然后根据自己的需要简化成一个更简单的,ANT和APACHE上很多非常工程派的项目:简单易用,而且适应性非常强,因为这些项目的建立往往来源于开发人员日常最直接的需求。

    关于Ant的自动化测试内容又是一个很好的话题,ant可以与selenium, junit等自动化测试工具整合使用,这个话题以后再论,先贴两篇高人的博客(http://caoyanbao.javaeye.com/blog/453772,http://blog.sina.com.cn/s/blog_44e5fca90100gbsl.html)

    最新回复(0)