2008-10-10 13 views
5

Wie würden Sie manuell zusätzliche Teambuilds von einem Teambuild auslösen? Zum Beispiel, wenn wir in CC.Net waren, würden andere Builds ausgelöst, wenn bestimmte Builds erfolgreich waren. Der zweite Build könnte entweder Projekte sein, die diese Komponente verwenden, oder zusätzliche, lang laufende Testbibliotheken für die gleiche Komponente.Manuelles Auslösen eines TFS-Teambuilds

Antwort

4

Eine Möglichkeit, wie Sie es tun könnten, ist ein AfterEndToEndIteration-Ziel für Ihre TFSBuild.proj-Datei, das die TfsBuild.exe-Befehlszeile ausführen würde, um andere Builds zu starten. Ich bin so etwas wie diese zu denken (obwohl ich es nicht getestet)

<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

Ich habe das gleiche getan Martin auf einer Reihe von Gelegenheiten vorgeschlagen (sein Blog über hilfreich ist, BTW). Allerdings musste ich Cascading Builds (basierend auf einigen anderen komplizierten Regeln) genug auslösen, um eine benutzerdefinierte Aufgabe zu erstellen. Halten Sie Ihre Build-Skripte schön und schlank und erhalten Sie mehr Flexibilität und Einkapselungsmöglichkeiten.

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; 
    } 

Es gibt einige weitere gute Sachen auf Aaron Hallberg Blog zu:

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

Verwandte Themen