持续集成(图片显示不出来,把完整版放到了附件里)

 

1、什么是持续集成及持续集成的作用

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

 

持续集成的关键是完全的自动化,读取源代码、编译、连接、测试,整个创建过程都应该自动完成。对于一次的创建,要求在这个自动化过程中的每一步都不能错,而最重要的一步是测试,只有最后通过测试的创建才是成功的创建。

在持续集成里创建不再只是传统的编译和连接那么简单,创建还应该包括自测试,自测试的代码是开发人员提交源码的时候同时提交的,是针对源码的单元测试。将所有的这些自测试代码整合到一起形成测试集,在所有的最新的源码通过编译和连接之后还必须通过这个测试集的测试才算是成功的创建。

 

2、持续集成服务器

在进行持续集成实践前,应当正确的选择并配置持续集成服务器。比较成熟的持续集成服务器包括:CruiseControl, Anthill, Bamboo, TeamCity, Continuum 等。CruiseControl作为开源产品,以其对于各种SCM以及构建工具的广泛支持而被许多开发团队所接受。

3、持续集成实践前的准备工作

至少要安装java1.4,安装Subversion Documentation,安装CruiseControl

4、持续集成服务器CC

CruiseControl是一种持续集成过程的框架,包括邮件通知,ant和各种源码控制工具的插件。并提供了web接口,用于查看当前和以前的创建的结果。

持续集成的重要特征之一是自动化,而CCBuild Loop就是为支持自动化而设计的。Build Loop也是CC的核心。

Build Loop是循环创建的意思,CC提供了一个daemon进程,进程自动根据配置的实践间隔读取CC配置文件并进行循环创建,每次CC都会重新加载配置文件。

Build Loop的过程如下:访问源码控制系统,查看是否有代码被修改,如果有,获取源码的新版本,并根据配置对源码进行一次build,创建一个日志文件,最后向开发人员通知build的结果。

 

5、了解配置文件

<project name="connectfour">  --这里的name应该和你在projects目录下的项目名完全一致

<listeners>          --用于监听项目状态的变化(指building,passed等)

<bootstrappers>        --用于CruiseControlRepository更新代码

<modificationset quietperiod="30">      --用于监听在quietperiod秒内,Repository是否变化

<schedule interval="300">  --用于每隔interval秒,CruiseControl去检查并计划一次构建

<log>  --用于得到并保存log文件。默认情况下,将放在projects/${project.name}的目录下

<publishers>  --用于将构建的结果(如二进制文件)发布到指定的位置

<onsuccess>  --决定在构建成功的情况下,发布哪些内容

注意:

1.   <listeners> 用于监听状态变化,如waiting for buildqueuedbuilding。一般不用改变。

2.   <bootstrappers>用于检出代码,CruiseControl有很多种bootstrapper,示例中使用的是SVNlocalWorkingCopy属性是指你把代码检出到安装CruiseControl机器的哪个文件目录。

3.   <modificationset>用于监听Repository的变化频率,如果CruiseControl发现代码有变化,而且在quietperiod秒内没有其它用户检入代码(用于保证被构建的版本完整性),CruiseControl才会检出代码。

4.   <schedule >用于指定CruiseControl去检查Repository的时间间隔。并指定使用哪个构建文件。示例中使用的是ant脚本,构建文件是被检出项目的根目录下的build.xml(即在Repository中)。

5.   <log>用于指定CruiseControl把日志放在哪里,把哪些构建结果放在日志中。如果没有指定任何属性,默认为logs目录下的${project.name}目录。

<publishers> 用于在构建结束后,发布哪些消息和文件。CruiseControl有很多插件可以做各种各样的Publishing。例如,在构建成功后,通过http调用指定的页面,也可以给指定的人发邮件。在失败时,播放音乐,通知team

 

6、运行CruiseControl
    
直接运行CruiseControl目录下的CruiseControl.bat,当从Console中看到它启动完毕后,你就可以在浏览器中访问http://localhost:8080/dashboard,此时你会看到一个名为connectFour的示例项目在Dashboard上显示了。


7、加入新项目

1、手工检出文件

确保将项目代码检出到${CC_HOME}/projects/yourprojectname目录下,即在该目录就是你项目的根目录,可以找到名为build.xml文件。

2、     修改配置文件(添加你的项目),在配置文件config.xml中增加以下配置

<project name="yourprojectname">

    <listeners>

      <currentbuildstatuslistener file="logs/${project.name}/status.txt" />

    </listeners>

    <bootstrappers>

      <svnbootstrapper localWorkingCopy="projects/${project.name}" />

    </bootstrappers>

    <modificationset quietperiod="30">

      <svn localWorkingCopy="projects/${project.name}" />

    </modificationset>

    <schedule interval="300">

      <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" />

    </schedule>

    <log>

      <merge dir="projects/${project.name}/target/test-results" />

    </log>

    <publishers>

      <onsuccess>

        <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar" />

      </onsuccess>

    </publishers>

  </project>

   3、查看结果

