Cruise Control .Net服务器无法检测Starteam上的修改

时间:2008-11-20 09:32:38

标签: cruisecontrol.net starteam

我正在使用Cruise Control .Net 1.4进行持续集成,并将其安装在我的Windows 2000桌面上。 Build有Nant 0.85。 My Source控件在Borland Starteam 2005中。我安装了.Net 2003框架,用于创建VB.Net windows应用程序。我安装了CCNet,我认为我的CCnet.config文件配置正确。

我面临的问题是,每当我更改任何代码并检查Starteam时,CCNet服务器都无法检测到修改,因此我无法在修改的基础上触发构建。我必须依靠forcebuild。但是我的项目每1分钟使用forcebuild是不可接受的。我希望触发器基于修改。即只要在Starteam上检测到更改,就会自动进行构建。

我的CCNet.config文件是这样的:

         

<workingDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</workingDirectory>
<webURL>http://172.24.120.37/ccnet</webURL>

<triggers>
    <intervalTrigger name="continuous" seconds="120" buildCondition="ForceBuild" initialSeconds="120"/>         
    </triggers>


<sourcecontrol type="starteam">
   <executable>C:\Program Files\Borland\StarTeam Cross-Platform Client 2005 R2\stcmd.exe</executable>
   <project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>
   <username>600513221</username>
   <password>car0b0ts</password>
   <host>oscar.nat.bt.com</host>
   <port>51234</port>
   <autoGetSource>true</autoGetSource>
   <timeout units="minutes">10</timeout>
</sourcecontrol>


<tasks>
      <!-- Configure NAnt to compile the updated files -->c:\
    <nant>
    <executable>C:\Documents and Settings\uj0011637\Desktop\Cruise Control\nant\nant-0.85\bin\NAnt.exe</executable>
    <baseDirectory>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\CCNet17Nov08</baseDirectory>
    <nologo>false</nologo>
    <buildFile>CCNet17Nov08.build</buildFile>
    <logger>NAnt.Core.XmlLogger</logger>
    <buildTimeoutSeconds>1200</buildTimeoutSeconds>
    </nant>
</tasks>


<!--Publishers will be done after the build has completed-->
 <publishers>
  <xmllogger>
    <logDir>C:\Documents and Settings\uj0011637\Desktop\StarteamCruiseControl\Log</logDir>
  </xmllogger>
 </publishers>

 <modificationDelaySeconds>10</modificationDelaySeconds>

我的构建文件是这样的:

    

<target name="clean" description="Delete all previously compiled binaries.">
    <delete>
        <fileset>
            <include name="**/bin/${project::get-name()}.dll" />
            <include name="**/obj/**" />
            <include name="**/*.user" />
        </fileset>
    </delete>
</target>
    
<target name="rebuild" dependsontarget="clean, build ">
<zip zipfile="${project::get-name()}.zip"  verbose="true">
    <fileset>
    <include name="**/bin/*.dll" />
    <include name="**/bin/*.exe" />
    </fileset>
    <fileset>
    <include name="*.aspx" />
    <include name="*.css" />
    <include name="*.config" />
    <include name="*.js" />
    <include name="*.asax" />
    <include name="**.txt" />
    <include name="**.vb" />
    <include name="**.vbproj" />
    <include name="**.user" />
    <include name="**.sln" />
    <include name="**.suo" />
    <include name="**.resx" />

    </fileset>
    <fileset prefix="SQL">
    <include name="*.sql" />
    </fileset>
</zip>



</target>

<target name="unit_test" description="Run unit tests.">

     <exec program="${nunit.dir}\nunit-console.exe" commandline="bin/${prjname}.exe /xml=${prjname}.xml /nologo" />

   </target>

    <target name="build.Console">

    <solution configuration="release" solutionfile="CCNet17Nov08.sln">

    </solution>

    <property name="expected.output" value="bin/${prjname}.exe"/>
    <fail unless="${file::exists(expected.output)}">Output file doesn't exist in ${expected.output}</fail>

</target>

有人可以指导我吗?

4 个答案:

答案 0 :(得分:1)

我在理解安装和配置CruiseControl.Net的文档时遇到了挑战,StarTeam是运行IIS 7的Vista系统中的源控制器。最后,我成功设置了巡航控制系统。我列出了让它运作的步骤。

第1步:从这里获取CruiseControl.Net的副本。运行安装程序。作为安装的一部分,安装程序将安装ccnet服务器和webdashboard。

