Автоматизированная публикация работы разработчика с использованием cc.net - PullRequest
2 голосов
/ 13 мая 2009

Я хочу создать проект сборки для разработчика, а затем должен опубликовать его на сервере, а после успешной публикации необходимо создать свой тестовый проект для публикации этого разработчика. Основная идея состоит в том, чтобы запускать этот процесс всякий раз, когда какой-либо разработчик фиксирует что-то на Svn.

В настоящее время я использую CC.net и MSBuild. Есть идеи, как выполнить эту работу.

Шаг 1. Фиксация разработчика на SVN Шаг 2. Обнаружение изменений на Svn и обновление на сервере сборки Шаг 3. Создайте проект с последними изменениями Шаг 4. Опубликуйте его на сервере Шаг 5. затем запустите тесты для недавней публикации (я успешно делаю этот процесс с использованием cc.net, msbuild и nunit)

Ответы [ 3 ]

1 голос
/ 13 мая 2009

Раздел издателя в 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. .

1 голос
/ 13 мая 2009

если вы используете тег Project, вы также можете включить в него издателя. Например:

<project >  
 <tasks>  ... 
 </tasks>   
<publishers> 
 <buildpublisher>   
   <sourceDir>path with built binaries</sourceDir>
   <publishDir>path that will be shared</publishDir>
  </buildpublisher> 
 </publishers> 
</project>
0 голосов
/ 07 июля 2009

Вы также можете написать «push» в свой MS Build Script. Это дало бы вам гибкость и контроль, о которых говорит Сэм, и при этом гарантировало бы, что публикация произойдет только в случае успешной сборки.

...