Continuous Integration met Teamcity

Ons project had een Cruisecontrol installatie voor de automatische builds en deployments. Werkte op zich prima, maar het was elke keer weer uitzoeken hoe je het moest configureren. Teamcity leek een goed alternatief, zeker omdat het vrij te gebruiken is tot 20 gebruikers.

Het belangrijkste verschil tussen Cruisecontrol en Teamcity is het gebruik van build agents. Met cruisecontrol draait het buildproces op dezelfde machine als cruisecontrol zelf. Met Teamcity kan de build ook op andere machines draaien die je speciaal voor dit doel kunt inrichten. Dit is vooral handig als je een multi tier applicatie hebt met verschillende builds elk met specifieke eisen, bijvoorbeeld een Unix of juist een Windows omgeving. Teamcity kan detecteren of een build agent aan de eisen van de build configuratie voldoet en deze dan wel of niet gebruiken.

Als je een pool van buildagents gebruikt, hoef je ook niet te wachten tot een vorige build klaar is en kun je eerder feedback krijgen.

Builds zijn eenvoudig te configureren via de webinterface. Ik heb hier gemengde gevoelens bij, omdat ik bij builds automatisch aan scripts denk. Mijn ervaring met GUI's is dat ze moeilijker repeatable zijn te maken. Toch valt dit wel mee met Teamcity doordat je configuraties en delen van configuraties kunt hergebruiken. In wezen moet je 4 dingen configureren:
  • de code repository
  • het build script
  • de rapportages
  • de agents

En daarna kun je als gebruiker per project je notifications configureren. Je kunt per e-mail op de hoogte gehouden worden, via een plugin in Eclipse of Intellij of een systray icon. Je kunt zien welke testen draaien en je hoeft niet te wachten tot de build klaar is, wat zeker bij lange builds wel handig is.

Ik gebruik het bij de klant intussen al een jaartje in combinatie met maven en de combinatie bevalt me wel. Voor mijn eigen projecten wacht ik nog even op Git support.