Scegliere un MSBuldTarget per lanciare con Cruisecontrol.Net
-
09-09-2019 - |
Domanda
Voglio usare CCNetRequestSource Quale è il nome del lancio grilletto Quale il compito MSBuild. Per exemple quando il grilletto "toto" è exected voglio lanciare il target "toto" il MsBuild. È possibile ? E 'per una nightly build, voglio creare file MSI e doc in questo momento, ho creato il target specifico in MSBuild, ma io non ho trovato come eseguire solo quando un trigger specifico è un tiro.
Soluzione
C'è sintassi msbuild che dovrebbe aiutare con questo. Date un'occhiata ai seguenti link:
- MSBuild Task - Per eseguire un altro progetto
- condizionali costrutti in MSBuild - per consentire di scegliere tra diverse configurazioni di progetto
Si dovrebbe provare ad aggiungere un file di configurazione facciata per CruiseControl chiamare che delegare i file della soluzione con un costrutto simile al seguente:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Choose>
<!-- If the toto CCNETRequestSource was submitted -->
<When Condition="'$(CCNetRequestSource)'=='toto'">
<PropertyGroup>
<Target Name="toto">
<MSBuild Projects="MyProject.sln" Properties="Configuration=Debug" Targets="toto" />
</Target>
</PropertyGroup>
</When>
<Otherwise><!-- Place your standard build call here --></Otherwise>
</Choose>
</Target>
</Project>
Altri suggerimenti
faccio in questo modo:
<Project DefaultTargets="Integration" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition="'$(CCNetBuildCondition)' == 'ForceBuild'">Release</Configuration>
<Configuration Condition="'$(CCNetBuildCondition)' != 'ForceBuild'">Debug</Configuration>
</PropertyGroup>
<Target Name="Integration" DependsOnTargets="ConstruireSolution;FaireDoc">
</Target>
<Target Name="ConstruireSolution" >
<!-- with first build -->
<MSBuild Projects="MyBuild.sln" Properties="Configuration=$(Configuration)" Targets="Clean;Rebuild" />
</Target>
<Target Name="FaireDoc" Condition=" '$(CCNetRequestSource)' =='FaireDoc'">
<!--Build to add when FaireDoc trigger is fired -->
<MSBuild Projects="C:\CI\Plateforme\Documentation\Doc.shfbproj" Targets="Build" />
</Target>
Ho scelto questa soluzione perché ho sempre bisogno della prima build :) il secondo obiettivo è un progetto castello di sabbia a pranzo solo di notte:)