cruisecontrol 完美实现svn c++ cppunit的持续管理

经过三天的配置,终于把cruisecontrol 配置好了,其实要说配置好,第一天装上就可以用了,因为cc里面本来就有例子,可实现java+svn+junit的持续集成。但,我手上的项目是C++的,用的是cppunit,没办法,只得仔细看配置文档,上网查教程。也许你会问,为什么不用CCNET,CCNET本身就支持C++ CPPUNIT,原因很简单,其实我就是想挑战一下而已,呵呵!因为我相信,CC做了这么多年,不会是这么差劲,肯定有办法让他支持其它语言。

好了,闲话不多说,我一向写BLOG都是直奔主题的,这次说了么多,实在。。。。。。。。。

 

第一。下载CC cpptask.jar ant-contrib-1.0b3.jar就只需这几个东东哦。cpptask.jar也许你下不到,没关系,把压缩包下下来,然后用ANT编译一下,就会有cpptask.jar了。

第二。把cpptask.jar ant-contrib-1.0b3.jar 放到 cc里面的ant/lib目录下。

第三。cruisecontrol.bat里面加入

set EXTLIBDIR=%ANT_HOME%\lib
  %EXTLIBDIR%\ant-contrib-0.6.jar;%EXTLIBDIR%\cpptasks.jar;

      最后加入即可。

 

第四。下班了,明天再写!

第五。我又来上班啦,继续写。config.xml配置如下,和java项目的配置差不多。

  <project name="test">
    <listeners>
    
    </listeners>
    <bootstrappers>
      <antbootstrapper anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"  />
    </bootstrappers>
    <modificationset quietperiod="30">
      <filesystem folder="projects/${project.name}" />
    </modificationset>
    <schedule interval="30">
      <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}.exe"/>
            </onsuccess>
    
    </publishers>
  </project>

 

第六。配置C++编译环境。在VC下有个

@set PATH=D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;D:\Program Files\Microsoft Visual Studio 8\VC\BIN;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\bin;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\bin;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
@set INCLUDE=D:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;D:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE%
@set LIB=D:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;D:\Program Files\Microsoft Visual Studio 8\VC\LIB;D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\lib;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
@set LIBPATH=c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB

把它加进环境变量里面去,当然你也可通过脚本的方式调用。

 

第七。在test项目里面加入build.xml

<project name="test" default="compile" xmlns:cpptasks="antlib:net.sf.antcontrib.cpptasks">
    <target name="compile">
        <exec   executable= "cmd.exe">
                    <arg   line= "/c   'D:/Program Files/CruiseControl/projects/test/test.bat'"/>
                </exec>

    </target>
</project>

第八。test.bat如下:

svn update
devenv test.sln /rebuild
cd debug
test.exe
说明一下,为什么要svn update,是因为,cc部署在服务器上,而程序员是从自己的PC上提交到SVN服务器,提交上去之后,并不能马上自动构建,而需要update到服务器上,然后从服务器的checkout目录构建。

 

第九。如果你发现CC并不自动构建你配置的项目,那么先看看CC的服务器有没有报什么错,我遇到一个问题就是,在CC第一次去构建项目时,就已经报错,所以CC怎么也不会显示已经构建过项目。以上的做法,已经能让CC编译C++了,但,还看不到想要的结果,CC显示的结果是从LOGS里面去读取出来的。因此在项目里面的CPPUNIT要求要把日志输出到CC/LOGS/TEST目录下去,还有,CC会自动读取最新时间的日志,所以把CPPUNIT输出的日志名字搞个很久以后的时间,这样就没有问题了,哈哈!

 

总结一下,我配置好这个东东大概花了三天的时间,很是想吐血,网上没有什么针对C++ CPPUNIT的文档,官网上也找不到,其实CC++编译什么语言没关系,它做的事就是检测SVN提交,然后调用ANT去编译,至于怎么编译是ANT的事,所以其实要做是让ANT能编译你的东东,然后把日志输出到logs/test目录下面去。

你可能感兴趣的:(C++,c,SVN,C#,配置管理)