2009-07-31 17 views
5

Mam 3 skrypty MSBUild do wdrożenia, 1 do wdrażania interfejsu użytkownika 1 do rozmieszczania kilku usług internetowych. 1 do wdrażania usług backendu.Jak wywołać wiele skryptów MSBuild z jednego skryptu MSBuild?

Teraz chciałbym utworzyć skrypt MSBuild do wdrażania jednym kliknięciem, który wywoływałby wszystkie powyższe 3 skrypty, które mogą być wykonywane z serwera TeamCity.

Jak mogę wywołać te trzy skrypty MSBuild z innego skryptu MSBuild.

Odpowiedz

0

Nie korzystałem z serwera TeamCity, ale jednym z możliwych alternatywnych rozwiązań jest połączenie trzech skryptów kompilacji w jeden skrypt. I umieść zadania trzech oddzielnych skryptów w osobnych obiektach docelowych w głównym pliku kompilacji. Zamiast trzech oddzielnych skryptów do budowania masz jeden skrypt budujący z trzema celami, a mianowicie: deployUI, deployServices, deployBackend. Niesprawdzone próbka poniżej:

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

To jest poprawna opcja scalania wszystkich 3 komponentów, ale chcę mieć możliwość samodzielnego wdrażania komponentów, jeśli zdecyduję się na , nie chcesz duplikować zawartości skryptu budowania w dwóch skryptach. – Pradeep

+0

Użytkownik ma możliwość samodzielnego wdrażania komponentów za pomocą instrukcji warunkowych w pliku kompilacji. Jeśli korzystasz z instrukcji warunkowych, nie musisz też utrzymywać zduplikowanych plików skryptów. po prostu podaj właściwy cel podczas wywoływania pliku kompilacji i gotowe. – desigeek

+0

Sidenote: Nie jestem pewien, w jaki sposób akceptowana odpowiedź pomaga? W wymienionym zadaniu nie widzę sposobu na wywołanie plików/skryptów kompilacji, o co pytają twoje pytania. Zadanie MSBuild pozwala budować projekty z pewnymi opcjami, ale chciałeś budować przy użyciu plików kompilacji, które najprawdopodobniej będą robiły inne rzeczy, niż tylko kompilowanie i wdrażanie (na przykład aktualizowanie powiązanych plików konfiguracyjnych). W takim przypadku użycie tylko zadania MSBuild nie będzie działać. Daj mi znać, jeśli czegoś brakuje. – desigeek

0

W MSBuild 4.0 opcją mogłoby być conditionally import 3 pliki projektu na swoim jedno kliknięcie rozmieszczania MSBuild skryptu:

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

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

Następnie użyj AfterTargets feature na cele, które chcesz uruchomić w swoich oddzielnych plikach projektowych, które zostały przywiezione:

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

to daje elastyczne w dostosowywaniu rozmieszczenie od wewnątrz TeamCi ty.