CCNet - Удалить рабочую копию перед MSBuild? - PullRequest
2 голосов
/ 03 ноября 2010

Я настраиваю среду непрерывной интеграции, используя VisualSVN Server и CrusieControl.NET.Я хочу удалить рабочую копию перед запуском задачи MSBuild?

Я прочитал, что могу использовать Nant или Batch-файл, который будет вызывать 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>

Ответы [ 3 ]

4 голосов
/ 04 ноября 2010

Я нашел ответ на свой первоначальный вопрос:

Мне просто нужно было поставить trueCopy в блоке sourcecontrol.

<sourcecontrol type="svn">                                            
    <trunkUrl>TRUNK-URL</trunkUrl>                
    <executable>SVN.EXE</executable>           
    <username>TEST</username>                                         
    <password>TEST</password> 
    <cleanCopy>true</cleanCopy>         
  </sourcecontrol>
1 голос
/ 04 ноября 2010

Я не думаю, что модификация скрипта msbuild - самое простое решение здесь.Удаление рабочей копии не является частью самой сборки, но является частью процесса сборки cc .net.Это нужно вам при сборке с помощью cc.net, а не при сборке с использованием VS или другого.

Что бы я сделал, это сделал бы это с помощью batch, powershell или сценария msbuild.Удалить каталог очень просто, поэтому я бы порекомендовал сделать это с помощью пакета:

<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>
0 голосов
/ 03 ноября 2010

вы могли бы фактически заставить первую часть вашей задачи MSBuild подготовить каталог выпуска, выполнив очистку

Вы можете сделать это по домену, что-то похожее на это

<ItemGroup>
    <FilesToDelete Include="<PathGoesHere>\**\*"/>
</ItemGroup>

<Target Name="Task" DependsOn="Preparation">
      //normal task happens here
</Target>

<Target Name="Preparation">
      <Delete Files="@(FilesToDelete)" />
</Target>
...