zoukankan      html  css  js  c++  java
  • CruiseControl.Net+SVN+MSBuild+MSTest的自动构建测试环境

    才从书上看到CruiseControl.Net,这就是我要的。日常工作中常做这个事,从svn下载源码,开Visual Studio,编译,运行测试。这个工具可以自动完成这一系列工作。还能生成报表,监视svn的改动等。

    MSBuild在这个位置:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe

    MSTest在这个位置:D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe(视安装路径)

    这两个工具是.net自带的,在msdn里有详细说明。

    SVN,现在是1.5了。

    主要还是CruiseControl.Net的配置。


    一、下载CruiseControl.Net,我用的是zip版,解压到安装目录。内有4个文件夹:

    cctray:托盘程序,监视当前服务的运行结果
    examples:一些示例的配置文件
    server:服务程序

    webdashboard:web版的监视程序,可查看服务的状态,及历史运行结果。

    监视用的是remote,数据用xml+xsl展示。


    二、配置ccnet.config

    我配置后的结果:

     1<cruisecontrol>
     2  <project>
     3    <name>ccnetTest</name>
     4    <sourcecontrol type="svn">
     5      <trunkUrl>file:///E:/code/TESTccnet/svn/ccnetTest</trunkUrl>
     6      <workingDirectory>E:\code\TESTccnet\workSpase\source</workingDirectory>
     7    </sourcecontrol>
     8    <tasks>
     9      <msbuild>
    10        <executable>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable>
    11        <workingDirectory>E:\code\TESTccnet\workSpase\source</workingDirectory>
    12        <projectFile>ccnetTest.sln</projectFile>
    13        <logger>F:\netTool\CruiseControl.NET\CruiseControl.NET-1.4.0.3535\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
    14        <targets>Build</targets>
    15        <timeout>900</timeout>
    16        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:diag</buildArgs>
    17      </msbuild>
    18      <exec>
    19        <executable>delfile.bat</executable>
    20        <!--<baseDirectory>D:\dev\MyProject</baseDirectory>-->
    21        <buildArgs>E:\code\TESTccnet\workSpase\source\TestResults\mstest-results.xml</buildArgs>
    22        <buildTimeoutSeconds>300</buildTimeoutSeconds>
    23        <successExitCodes>-1,0</successExitCodes>
    24      </exec>
    25      <exec>
    26        <executable>D:\Program Files\Microsoft Visual Studio 8\Common7\IDE\mstest.exe</executable>
    27        <baseDirectory>E:\code\TESTccnet\workSpase\source</baseDirectory>
    28        <!--<baseDirectory>D:\dev\MyProject</baseDirectory>-->
    29        <buildArgs>/testcontainer:TestProject1\bin\Debug\TestProject1.dll /resultsfile:TestResults\mstest-results.xml</buildArgs>
    30        <buildTimeoutSeconds>300</buildTimeoutSeconds>
    31        <successExitCodes>0,1,3,5</successExitCodes>
    32        <!--<environment>
    33          <variable name="test.path" value="${CCNetWorkingDirectory}"/>
    34        </environment>-->
    35      </exec>
    36      <merge>
    37        <files>
    38          <file>E:\code\TESTccnet\workSpase\source\TestResults\mstest-results.xml</file>
    39        </files>
    40      </merge>
    41    </tasks>
    42    <publishers>
    43      <xmllogger />
    44    </publishers>
    45    <triggers>
    46      <!--buildCondition="ForceBuild"-->
    47      <intervalTrigger name="continuous" seconds="30" />
    48    </triggers>
    49  </project>
    50</cruisecontrol>

    行2 project:CCNet可以监视多个项目,每个项目配置一份project;

    行4 sourcecontrol:源码控制,这里用svn。还有其它十多种可以选择。配置好svn源,工作区。用远程时还需要用户密码。

    行8 tasks:本项目要运行的任务

    行42 publishers:默认这样子先

    行45 triggers:触发条件。当前是30秒运行一次。当buildCondition="ForceBuild"时,每次编译,它的默认值是IfModificationExists,表示有代码改动时编译。


    三、重点是task内的配置

    msbuild节:

    executable:程序位置

    workingDirectory:工作位置

    projectFile:项目文件

    logger:编译信息的记录员

    targets:msbuild的动作

    buildArgs:编译参数

    exec节:

    exec可以运行任何命令行的程序。

    这里用它来做文件删除,运行mstest。

    merge节:

    把mstest运行后的结果xml文件,合并到本次运行的结果文件中。这样在webdashboard中就可以看到mstest的结果了。

  • 相关阅读:
    POJ 1386 Play on Words(单词建图+欧拉通(回)路路判断)
    HTTP协议详解??
    Python 中三大框架各自的应用场景??
    django 开发中数据库做过什么优化??
    谈一下你对 uWSGI 和 nginx 的理解??
    django 中间件的使用??
    Flask 中请求钩子的理解和应用?
    七层模型? IP ,TCP/UDP ,HTTP ,RTSP ,FTP 分别在哪层?
    说说 HTTP 和 HTTPS 区别??
    hasattr() getattr() setattr() 函数使用详解??
  • 原文地址:https://www.cnblogs.com/greatqn/p/1261298.html
Copyright © 2011-2022 走看看