14 July 2009 Build, Build Server, CI, Continuous Integration, HowTo, TeamCity Robert Muehsig

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.


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!