(1) CruiseControl会自动更新这个配置文件,加载时间一般是在任何一个项目需要检查是否有更新时。

(2) 你会看到这个项目在Dashboard上首先是灰色的方块,因为这个项目还从来没有在CruiseControl上构建过,没有任何历史信息,我们称该项目为"inactive"

(3) 过一会儿,你会看到一个环形动态图标,表示它在构建中(执行build.xml脚本)。

(4) 当环形动态图标消失时,你会看到它变成红色(如果构建失败的话)或绿色(如果构建成功的话)。

注意:

(1) 目前CruiseControl还不支持首次自动检出代码,所以你要先把项目代码手工检出到本地。

(2) 如果你的SVN使用https方式更新代码,你一定要在命令行方式检出代码,并选择永久接受证书。

(3) CruiseControl这个分支版本不支持在UI上增加项目。

(4) 如果你在config.xml文件中把你的项目删除,却不删除它的日志的话,你在Dashboard上还是可以看到这个项目,此时它被标记为"Discontinued",表示你可以看到它的历史信息,但CruiseControl不会再构建它了。

8、检测项目的状态

1、项目的状态

首先CruiseControl把项目分成三类,DiscontinuedInactive,及Active

如果一个项目是Discontinued,表示CruiseControl可以找到该项目的日志文件,但在配置文件(Config.xml)中并没有该文件。所以CruiseControl不会去构建它,但你可以看到这个项目过去构建的历史信息。如果想把这个项目从CruiseControl中删除,只有把该项目的日志目录删除才行。如果该项目名为"vcdstore",目录当该是${CruiseContor.Home}/logs/vcdstore

如果一个项目是Inactive,表示CruiseControl在配置文件(Config.xml)中发现了该项目,但是没有发现关于这个项目的任何历史信息,即在CruiseControl的日志目录中还没有该项目的日志文件,或日志文件被人为删除了。CruiseControl会根据配置信息对这个项目进行检查新版本并进行构建。当第一次构建完成后,CruiseControl就会生成日志,这个项目状态就会转为Active了。

如果一个项目是Active,表示CruiseControl即可以找到该项目的日志文件,又在配置文件(Config.xml)中可以发现它。此时,这个项目可能是构建成功,也可能是构建失败,还可能是构建中。

2Dashboard

你可以通过 http://localhost:8080/dashboard 访问Dashboard

Dashboard主要有四个页面,它们分别是DashboardBuildsBuild DetailsAdministatiorn

(1) Dashboard

你可以在Dashboard上看到所有项目的状态,红色方块表示该项目最近一次构建是失败的。绿色方块表示该项目最近一次构建是成功的。灰色方块表示该项目可能是Inactive的,也可能是Discontinued

当把鼠标放在小方块上时,会显示该项目的主要信息。点击小方块,会进入Build Details页面。

(2) Builds

你可以在Builds页面上以列表的方式看到所有项目的状态,点击每个列表,可以进行Build Details页面。

如果你将ForceBuild配置为true,在列表右侧有一个按钮,你可以强迫该项目进行构建,而不必等到其下一次检查,也不必等到它有版本变化。

(3) Build Details

此页面会列出该项目某次构建的详细信息,包括与上次构建相比有哪些变化,测试结果是什么,详细的日志输出,如果构建成功的话,在配置文件(config.xml)中配置的Artifacts也会在名为Artifiactstab页上看到。

右侧的列表是该项目所有的构建列表,点击其中一个构建,你就可以得到该次构建的详细信息。

3CruiseControl Reporting

你也可以通过链接http://localhost:8080/ 来访问CruiseControlOld Reporting

点击项目名称,可以看到详细内容。

4CruiseControl JMX控制台

你也可以通过链接http://localhost:8000/来访问CruiseControlJMX控制台。

在控制台上点击项目名称(如connectfour),可以修改项目配置,暂停/恢复项目构建等。

 

 

 

5.PMD的配置

设置路径:

<path id="pmd.classpath">

    <pathelement location="${basedir}/"/>

    <fileset dir="build/pmd/">

        <include name="*.jar"/>

    </fileset>

</path>

 

<target name="pmd">

      <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath"/>

       <pmd rulesetfiles="basic" shortFilenames="true">

        <formatter type="xml" toFile="pmd.xml" linePrefix=".line"/>

          <fileset dir="src/example/">

              <include name="HelloWorld.java"/>

          </fileset>

      </pmd>

  </target>

注意:

jaxen-1.1.1.jar pmd-4.2.5.jar asm-3.1.jar要放到pmd.classpath设定的路径下。

6.Audit的配置

   <target name= "cmd">

      <echo>运行runjava2wsdl.bat命令行</echo>

      <exec dir="C:/Program Files/CruiseControl/projects/" executable="cmd.exe">

            <arg line="/c audit.bat"/>

      </exec>

   </target>

     注意audit.bat的路径

     已经在audit.bat中设置了选项:--quite --xml --f test.xml HelloAnt

 

发布了26 篇原创文章 · 获赞 11 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章