Domanda

Ho 3 script MSBUild per la distribuzione, 1 per la distribuzione dell'interfaccia utente 1 per la distribuzione di un paio di servizi web. 1 per la distribuzione di servizi di backend.

Ora vorrei creare uno script MSBuild di distribuzione con un clic, che chiamerebbe tutti i 3 script sopra, che possono essere eseguiti da un server TeamCity.

Quindi, come posso chiamare questi tre script MSBuild da un diverso script MSBuild.

È stato utile?

Soluzione

Altri suggerimenti

Non ho usato TeamCity Server, ma una possibile soluzione alternativa è quella di combinare i tre script di build in uno script. E metti le attività dei tre script separati in destinazioni separate nel file di build principale. Quindi, invece dei tre script di build separati, hai uno script di build con tre target, vale a dire deployUI, deployServices, deployBackend. Esempio non testato di seguito:

    <?xml version="1.0" encoding="utf-8" ?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="DefaultTarget" ToolsVersion="3.5">

    <Target Name="DefaultTarget">
            <CallTarget Targets="deployUI" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployServices" ContinueOnError="false"></CallTarget>
            <CallTarget Targets="deployBackend" ContinueOnError="false"></CallTarget> 
    </Target>

    <Target Name="deployUI">
            <!-- Put UI deployment tasks here -->
    </Target>

    <Target Name="deployServices">
            <!-- Put Services deployment tasks here -->
    </Target>

    <Target Name="deployBackend">
            <!-- Put Backend deployment tasks here -->
    </Target>
</Project>

In MSBuild 4.0 un'opzione potrebbe essere importare condizionalmente il 3 file di progetto nello script MSBuild di distribuzione con un clic:

<Import Project="ProjectPath1" Condition="'$(DeployUI)'!=''" />
<Import Project="ProjectPath2" Condition="'$(DeployWebServices)'!=''" />
<Import Project="ProjectPath3" Condition="'$(DeployBackendServices)'!=''" />

<Target Name="DeployTheWorld">
    <Message Text="Deploying..." />
</Target>

Quindi utilizza la Funzione AfterTargets sugli obiettivi che si desidera eseguire nei file di progetto separati che sono stati importati:

  <Target Name="DeployUI" AfterTargets="DeployTheWorld">
    <Message Text="Hello from DefaultAfterTarget"/>
  </Target>

Questo ti darà flessibilità nella personalizzazione della distribuzione all'interno di TeamCity.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top