使用cc.net自动发布开发人员工作

时间:2009-05-13 12:11:58

标签: svn msbuild nunit cruisecontrol.net

我想构建一个开发人员构建项目,然后需要将其发布到服务器上。成功发布后需要针对该开发人员发布构建我的测试项目。基本的想法是在任何开发人员在Svn上提交内容时运行此过程。

目前我正在使用CC.net和MSBuild。任何人都知道如何完成这项工作。

步骤1.开发人员在SVN上提交 步骤2.检测Svn上的更改并在Build服务器上进行更新 步骤3.使用最近的更改构建项目 步骤4.将其发布到服务器 步骤5.然后针对最近的发布运行测试(我通过使用cc.net,msbuild和nunit成功完成此过程)

3 个答案:

答案 0 :(得分:1)

如果您使用的是Project标记,则还可以在其中包含“in it”发布者。 例如:

<project >  
 <tasks>  ... 
 </tasks>   
<publishers> 
 <buildpublisher>   
   <sourceDir>path with built binaries</sourceDir>
   <publishDir>path that will be shared</publishDir>
  </buildpublisher> 
 </publishers> 
</project>

答案 1 :(得分:1)

无论构建是成功还是失败,CC.Net中的发布者部分都将被执行。您需要在任务部分下添加“发布到构建服务器”作为任务 - 将其放在上一个构建步骤之后。

这将导致CC.Net仅在完成所有先前的“任务”时“发布到构建服务器”,而不会引发错误代码。

通常,如果您知道DOS .bat文件中需要什么来“发布到构建服务器”,则执行以下操作;

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
        <workingDirectory>c:\Somewhere</workingDirectory>
        <projectFile>Something.sln</projectFile>
        <buildArgs>/noconsolelogger /p:Configuration=Debug /v:m</buildArgs>
        <targets>Build</targets>
        <timeout>720</timeout>
        <logger>C:\program files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
    </msbuild>
    <exec>
        <executable>C:\program files (x86)\CruiseControl.NET\server\PublishToServer.bat</executable>
        <baseDirectory>C:\somewhere</baseDirectory>
        <buildArgs></buildArgs>
        <buildTimeoutSeconds>9000</buildTimeoutSeconds>
    </exec>
</tasks>

正如slawekg指出的那样,你可以使用buildpublisher,如果构建成功,它将执行 但是我仍然发现使用批处理文件进行复制比可用的更复杂buildpublisher。

答案 2 :(得分:0)

您也可以考虑将“推送”写入MS Build Script。这将为您提供Sam所讨论的灵活性和控制权,并且仍然确保只有在构建成功时才会发布发布。