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

  • image.png
    RavenHQ–RavenDB in der Cloud

    Ayende Rahien hat es heute verkündet – RavenHQ, der RavenDB Cloud Hoster (natürlich von und mit Ayende) ist ab heute raus aus der Beta und man kann es von überall aus nutzen. In der Betaphase waren nur Nutzer von AppHarbor zugelassen. Was ist RavenHQ? RavenHQ ist im Grunde ein gehostes RavenDB in den Rechenzentren von ...

  • image.png
    GitHub for Windows–erste Eindrücke

    Git ist schon eine tolle Sachen und eröffnet viele neue Möglichkeiten – allerdings ist der Einstieg recht hart und selbst wenn man die guten Hilfsanleitungen auf GitHub befolgt, kommt man am Anfang nur langsam vorwärt. Insbesondere ist das Tooling für Windows / .NET Entwickler auch nicht gerade “bekanntes Terrain”. GitHub to the rescue! Die GitHub ...

  • image.png
    Chocolatey–apt-get für Windows

    Durch Zufall bin ich auf das Tool “Chocolatey” gestoßen. Wer die Website sich anschaut, wird evtl. eine Verwandschaft mit NuGet ausmachen. Was macht Chocolatey? Chocolatey ist ein “Maschine Package Manager”, das bedeutet, dass man für seine Maschine einfach Tools runterladen und Updaten kann – direkt über die Konsole. Was ist der Unterschied zu NuGet? NuGet ...

  • image.png
    SASS, LESS & Coffeescript in Visual Studio mit der Web Workbench

    CSS und Javascript sind die “kleinste” Schnittmenge von allen Browsern für die Erstellung von Web-Applikationen. Leider geht dabei etwas komfort verloren, daher lieben alle Webentwickler jQuery! SASS und LESS sind zwei Varianten, wie man “schöner” CSS schreiben kann und Coffeescript versucht Javascript Entwicklung zu vereinfachen. Aber immer der Reihe nach… Was ist SASS? SASS steht ...

  • image.png
    Code-Inside Sample nun auf GitHub: Google Code zu GitHub Migration

    Seit einiger Zeit habe ich Beispielcode auf Google Code bereitgestellt. Einfach nur noch weg von Google Code O-Ton damals war: Ich hatte mich für Google Code entschieden, weil ich hoffe dass früher oder später die Google Code Suche nutzbar ist und es dadurch wenigstens ein kleiner Mehrwert entsteht. Allerdings wirft es momentan noch ein Fehler. ...

Auf Amazon einkaufen & unterstützen

Facebook