步骤2:安装完成后,要启动并运行webdashboard,请启动浏览器并键入。 http://localhost/ccnet(这是安装时的默认虚拟目录。这指向构建服务器中的$ InstallFolder / webdashboard文件夹。如果系统运行IIS5或6,那么您将在IIS7中看到CruiseControl.Net页面,抛出500错误。要解决此问题,请继续执行步骤3,如果没有遇到问题,请继续执行步骤4.

步骤3:以管理员身份运行followin命令。注意:此处ccnet是指向系统中webdashboard的物理位置的虚拟目录。

%SystemRoot%\ system32 \ inetsrv \ appcmd migrate config“默认网站/ ccnet”

运行命令后,只需重新启动iis并浏览到http://localhost/ccnet。它应该显示CruiseControl.Net仪表板。

步骤4:下一步是配置ccnet服务器。打开位于安装目录的“server”文件夹中的ccnet.config文件进行编辑。

项目部分:

定义项目部分。项目名称可以是任何标识符,不一定是您的项目名称。这将由CruiseControl.Net用于识别您的项目。

来源控制科

就我而言,源代码控制是StarTeam。将设置各种属性,如登录凭据,项目等。

可执行文件:Star Team命令行实用程序'stcmd.exe'的路径。

项目:Star Team中定义的项目名称,必须提取。

UserName,Password,Host,Port:Star Team Server连接设置。

路径:必须从StarTeam中提取文件的路径。示例:考虑StarTeam中的Project根文件夹是“Test”。让项目和解决方案文件位于层次结构“Test \ TestProject \ MyProject”中。要从此位置提取项目文件和解决方案,请为项目指定“Test”,为路径指定“TestProject \ MyProject”。

覆盖文件夹工作目录:要为构建检出Star Team文件的路径。如果未指定,StarTeam中指定的原始工作文件夹将用于提取文件。

自动获取来源:将此指定为“true”将允许CruiseControl.Net自动检出StarTeam中的文件

fileHistoryRegEx:我必须对Date正则表达式进行更改,因为我的区域设置已配置为英语(印度),其中DateTime指定为DD-MM-YYYY HH:MI:SS(IST)。我不得不改变这个,因为我在运行期间得到了格式无效:System.DateTime异常。

TimeOut:指定StarTeam轮询的超时时间。

以下是starteam配置块的完整列表。 的StarTeam

的StarTeam

MSBuild部分

我使用MsBuild进行构建任务。以下部分介绍了为CruiseControl.Net获取MsBuild设置所涉及的属性。

可执行文件:系统中“MsBuild.exe”文件的路径。

工作目录:要构建的文件的位置。即,StarTeam提取需要构建的文件的位置。

项目文件:.proj文件或需要构建的.sln文件。

Build Args:指定传递给msbuild.exe的其他参数。

目标:要完成的行动。在这里,我想要在解决方案上完成Clean'然后'Build'。

超时:如果无法调用构建,将显示错误消息的时间。

记录器:将用于生成构建结果的记录器程序集的位置。

以下是msbuild配置块的完整列表。 MS Build

MS Build

触发部分

触发器部分指定必须调用项目构建的时间和条件。在初始设置测试期间,将buildCondition设置为“ForceBuild”(强制构建),一旦测试完成,将其更改为“IfModificationExists”(仅在检测到修改时才构建)。

以下是触发器配置块的完整列表。 触发器

触发器

步骤5:运行位于CruiseControl.Net安装位置的“server”文件夹中的ccnet.exe应用程序。代码将从StarTeam提取到指定的位置,构建应该继续。构建结果存储在$ InstallFolder \ ProjectName \ Artifacts \ ms-build.xml文件中。

希望这有帮助。

答案 1 :(得分:0)

我并不感到惊讶,我曾经使用过一次Star Team,我只能说我必须在该存储库工具中习惯的垃圾级别在我的整个编程生涯中仅被Source Safe所覆盖。

不要使用Star Team,如果我今天开始一个大型新项目,我可能会使用GIT ......

答案 2 :(得分:0)

试试这个:

  • 更改配置文件中的项目设置
  

<project>DEL_CA_ROBOTS\Tools\CCNet17Nov08</project>

  <project>Project_name\View_name</project>
   <path>StarteamFolderName</path>

例如,如果您的项目名称为DEL_CA_ROBOTS且视图名称也为DEL_CA_ROBOTS ,脚本应该像...

   <project>DEL_CA_ROBOTS\DEL_CA_ROBOTS</project>
   <path>Tools\CCNet17Nov08</path>

希望它有所帮助。

答案 3 :(得分:0)

您是否尝试过使用starteam将文化设置为<culture>en-US</culture>

我使用Visual Source Safe遇到了同样的问题。唯一的问题是文化设置不正确。

干杯。