Question

Je la mise en place d'un environnement d'intégration continue, en utilisant VisualSVN Server et CrusieControl.NET. Ce que je veux faire est de supprimer la copie de travail avant le début de la tâche MSBuild?

J'ai lu que je pouvais utiliser ou Nant un fichier batch qui CCNet invoquerait. Quelle est la meilleure pratique ici? Toute aide sur ce serait moi grand!

ici est un extrait de la section de 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>
Était-ce utile?

La solution

J'ai trouvé la réponse à ma question initiale:

J'ai eu tout simplement de mettre le cleanCopy vrai à l'intérieur du bloc SourceControl.

<sourcecontrol type="svn">                                            
    <trunkUrl>TRUNK-URL</trunkUrl>                
    <executable>SVN.EXE</executable>           
    <username>TEST</username>                                         
    <password>TEST</password> 
    <cleanCopy>true</cleanCopy>         
  </sourcecontrol>

Autres conseils

Je ne pense pas modifier script MSBuild est la meilleure solution ici. La suppression de la copie de travail ne fait pas partie de la construction elle-même, il fait partie du processus de construction .net cc cependant. Vous avez besoin quand vous construisez avec cc.net, pas quand vous construisez avec VS ou autre.

Ce que je ferais est de faire soit avec lot, ou un script Powershell msbuild. La suppression d'un répertoire est simple donc je recommande de le faire avec lot:

<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>

vous pouvez réellement faire la première partie de votre tâche MSBuild préparer le répertoire de sortie en faisant le nettoyage

vous pouvez le faire par domaine quelque chose de similaire à ce

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

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

<Target Name="Preparation">
      <Delete Files="@(FilesToDelete)" />
</Target>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top