Question

J'ai 3 scripts MSBUild pour le déploiement, 1 pour le déploiement de l'interface utilisateur 1 pour le déploiement de deux services Web. 1 pour le déploiement de services principaux.

J'aimerais maintenant créer un script MSBuild de déploiement en un clic, qui appelle tous les 3 scripts ci-dessus, qui peuvent être exécutés à partir d'un serveur TeamCity.

Alors, comment puis-je appeler ces trois scripts MSBuild à partir d'un script MSBuild différent?

Était-ce utile?

La solution

Il existe une MSBuild tâche MSBuild .

Autres conseils

Je n'ai pas utilisé TeamCity Server, mais une autre solution possible consiste à combiner les trois scripts de génération en un seul. Et placez les tâches des trois scripts distincts dans des cibles distinctes dans le fichier de construction principal. Ainsi, au lieu de trois scripts de construction distincts, vous disposez d'un script de construction avec trois cibles, à savoir deployUI, deployServices, deployBackend. Exemple non testé ci-dessous:

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

Dans MSBuild 4.0, une option pourrait consister à importer conditionnellement le 3 fichiers de projet dans votre script MSBuild de déploiement en un clic:

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

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

Utilisez ensuite la fonction AfterTargets sur les cibles que vous souhaitez exécuter dans vos fichiers de projet distincts que vous avez importés:

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

Cela vous permettra de personnaliser le déploiement à partir de TeamCity de manière flexible.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top