2008-10-10 18 views
5

W jaki sposób ręcznie wyzwoliłbyś dodatkowe kompilacje zespołów z kompilacji zespołu? Na przykład, kiedy byliśmy w CC.Net, inne kompilacje uruchamiałyby, gdyby pewne kompilacje zakończyły się powodzeniem. Druga kompilacja może być projektami, które używają tego składnika lub dodatkowych, długotrwałych bibliotek testowych dla tego samego komponentu.Ręczne wyzwalanie zespołu TFS Budowanie

Odpowiedz

4

Jednym ze sposobów, w jaki można to zrobić, może być cel AfterEndToEndIteration do pliku TFSBuild.proj, który uruchamia linię poleceń TfsBuild.exe, aby uruchomić inne kompilacje. Myślę, że coś takiego (choć jej nie testowane)

<Target Name="AfterEndToEndIteration"> 

    <GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" 
         BuildUri="$(BuildUri)" 
         Condition=" '$(IsDesktopBuild)' != 'true' "> 
     <Output TaskParameter="Status" PropertyName="Status" /> 
    </GetBuildProperties> 

    <Exec Condition=" '$(Status)'=='Succeeded' " 
      Command="TfsBuild.exe start /server:$(TeamFoundationServerUrl) /buildDefinition:&quot;Your Build Definition To Run&quot;" /> 

    </Target> 
3

Robiłem to samo Martin zasugerował na wielu okazjach (jego blog jest bardzo pomocny, BTW). Jednak w końcu musiałem wyzwolić kaskadujące kompilacje w ten sposób (na podstawie innych skomplikowanych reguł) na tyle, że utworzyłem niestandardowe zadanie, aby to zrobić. Zachowaj dobre i szczupłe skrypty budujące i zapewniaj więcej elastyczności i możliwości enkapsulacji.

public override bool Execute() 
    {  
     IBuildDefinition[] buildDefinitions = BuildServer.QueryBuildDefinitions(ProjectName); 

     foreach (IBuildDefinition build in buildDefinitions) 
     { 
      if(build.Enabled) //I did a bunch of custom rules here 
      { 
       Log.LogMessage(String.Concat("Queuing build: ", build.Name)); 
       BuildServer.QueueBuild(build); 
      } 
     } 

     return true; 
    } 

Jest kilka dobrych rzeczy na blogu Aaron HALLBERG zbytnio:

http://blogs.msdn.com/aaronhallberg/archive/2007/04/24/team-build-object-model-queueing-a-build.aspx

Powiązane problemy