h1

Abfragen aller Builds auf einer Project Collection

Juni 23, 2011

Mit der TFS API ist es relativ einfach zu einer Project Collection alle Build-Definitions und deren Eigenschaften abzufragen. Im Beispiel werden z.B. die gesetzten BuildController und Tags abgefragt:

1: using System;


  2: using System.Linq;
  3: using System.Xml.Linq;
  4: using System.Xml.XPath;
  5: using Microsoft.TeamFoundation.Build.Client;
  6: using Microsoft.TeamFoundation.Client;
  7: 
  8: namespace ConsoleApplication1
  9: {
 10:     class Program
 11:     {
 12:         static void Main(string[] args)
 13:         {
 14:             Console.WriteLine("Collection Url:");
 15:             var MyCollectionUrl = "http://tfs:8080/collection";
 16:             Console.WriteLine("Collection Url: {0}", MyCollectionUrl);
 17:             var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(MyCollectionUrl));
 18:             var bs = tfs.GetService<IBuildServer>();
 19:             var bsSpec = bs.CreateBuildDefinitionSpec("*", "*");
 20:             var results = bs.QueryBuildDefinitions(bsSpec);
 21: 
 22:             foreach (var qb in results.Definitions)
 23:             {
 24:                 if (qb.BuildController != null)
 25:                 {
 26:                     var cu = qb.BuildController.Name;
 27:                     var p2 = qb.BuildController.ServiceHost.Name;
 28:                     string tags = "null";
 29:                     if (qb.ProcessParameters != null)
 30:                     {
 31:                         var xmlProcessParameters = XElement.Parse(qb.ProcessParameters);
 32: 
 33:                         var agentsettings =
 34:                             xmlProcessParameters.Nodes().Select(xNode => xNode).Where(
 35:                                 name => name.ToString().Contains("AgentSettings"));
 36:                         if (agentsettings.FirstOrDefault() != null)
 37:                             tags = agentsettings.First().CreateNavigator().GetAttribute("Tags", string.Empty);
 38:                     }
 39: 
 40:                     string def = qb.TeamProject + @"\" + qb.Name;
 41:                     Console.WriteLine("{0}\t{1}\t{2}\tTags: {3} ", cu, p2, def, tags);
 42:                 }
 43:                 else
 44:                 {
 45:                     string def = qb.TeamProject + @"\" + qb.Name;
 46:                     Console.WriteLine("{0}\t{1}\t{2} ", "null", "null", def);
 47:                 }
 48:             }
 49: 
 50:             Console.ReadLine();
 51:         }
 52:     }
 53: }

In der Ausgabe erhält man bei diesem Beispiel eine Ansicht aller Teamprojekte der Projektcollection “collection” auf die man als Ausführer Zugriff besitzt. Welcher Buildcontroller und welche Agent-Tags werden für welche Builddefinition verwendet.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: