Раздел издателя в CC.Net будет выполняться независимо от того, была ли успешной или неудачной сборка. Вам необходимо добавить «публикацию для сборки сервера» в качестве задачи в разделе задач - поставить его после последнего шага сборки.
Это заставит CC.Net «публиковать для построения сервера» только после завершения всех предыдущих «задач», без выдачи кода ошибки.
Как правило, если вы знаете, что нужно в .bat-файле DOS для «публикации на сервере сборки», вы делаете следующее:
<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. .