HowTo: Continuous Integration mit TeamCity

image In meinem letzten HowToCode ging es um “Continuous Integration” und was es alles bieten könnte. Nun möchte ich ein konkretes Tool vorstellen: TeamCity. TeamCity ist ein kostenloser (Java basierende) Buildmanagement & Continuous Integration Server von JetBrains (welche auch den Resharper machen). Über eine schicke Weboberfläche ist das ganze auch schnell eingerichtet und man kann seine Builds usw. anstoßen.

Was ist TeamCity?
Wie bereits erwähnt, ist TeamCity im Grunde ein Java basierender Build- & CI Server. Man kann TeamCity auf Window-, Linux etc. installieren. Ich stelle hier nur die Windows Variante vor.
Da JetBrain ständig das Produkt erneuert, verlinke ich nur auf die Dokumentationsseite.

JetBrain hat auch eine Seite eingerichet wo man sich das Webfrontent mal anschauen kann: Live Demo

Was sind die Voraussetzungen?
Als Voraussetzung gilt natürlich, dass man einen Server hat (das kann auch derselbe Server sein wie das SVN z.B.) und das man alles was man zum Bauen braucht eingecheckt hat bzw. die Abhängigkeiten auch auf den Build Server installiert/hergestellt hat. Weitere Infos, warum das ein Build Server recht nützlich ist, siehe in meinem anderen Blogpost.

“Bestandteile”
Wenn man den Standard-Windows Installationsassistent folgt, wird der Build-Server und ein Build-Agent gleicht installiert. Beides kann getrennt konfiguriert werden. Dazu später mehr. Der Agent führt am Ende den Buildvorgang auf. Das kann für größere Projekte interessant sein, wenn man viele Projekte hat.
Jeder Agent kann andere Konfigurationen aufweisen, andere CPU Werte (für die Performance) und auf anderen Betriebsystemen etc. laufen.

image

Diese findet man auch auf der Weboberfläche wieder:

image

Installation

Hier eine kleine Schritt-für-Schritt Anleitung um den Server auf einer Windows Kiste zu installieren:
Die Screenshots habe ich von diesem Blog – da die Installation allerdings bei mir auch so aussah, habe ich die Bilderchens mal genommen.

image

image

image

Anmerkungen jetzt: Hier ist es sehr empfehlenswert den Server und Build Agent direkt als Windows Service zu installieren (was auch per default ausgewählt ist), ansonsten muss man ihn manuell starten.

image

Anmerkung: In meinem Fall lief auf Port 80 noch der IIS, daher musste ein anderer Port gewählt werden. Unter dem Punkt “Portänderungen” komm ich dann nochmal darauf zu sprechen.

image

image

image

image

image

Nun kann der Rest über das Webfrontend konfiguiert werden:

image

Bevor es losgeht muss erstmal ein Administatoraccount erstellt werden.

image

Nun kann auf der Oberfläche ein neues Projekt angelegt werden:

image

Über den “Create project” Link legt man ein neues Projekt an.

Der Ablauf beinhaltet 8 Schritte:

image

1. Name & Beschreibung
2. Zugang zum Subversion etc.
TeamCity ist sehr flexibel und unterstützt momentan diese Versionskontrollsystem:

image

3. Build Runner
TeamCity unterstützt neben .NET auch noch andere Frameworks/Sprachen. So kann man bei den Build Runnern momentan aus diesen auswählen:

image

Bei der Einstellung “sln2008″ kann man sein normales VS Solutionfile angeben. Dabei muss man beim “Solution file path” den Pfad (ausgehend vom SVN Repository) und die sln Datei angeben.

Die anderen Punkte ermöglichen tiefere Konfigurationen und Einstellungen. So kann man z.B. sagen, wann gebaut werden soll (Nachts) oder nach jedem Checkin etc.

Weitere prima Anleitungen:

Run Builds

Über den “Run…” Button kann man neue Builds anstoßen. Dabei wird zuerst geschaut, ob neue Sourcen im Repository liegen und falls ja, wird dies runtergeladen und dann wird der entsprechende Buildrunner angestoßen.

image

Wenn alles geklappt hat, sollte man sowas sehen:

image 

Live Demo

Ich empfehle euch mal einen Blick auf die Live Demo Page zu werfen und ein wenig drin rumklicken. Auf der Weboberfläche werden mit vielen AJAX Spielerein sinnvolle Informationen nachgeladen, so z.B. Kommentare aus den letzten Checkin:

image

Oder auch die dazugehörigen Files:

image

TeamCity – benötigte Windows Services & Portänderungen

TeamCity liefert zwar den Tomcat mit aus, allerdings sollte der Service ausgeschaltet bleiben bzw. ging es nur so bei mir. Es kann aber auch sein, dass der Tomcat durch etwas anderes evtl. installiert wurde. Diesen auf alle Fälle dekativieren.

Windows Services:

- Tomcat: deaktiviert
-TeamCity Build Agent Service: aktiviert
– TeamCity Web Server: aktiviert

Server & Buildagent lassen sich auch für andere Port konfigurieren.

Ich hatte bei mir folgendes Problem, dass auch dem selben Rechner auch noch ein IIS läuft.

Portkonfiguration:

Webserver Config: “C:\TeamCity\conf\server.xml” dort diese Zeile suchen und Wert entsprechend ändern:

   <Connector  port="8xxx"  protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

Nun müssen ebenfalls noch alle Build Agents entsprechend geändert werden. Dazu in dieser Datei:

C:\TeamCity\buildAgent\conf\buildAgent.dist.properties” die serverUrl entsprechend mit den neuen Port anpassen.

Troubleshooting

Bei Fehlern lohnt sich immer ein Blick in den “logs” Ordner beim Server/Build Agent. Dort ist es recht detailiert beschrieben, was passiert und wo es knallt.

Unit Tests, Deployment etc.

Wir sind nun an dem Punkt an dem TeamCity installiert und benutzbar ist und das Projekt baut. Wie man Unit Tests oder gar ein Deployment ausführt werde ich in späteren HowTos behandeln.

Fazit:

TeamCity ist IMHO ein absolut geniales Tool und kann es locker mit dem Build Server vom TFS aufnehmen und die schicke Weboberfläche begeistert mit vielen netten Features und das ganze für Lau.


Kick It auf dotnet-kicks.de
Wenn dir der Blogpost gefallen hat, dann hinterlasse doch einen Kommentar. Wenn du auf dem Laufenden bleiben willst, abonniere unseren RSS Feed oder folge uns auf Twitter.

About the author

Written by Robert Mühsig

Robert Mühsig (@robert0muehsig) ist Webentwickler und beschäftigt sich mit Web-Frameworks (vor allem dem ASP.NET MVC Framework) und scheut sich auch nicht vor Javascript. Ansonsten bloggt er über all jene Probleme, die ihm über den Weg laufen. Seit 2008 ist er Microsoft MVP für ASP.NET und er arbeitet bei der T-Systems Multimedia Solutions GmbH in Dresden. Treffen kann man ihn online via Twitter (@robert0muehsig) oder dieser Seite oder bei der .NET User Group Dresden.

3 Responses

Comment on this post

Letzte Posts

  • Carriage Return / Neue Zeile in Textareas

    Eine kleine Aufgabe: Jede neue Textzeile (Carriage Return/Wenn man Enter drückt ) in einer Textarea soll ein Element in einer Auflistung sein – wie mach ich das jetzt am einfachsten? Eigentlich ein grundlegendes Element im Web und der Nutzer macht bewusst Absätze – daher wäre es nur gerecht, wenn man das auch entsprechend würdigt. Kleine ...

  • image.png
    Doom, Quake, Wolfenstein & co. Source Code auf GitHub

    id Software, die Macher von Doom, Quake, Wolfenstein & co., stellen regelmäßig ihre älteren Spieltitle als Open Source zur Verfügung. Das Ganze runterzuladen fand ich bisher immer recht mühselig, allerdings gibt es seit kurzer Zeit die Sourcen auch auf GitHub. Darunter Spiele wie Doom 3, Quake 3, Wolfenstein für iOS. Wer also schon immer mal ...

  • image.png
    Twitter Bootstrap 2.0 released & “Release Präsentation”

    Wie bereits vom Twitter Bootstrap Team angekündigt wurde offiziel die Version 2.0 des UI Toolskits “Twitter Bootstrap” veröffentlich. Zudem wurden die Slides, welche bei der Release Party gezeigt wurden auch veröffentlicht: Downloads finden sich auf der Twitter Bootstrap Seite auf GitHub. Wenn dir der Blogpost gefallen hat, dann hinterlasse doch einen Kommentar. Wenn du auf ...

  • image.png
    Javascript zu Dart Translator

    Dart, Google Javascript Alternative, wurde vor ein paar Monaten vorgestellt und die Webentwickler Szene ist noch etwas gespalten, ob Dart nun überflüssig ist oder einfach nur cool und längst überfällig ist. Um die Sprache näher zu erläutern hat Google die grundlegenden Javascript Basics nach Dart übersetzt. Das Ergebnis ist der “Translator”. Der Name mag momentan ...

  • Twitter Bootstrap 2.0–“Beta”

    Twitter Bootstrap, ein UI-Toolkit für Web-Applikationen von Twitter, erscheint (wie bereits berichtet) demnächst in der Version 2.0. Der offizielle Release ist am 31. Januar, allerdings beginnt jetzt laut Mark Otto (einer der Hauptentwickler von Twitter Bootstrap) die intensive Test-Phase. Das heisst, das es nun offiziel auch die 2.0 Dokumentation online gibt. Im Vergleich zur aktuellen ...

Support us!

Facebook