CI mit Team Foundation Server 2010

Dieser Artikel wurde von Mohr, Steven und Do, Hoang Viet am Donnerstag, 6. September 2012 verfasst. Aktualisiert: 28.01.2014 18:47:16

Langsam, aber sicher, erreichen die Projekte unserer Teams eine Größe, bei der es Sinn ergibt. Continuous Integration einzuführen. Also habe ich diese Woche mal (neben den Scrum-Mastern) geguckt, was sich da mit unserer Visual Studio plus Team Foundation Server in dieser Richtung so hergibt.

Und, wie erwartet, liefert es das, was wir brauchen :-) Ich beschreibe hier, was man als Entwickler dafür machen muss; um die Konfiguration des TFS (sprich Erstellung von Build-Controllern oder Konfiguration der Build-Slaves) sollte sich der Admin eures Vertrauens kümmern.

Was ist Continuous Integration (CI) eigentlich?

Passend zum Schreiben dieses Posts hab ich auf einer Mailingliste ( externe Link) folgenden Artikel  ( externe Link) zum Thema CI gefunden. Der Artikel ist zwar ein paar Tage älter, beschreibt aber sehr unterhaltsam, was der Sinn von CI ist und warum es ein Prozess ist, der adaptiert werden muss, und nicht nur ein Tool, das man einfach installiert. Es passiert schließlich sehr schnell, dass ein schlecht gepflegter CI-Server vom Team nicht mehr beachtet wird, da "der Build ja nie klappt, weil es da den einen Test gibt, der immer fehlschlägt". Und schon ist ein roter Build kein Alarmzeichen mehr, sondern Normalität. Und wenn dann weitere Tests fehlschlagen, bekommt es niemand mehr mit und man ist in der BUILD-HÖLLE!

Neuen Job anlegen

Um einen neuen Job anzulegen, braucht man als erstes eine neue Build-Definition. Hierfür klickt man im Team-Explorer rechts auf den Builds-Punkt.

teamexplorer-300x187.png

Nun öffnet sich der Konfigurationsdialog. Schnell ein Name für den Build eingetragen und weiter zu den Triggern:

trigger2-300x180.png

Hier folgt nun die Qual der Wahl: Bei welchem Event soll ein Build gestartet werden? Am Besten nimmt man den manuellen Build oder die Fortlaufende Integration (ich liebe deutsche Übersetzungen). Nun weiter zum Build-Standardzeug:

build-defaults-300x180.png

Hier müssen wir nur angeben, dass unser Build Dateien speichern möchte und dann noch ein passendes Verzeichnis wählen, das für uns beschreibbar ist (am Besten den Admin fragen :-)). Als letztes sollten wir unseren Prozess anpassen:

Da wir oftmals nicht die ganze Solution bauen wollen, sondern nur einzelne Teile (das Hauptprojekt und passende Testprojekte) können wir hier in Punkt 1 auswählen, welche Projekte gebaut werden sollen. Nun sind wir auch schon fertig. Mit einem Rechtsklick auf unsere neu angelegte Build-Definition können wir sie zur Warteschlange hinzufügen.

Integration von StyleCop ins CI

Wie ich ja letzte Woche schon geschrieben habe, lässt sich StyleCop in den CI-Prozess einbinden. Für unser Projekt werden wir die einfachere, dafür potenziell dreckigere Methode des Einbindens in die Projektdateien wählen. Wer sich für die etwas aufwendigere, aber dafür saubere Methode über Build-Konfigurationen entscheidet, dem sei dieser StackOverFlow-Eintrag ( externe Link) empfohlen.

Literaturen

 
blog comments powered by Disqus

Google Anzeigen

Neusten Blogeinträgen

  • CSS: Animationen

    CSS3 bietet von Haus aus Möglichkeiten zur Definition von Animationen über die Property animation. Wie es funktioniert zeigen wir in diesem Artikel.

  • CSS: Alternierende Tabellenzeilen

    Um die Lesbarkeit von Tabellen zu steigern, bietet die CSS die Möglichkeit Tabellenzeilen alternierend zu färben. Wie das funktioniert zeigen, wir ...

  • Unity3D: Konsolenausgabe formatieren

    Die Unitykonsole ist einer der meistgenutzten Feature wenn es bei Unity um Fehlersuche und -behandlung geht. Sie wird dabei schnell voll und verli ...

  • Unity3D: Singleton für langsame Operationen

    Operationen wie Object.FindObjectOfType werden in der Dokumentation von Unity3D Entwickler selbst als sehr langsam beschrieben. Aus dem Grund wird ...

  • Unity3D: Optionale Parameter

    Unity3D (4.3.1) unterstützt keine optionale Parameter, wenn die betroffene Skriptdatei in einem Namespace definiert wird.

Popular Threads

Share it on your network