CCNet - copia di lavoro Elimina prima MSBuild?
-
28-09-2019 - |
Domanda
Sono la creazione di un ambiente di integrazione continua, usando VisualSVN Server e CrusieControl.NET. Quello che voglio fare è eliminare la copia di lavoro prima che l'attività inizia MSBuild?
Ho letto che avrei potuto utilizzare un file batch che CCNet invocherebbe Nant o. Qual è la cosa migliore pratica qui? Qualsiasi aiuto su questo mi avrebbe grande!
Ecco un estratto della sezione di 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>
Soluzione
Ho trovato la risposta alla mia domanda iniziale:
ho dovuto semplicemente mettere vero il cleanCopy all'interno del blocco SourceControl.
<sourcecontrol type="svn">
<trunkUrl>TRUNK-URL</trunkUrl>
<executable>SVN.EXE</executable>
<username>TEST</username>
<password>TEST</password>
<cleanCopy>true</cleanCopy>
</sourcecontrol>
Altri suggerimenti
Non credo che la modifica di script msbuild è la soluzione più semplice qui. L'eliminazione della copia di lavoro non è parte della costruzione in sé, è parte del processo di generazione cc .net però. È necessario che quando si genera con cc.net, non quando si costruisce con VS o altro.
Quello che vorrei fare è neanche farlo con la serie, o uno script di PowerShell MSBuild. L'eliminazione di una directory è semplice quindi vi consiglio di farlo con batch:
<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>
si potrebbe effettivamente fare la prima parte del vostro compito MSBuild preparare la directory di rilascio facendo la pulizia
si poteva farlo da qualcosa di simile a questo dominio
<ItemGroup>
<FilesToDelete Include="<PathGoesHere>\**\*"/>
</ItemGroup>
<Target Name="Task" DependsOn="Preparation">
//normal task happens here
</Target>
<Target Name="Preparation">
<Delete Files="@(FilesToDelete)" />
</Target>