我想构建一个开发人员构建项目,然后需要将其发布到服务器上。成功发布后需要针对该开发人员发布构建我的测试项目。基本的想法是在任何开发人员在Svn上提交内容时运行此过程。
目前我正在使用CC.net和MSBuild。任何人都知道如何完成这项工作。
步骤1.开发人员在SVN上提交 步骤2.检测Svn上的更改并在Build服务器上进行更新 步骤3.使用最近的更改构建项目 步骤4.将其发布到服务器 步骤5.然后针对最近的发布运行测试(我通过使用cc.net,msbuild和nunit成功完成此过程)
答案 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所讨论的灵活性和控制权,并且仍然确保只有在构建成功时才会发布发布。