Build Definitionen von Projekt A nach Projekt B kopieren

Die Wiederverwendung von Build Definitionen ist ohne „externe“ Hilfe erst einmal nicht möglich. Dies ist umso ärgerlicher, wenn zahlreiche Build Parameter gesetzt sind. Die Funktion „Clone Build Definition“ der Team Foundation Power Tools kann in so einem Fall des Leben sehr hilfreich sein, da auf Knopfdruck ein Klon des Builds erstellt werden kann. Leider funktioniert das Klonen nur innerhalb des Projekts – also nicht Projektübergreifend. Möchte man eine Build Definition von Projekt A nach Projekt B kopieren, dann muss man die TFS API verwenden.

Clone Build Definition

Durch die Team Foundation Power Tools wird das Kontextmenu des Build Hubs im Team Explorers erweitert. Wie in der Abbildung 1 zu sehen ist, wird der Punkt „Clone Build Definition“ hinzugefügt. Wählt man diese Option aus, wird eine 1-zu-1 Kopie der Build Definition mit dem Namen „Copy of <Build Definition Name>“ erzeugt und steht nach wenigen Sekunden zur Auswahl in der Liste der Build Definitionen zur Verfügung.

CloneBuildDefinitions_CloneBuildDefinitionAbbildung 1: „Clone Build Definition“ im erweiterten Kontextmenü des Build Hubs

Clone Build Definition via TFS API

Wenn man einen Klon über Team Projekt Grenzen hinweg erzeugen will oder eine Auswahl von mehreren Build Definitionen in ein anderes Team Projekt kopieren möchte, dann ist man auf Unterstützung durch die TFS API angewiesen.

Die Funktionalität die benötigt wird, befindet sich in zwei Assemblies der „TeamFoundation-Familie“:

  • Microsoft.TeamFoundation.Client
  • Microsoft.TeamFoundation.Build.Client

Im folgenden werden die einzelnen Schritte beschrieben, die für das Kopieren der Build Definition notwendig sind:

1. Verbindung zur TeamProjectCollection herstellen

CloneBuildDefinitions_Snippet_1

2. QueryBuildDefinition des Team Projekts mit Hilfe des BuildServer-Services suchen

CloneBuildDefinitions_Snippet_2

3. Neue Build Definition erzeugen und Einstellungen
kopieren

CloneBuildDefinitions_Snippet_3

4. Build Definition speichern

CloneBuildDefinitions_Snippet_4

Hinweis: Es ist besondere Vorsicht angesagt, wenn man auf einem Produktivsystem klonen möchte. Am besten noch mal ein Code Review mit dem Kollegen durchführen!

Achtung: Im Code Snippet wird das Default Build Process Template als Process Template hinterlegt. Dies muss ggf. angepasst werden!

Wenn alle Klone erzeugt wurden, geht man in das andere Team Projekt und vergibt den neu erzeugten Build Definitionen eindeutige Namen. Die Klone sind durch das „Copy of“ leicht über den eingebauten Filter im Team Explorer zu finden.