Continuous Integration mit TeamCity und GitLab

TeamCity ist flexibel und passt sich jedem Workflow an. Die leistungsstarken CI-Tools bieten eine erstklassige Integrationsunterstützung für GitLab.com, GitLab Enterprise Edition und GitLab Community Edition.

Skalierbare Builds, auch wenn andere Systeme scheitern

Mit zunehmender Größe und Komplexität Ihrer Projekte wird es immer schwieriger, nur mit den GitLab-eigenen CI-Funktionen einen effizienten Bereitstellungsprozess zu gewährleisten. TeamCity schafft hier Abhilfe. TeamCity ist eine universell einsetzbare CI/CD-Lösung, die keinen bestimmten Workflow erzwingt und maximale Flexibilität und Konfigurierbarkeit für Teams aller Größen bietet.

Viele Plattformen, viele Clouds, viele Sprachen

TeamCity ist für Linux, Windows und macOS verfügbar und kann auf Ihrer eigenen Hardware, in Ihrer bevorzugten Cloud-Infrastruktur, in einem Kubernetes-Cluster oder mit einer beliebigen Kombination dieser Möglichkeiten betrieben werden. Es unterstützt alle Programmiersprachen und bietet Integrationen für alle gängigen Build- und Testtools.

Entscheidungsrelevantes Feedback

TeamCity bietet wertvolles, entscheidungsrelevantes Feedback zu Build- und Testfehlern und macht dadurch Ihren Entwicklungsprozess wesentlich effizienter. Das System benachrichtigt Sie in Echtzeit über fehlgeschlagene Tests, speichert den Buildverlauf, protokolliert die Testdauer und markiert instabile Tests als „flaky“. Jeder Test kann Stack-Traces, Screenshots, Protokolle und andere Daten enthalten, die für eine zügige Untersuchung benötigt werden.

Unterstützung für jeden Workflow

Das Einrichten von Continuous Integration für Ihre GitLab-Projekte könnte nicht einfacher sein. Sobald Sie eine Verbindung zu Ihren GitLab-Repositories konfiguriert haben, können Sie mit wenigen Klicks ein neues TeamCity-Projekt erstellen. Ganz gleich, wie Ihre Projekte und Arbeitsabläufe strukturiert sind – TeamCity kümmert sich um den Buildprozess.

  • Führen Sie bei jedem Commit Builds und Unit-Tests durch, um sofortiges Feedback zu Ihren Änderungen zu erhalten.
  • Erstellen Sie personalisierte Workflows basierend auf Benutzernamen, Branch-Namen, Commit-Meldung oder Dateiänderungen.
  • Lösen Sie beim Eröffnen eines Merge-Requests einen Build aus, um sicherzustellen, dass vor einem Code-Review automatisierte Tests durchgeführt werden.
  • Planen Sie Nightly-Builds mit einer vollständigen Suite von Regressionstests, um eine hohe Codequalität zu gewährleisten.
  • Führen Sie automatisiert ein vollständiges Set an Builds und Tests durch, wenn Änderungen in einen Release-Branch übernommen werden.
  • Initiieren Sie den Build eines abhängigen Projekts, wenn der dazu erforderliche Build erfolgreich abgeschlossen wurde.

Mit TeamCity können Sie unterschiedliche Programmiersprachen, Plattformen und Build-Infrastrukturen in einer einzigen, robusten CI-Pipeline kombinieren. Sie haben sogar die Möglichkeit, mehrere VCS-Roots hinzuzufügen, um Build-Pipelines für Projekte zu erstellen, deren Repos teils in GitLab und teils in anderen VCS-Systemen gehostet werden, etwa GitHub, Bitbucket, Azure DevOps, Mercurial, Subversion oder Perforce. Lesen Sie mehr über VCS-Integrationen.

Post-Build-Automatisierung

Dank der Unterstützung des vollständigen GitLab-Funktionsumfangs bietet Ihnen TeamCity eine nahtlose und transparente Integration und einen umfassenden Überblick über Ihre DevOps-Prozesse.

Veröffentlichen des Build-Status

TeamCity kann den aktuellen Status jedes Builds – vom Hinzufügen zur Warteschlange bis zum Abschluss – in Echtzeit an GitLab übermitteln. So können Sie den Fortschritt verfolgen und die Ergebnisse direkt vom Commit oder Merge-Request aus überprüfen.

Weitere Details finden Sie im Abschnitt Commit Status Publisher der Dokumentation.

Automatisiertes und manuelles Merging

Sie können Regeln konfigurieren, um Änderungen in einem Branch automatisch im Rahmen der CI-Pipeline zu mergen. Dank der Unterstützung von kaskadierenden Merges können Sie komplexe Workflows erstellen, um Änderungen an geschützte Integrations- und Release-Branches zu übergeben. Wenn Tests fehlschlagen oder andere Bedingungen für das automatische Merging nicht erfüllt sind, haben Sie immer noch die Möglichkeit, die Änderungen direkt in der TeamCity-Bedienoberfläche manuell zu mergen, ohne GitLab aufrufen zu müssen.

Weitere Details finden Sie in den Abschnitten Automatic Merge und Manual Branch Merging der Dokumentation.

VCS-Kennzeichnung

TeamCity macht es Ihnen leicht, Git-Tags zu setzen, um Versionsnummern für die Quelldateien erfolgreicher Builds (oder aller Builds) automatisch oder manuell zu hinterlegen.

Weitere Details finden Sie im Abschnitt VCS Labeling der Dokumentation.

Integration von Issue-Trackern

