So optimieren Sie Ihre Builds mit speziellen Runnern

TeamCity bietet einen großen Funktionsumfang für die Optimierung Ihrer Builds. In diesem Tutorial erfahren Sie, wie Sie spezielle Runner verwenden können und warum dies sinnvoll ist.

Was ist ein Build-Runner und welche Runner-Typen gibt es in TeamCity?

Build-Runner sind TeamCity-Komponenten, die die Integration mit einem bestimmten Build-Tool (Ant, MSBuild, Befehlszeile usw.) ermöglichen. Ein Build-Runner stellt Einstellungen bereit, mit denen Sie festlegen können, welche Build-Aufgaben ausgeführt werden sollen, welche Version des Build-Tools verwendet werden soll, welches Docker/Linux-Image als Container verwendet werden soll usw. In einer Buildkonfiguration wird festgelegt, wie der Build-Runner den Build ausführen und die Ergebnisse melden soll. TeamCity bietet standardmäßig zahlreiche Build-Runner, unter anderem für .NET, Maven, Gradle, Docker, Python, Node.js und viele weitere Systeme.

Wir wollen eine Build-Konfiguration öffnen und bearbeiten. Hier haben wir einen Build-Schritt – und zwar einen Befehlszeilen-Schritt. Das Skript enthält die folgenden Befehle:

  • Wechseln in das Calculator-Service-Verzeichnis mit cd
  • Ausführen von mvn clean package
  • Hochladen der .jar-Datei in einen privaten S3-Bucket
tutorials-img

Hier wollen wir den Schritt mvn clean package löschen und stattdessen die Maven-spezifischen Funktionen von TeamCity verwenden. Wir können die Zeile im benutzerdefinierten Skript einfach entfernen und mit Save speichern:

tutorials-img

Einen neuen Build-Schritt hinzufügen

Im Anschluss fügen wir einen neuen Build-Schritt hinzu. TeamCity schlägt vor, einen speziellen Runner zu verwenden:

tutorials-img

Für jede Technologie, die in TeamCity integriert ist, steht ein eigener Runner zur Verfügung. Wenn Sie zum Beispiel .NET-Projekte kompilieren möchten, wählen Sie einen .NET Runner. Wenn Sie Befehlszeilenskripte ausführen möchten, verwenden Sie einen Befehlszeilen-Runner. Für Docker-spezifische Schritte würden Sie einen Docker-Runner verwenden, für Gradle-Projekte einen Gradle-Runner, und so weiter für andere Technologien.

Die vollständige Liste der Build-Runner in TeamCity finden Sie in unserer Dokumentation.

Da wir mit einem Maven-Projekt arbeiten, wählen wir in der Dropdown-Liste Maven aus. Danach füllen wir einige Felder aus, die TeamCity bei diesem Schritt vorschlägt.

tutorials-img

Unsere Datei pom.xml befindet sich im Calculator-Service-Verzeichnis, also klicken wir auf das Baumstruktur-Symbol, um den richtigen Ordner auszuwählen. Dank der übersichtlichen Verzeichnis-Baumstruktur müssen Sie den Verzeichnisnamen nicht manuell eingeben (und sich dabei womöglich vertippen). Sie können das Verzeichnis einfach aus der Liste wählen.

Sie können den Schritt mvn clean package innerhalb eines Docker-Containers ausführen, indem Sie den Namen eines Docker-Image in einem Docker-Hub angeben, zum Beispiel maven:latest. TeamCity ruft dieses Image ab, startet es transparent als Docker-Container, führt darin den Maven-Zielbefehl mvn clean package aus und entsorgt den Container anschließend.

tutorials-img

Coverage-Runner auswählen

Um die Build-Schritte manuell zu konfigurieren, klicken Sie auf diesen Link:

tutorials-img

In TeamCity können Sie einen bestimmten Coverage-Runner auswählen. Zum Beispiel können Sie die Code-Coverage-Runner von IntelliJ IDEA oder JaCoCo hinzufügen, anstatt eine feste Einstellung aus Ihrer pom.xml-Datei zu verwenden.

