CCNet - Удалить рабочую копию перед MSBuild?
-
28-09-2019 - |
Вопрос
Я устанавливаю непрерывную интеграционную среду, используя Server VisualSVN и CrusiControl.net. Что я хочу сделать, это удалить рабочую копию до начала задачи MSBuild?
Я прочитал, что смогу использовать NANT или файл пакет, который будет вызывать CCNET. Что здесь лучше всего? Любая помощь по этому бы мне здорово!
Вот экстракт секции ccnet.config
<tasks>
<msbuild>
<ItemGroup>
<FilesToDelete Include="C:\CruiseControl\Working\\\**\*"/>
</ItemGroup>
<Target Name="Task" DependsOn="Preparation">
build
</Target>
<Target Name="Preparation">
<Delete Files="@(FilesToDelete)" />
</Target-->
<executable>
C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe
</executable>
<projectFile>Example.sln</projectFile>
<buildArgs>
/p:Configuration=Release /p:MSBuildExtensionsPath=C:\Progra~2\MSBuild /p:MSBuildEmitSolution=1 /verbosity:minimal
</buildArgs>
<logger>
C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
</logger>
</msbuild>
</tasks>
Решение
Я нашел ответ на мой оригинальный вопрос:
Мне просто пришлось поставить чистопию верно внутри блока Sourceconrol.
<sourcecontrol type="svn">
<trunkUrl>TRUNK-URL</trunkUrl>
<executable>SVN.EXE</executable>
<username>TEST</username>
<password>TEST</password>
<cleanCopy>true</cleanCopy>
</sourcecontrol>
Другие советы
Я не думаю, что изменение сценария MSBuild - самое простое решение здесь. Удаление рабочей копии не является частью самой сборки, она является частью процесса сборки CC .NET. Вам нужно, когда вы строятся с cc.net, не при создании vs или ellight.
То, что я бы сделал, это либо сделать это с пакетной, PowerShell или MSBuild Script. Удаление каталога является простым, поэтому я бы порекомендовал сделать это с пакетом:
<prebuild>
<exec>
<executable>cmd.exe</executable>
<buildArgs>/c "if exist "C:\CruiseControl\Working" rd /s /q "C:\CruiseControl\Working""</buildArgs>
</exec>
</prebuild>
<tasks>
<msbuild>
<executable>
C:\WINDOWS\microsoft.net\Framework64\v3.5\MSBuild.exe
</executable>
<projectFile>Example.sln</projectFile>
<buildArgs>
/p:Configuration=Release /p:MSBuildExtensionsPath=C:\Progra~2\MSBuild /p:MSBuildEmitSolution=1 /verbosity:minimal
</buildArgs>
<logger>
C:\Program Files (x86)\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll
</logger>
</msbuild>
</tasks>
Вы могли бы фактически сделать первую часть вашей задачи MSBUILD HEADE HOTEL CONTECTION Directory, выполняя очистку
Вы могли бы сделать это по домену что-то похожее на это
<ItemGroup>
<FilesToDelete Include="<PathGoesHere>\**\*"/>
</ItemGroup>
<Target Name="Task" DependsOn="Preparation">
//normal task happens here
</Target>
<Target Name="Preparation">
<Delete Files="@(FilesToDelete)" />
</Target>