Sie können die Details aller GitLab-Tickets, auf die in Commit-Nachrichten Bezug genommen wird, direkt in der TeamCity-Bedienoberfläche einsehen.

Weitere Details finden Sie im Abschnitt Integrating TeamCity with Issue Tracker der Dokumentation.

Sofortige Benachrichtigungen

Benachrichtigen Sie Commit-Autor*innen und Teammitglieder über Build- oder Testfehler, feiern Sie erfolgreiche Testläufe oder informieren Sie die zuständigen Personen, wenn die CI-Prüfungen abgeschlossen sind und die Änderungen für ein Code-Review bereitstehen. TeamCity bietet native Unterstützung für die Benachrichtigung über Slack, E-Mail, IDEs und Browser. Darüber hinaus finden Sie im reichhaltigen Plugin-Ökosystem Unterstützung für Benachrichtigungen über Microsoft Teams, Telegram und Discord.

Vereinfachte Authentifizierung

Sowohl bei TeamCity Cloud als auch bei TeamCity On-Premises können Sie Ihren bestehenden GitLab.com- oder GitLab-CE/EE-Account für die Identitäts- und Zugriffsverwaltung verwenden.

  • Ermöglichen Sie Ihren Benutzer*innen das Anmelden in TeamCity mit ihren bestehenden GitLab-Zugangsdaten.
  • Build- und Testergebnisse werden automatisch auf GitLab veröffentlicht, und Sie können wählen, ob alle GitLab-Benutzer*innen Zugriff auf TeamCity haben sollen oder nur jene Personen, die für die Konfiguration von Build-Pipelines zuständig sind.
  • Ordnen Sie bestehende TeamCity-Benutzer*innen GitLab-Profilen zu.
  • Konfigurieren Sie die Benutzerrechte in TeamCity unabhängig von GitLab-Rollen.

Leistungsstarke TeamCity-Funktionen ergänzen Ihren Workflow

Echtzeit-Informationen zu Ihren Tests

Wenn Builds und Tests fehlschlagen, hat es oberste Priorität, die Art des Problems zu verstehen und die Ursache zu identifizieren. TeamCity unterstützt Sie dabei auf verschiedene Weise:

  • Identifizieren des genauen Commits, der einen Fehler verursacht, Benachrichtigen des/der Autor*in und Veranlassen von Untersuchungen – alles automatisch.
  • Analysieren Ihres Testverlaufs, um in nachfolgenden Builds behobene Fehler zu identifizieren und unzuverlässige Tests aufzuspüren.
  • Verwenden der Inspektionen in IntelliJ IDEA oder ReSharper, um Ergebnisse der statischen Codeanalyse in Ihrer Build-Pipeline bereitzustellen.
  • Erfassen der Coverage Ihrer automatisierten Tests – mit nativer Unterstützung für Java- und .NET-Tools und Integrationen für viele andere Build-Runner, darunter Ant, Maven und Python.

CI-Optimierungen

Kurze, schnelle Feedback-Schleifen sind entscheidend für eine effektive DevOps-Strategie. TeamCity optimiert Build- und Test-Workflows, um schnelle Informationen zu Ihren neuesten Änderungen zu liefern und dadurch Ihren Release-Prozess zu beschleunigen und Ihnen mehr Zeit für die Untersuchung und Behebung von Problemen zu geben.

  • Build-Schritte sind standardmäßig so optimiert, dass unveränderte Build-Artefakte wiederverwendet werden.
  • TeamCity identifiziert automatisch die schnellsten Build-Agents und die effizienteste Aufgabenreihenfolge. Bei großen Projekten ermöglicht dies erhebliche Zeit- und Ressourceneinsparungen.
  • Erhalten Sie schnelleres Feedback, indem Sie Ihre automatisierten Tests durch automatische Parallelisierung auf mehrere Agents verteilen.
  • Testergebnisse werden in Echtzeit gemeldet, sodass Sie bereits vor Abschluss des Buildvorgangs mit Fehleruntersuchungen beginnen können.

FAQ: Continuous Integration mit TeamCity und GitLab

Ist die Integration zwischen TeamCity und GitLab kostenlos verfügbar?

Die GitLab-Integration ist in allen TeamCity-Versionen verfügbar – auch in der kostenlosen, selbst gehosteten Version. Sie können die Integration auch in TeamCity Cloud mit einer 14-tägigen Testphase kostenlos ausprobieren.

Ist TeamCity besser als GitLab?

TeamCity und GitLab lassen sich nicht sinnvoll vergleichen, da es sich um unterschiedliche Arten von Tools handelt. TeamCity bietet mehr Funktionsumfang und Flexibilität als die integrierten CI/CD-Funktionen von GitLab, aber es verfügt nicht über Funktionen wie Issue-Tracking oder Git-Hosting.

Unterstützt TeamCity die GitLab Container Registry?

Ja, TeamCity unterstützt alle gängigen Docker-Registries, einschließlich der GitLab Container Registry. Zusätzlich zu den üblichen Pull- und Run-Aktionen kann TeamCity veraltete Docker-Images bei der Serverbereinigung automatisch entfernen – dies ist besonders nützlich bei einem On-Premises-CI/CD-System.

Erfahren Sie mehr über die Docker-Integration von TeamCity.

Kann ich meinen Code in TeamCity kompilieren, ohne ihn in GitLab zu committen?

Wenn Sie das TeamCity-Plugin in einer IntelliJ-basierten IDE oder in Visual Studio installieren, können Sie Ihren Code eine CI-Pipeline durchlaufen lassen, ohne ihn zu committen. Besonders populär ist diese Funktion in der Game-Entwicklung.