Fügen wir com.jetbrains.teamcity.* als Paketmuster hinzu. TeamCity analysiert dann die Code-Coverage der Pakete, deren Name diesem Muster entspricht.

tutorials-img

TeamCity bietet auch erweiterte Konfigurationsoptionen. Zum Beispiel können Sie unterschiedliche Maven-Projektversionen oder eine bestimmte Java-Version zum Ausführen des gesamten Projekts auswählen.

tutorials-img

Dank dieser Vielfalt an Optionen in der Bedienoberfläche müssen Sie sich keine Gedanken darüber machen, ob Ihr Befehlszeilenaufruf wohl funktionieren wird oder nicht. TeamCity nimmt Ihnen diese Bürde ab.

Jetzt haben wir einen Befehlszeilen-Schritt und danach den Maven-Schritt. Wir wollen nun unsere Build-Schritte so anordnen, dass mvn clean package zuerst ausgeführt wird und erst dann über die Befehlszeile der Upload zu S3 erfolgt.

tutorials-img

Danach klicken Sie einfach auf Run, und alles sollte wie erwartet funktionieren.

Welche Möglichkeiten bietet der Maven-Runner?

Sobald der Buildvorgang abgeschlossen ist, können Sie die Build-Übersichtsseite aufrufen. Hier finden Sie neue Tabs wie Maven Build Info und Code Coverage sowie einen neuen Bereich für Tests und Code Coverage-Ergebnisse.

tutorials-img

Maven-Build-Informationen

Auf der Seite Maven build info erhalten Sie einen Überblick darüber, welche Ziele mit welcher Maven-Version ausgeführt wurden. Sie sehen auch die erzeugten Artefakte – zum Beispiel die von Maven erzeugte .jar-Datei.

Der Bericht zeigt außerdem alle Abhängigkeiten (samt Versionsangabe), die Maven für diesen Build abgerufen hat. So erhalten Sie einen Überblick über die Bibliotheken, die in Ihrem Build enthalten sind. Diese Informationen sind auch bei der Fehlersuche hilfreich.

Sie sehen auch alle effektiven Maven-Plugins, die während des Buildvorgangs aktiviert wurden.

tutorials-img

Test-Übersichtsseite

Die Test-Übersichtsseite, die Sie bei Verwendung des Maven-Runners ohne weiteres Zutun erhalten, enthält zahlreiche nützliche Informationen. Folgende Informationen können Sie im Bericht nachlesen:

  • Gesamtstatus des Tests (erfolgreich, fehlgeschlagen, unzuverlässig usw.)
  • Ausgeführte Testklassen und -methoden
  • Testdauer
  • Ausführungsreihenfolge der Tests

Zu jedem Test wird außerdem ein Testverlauf bereitgestellt, der alle wichtigen Informationen zum Test enthält. Der Testverlauf ist hilfreich, wenn Sie Probleme untersuchen müssen, die bei Tests auftreten können. Zum Beispiel: „Warum dauert dieser Test plötzlich länger?“, „Ist dieser Test unzuverlässig?“ und so weiter.

In diesem Video gehen wir ausführlich auf Testberichte ein.

Code-Coverage-Bericht

Der Code-Coverage-Bericht stellt uns Informationen über die verwendeten Klassen und Methoden sowie den Prozentsatz des durch Tests abgedeckten Codes bereit.

Sie müssen nur ein paar Dropdown-Optionen im Code-Coverage Runner von IntelliJ IDEA auswählen, um alle diese Berichte in der Bedienoberfläche von TeamCity zu erhalten.

tutorials-img

Das war es für heute! Sehen Sie sich unsere anderen Tutorials an, um zu erfahren, wie Sie TeamCity-spezifische Funktionen wie Test- und Code-Coverage-Berichte nutzen können.

Viel Spaß beim Builden!