TeamCity 2018.1: Neues Kotlin-DSL, Hochverfügbarkeitsmodus, verbesserte Docker-Integration und sofort einsatzbereite Amazon S3

Hallo Habr! Wir haben kürzlich eine neue Version von TeamCity veröffentlicht - 2018.1. Dies ist die erste Hauptversion unseres CI / CD-Servers in diesem Jahr. Und es gibt etwas zu sehen.

Die vollständige Liste der Änderungen ist wie immer beeindruckend . Aber hier werden wir uns auf vier Hauptmerkmale der Veröffentlichung konzentrieren. Lass uns gehen!



Neues TeamCity Kotlin DSL


TeamCity verfügt über eine eigene DSL (Domain-Specific Language), mit der Sie die Einstellungen von Projekten beschreiben und Konfigurationen in Kotlin-Code erstellen können, wobei die Prinzipien der Infrastruktur als Code verkörpert werden. In 2018.1 haben wir das Format dieses DSL erheblich überarbeitet, um es einfacher, bequemer und funktionaler zu machen.

Einfacher . Das DSL-Format wurde vereinfacht, da TeamCity keinen UUID-Server und keine Projekt-ID mehr benötigt. Er lernte, diese unabhängig vom Namen der Projekte zu generieren und Konfigurationen zu erstellen. Hier finden Sie beispielsweise den gesamten Code, der zur Beschreibung eines einfachen Projekts „Hallo Welt“ in TeamCity erforderlich ist:

version = "2018.1" project{ buildType(HelloWorld) } object HelloWorld : BuildType({ name = "Hellow world" steps { scriptContent = "echo 'Hello world!'" } }) 

Einzelne Datei . Der gesamte Code zur Beschreibung der TeamCity-Einstellungen wird jetzt in einer Datei gespeichert - settings.kts, die dem Verzeichnis .teamcity hinzugefügt werden muss.

Portabilität . Da der Code jetzt nicht mehr an einen bestimmten Server oder ein bestimmtes Projekt gebunden ist, kann er für andere Installationen oder Projekte auf demselben Server wiederverwendet werden. Kopieren Sie einfach settings.kts in das entsprechende Repository.

Erstellen Sie Projekte aus einer URL . Damit TeamCity Einstellungen aus dem Code lesen und anwenden kann, reicht es aus, einen Link zum Repository mit .teamcity / settings.kts zu erstellen. Alle beschriebenen Einstellungen werden automatisch ausgeführt.

Hier ist eine kurze Demo der neuen Kotlin DSL-Funktionen von antonarhipov (auf Englisch):


Hochverfügbarkeit und schreibgeschützt


In 2018.1 wurde es möglich, den Server im schreibgeschützten Modus zu starten. Auf diese Weise können Sie einen leicht zugänglichen TeamCity-Cluster konfigurieren, der aus zwei TeamCity-Servern besteht: dem Haupt- und dem Ersatzserver, die im schreibgeschützten Modus arbeiten. In diesem Fall hat der schreibgeschützte Server Lesezugriff auf die Datenbank und das Datenverzeichnis und pumpt ständig die vom Hauptserver durchgeführten Datenänderungen auf. Bei einem Ausfall des Hauptservers akzeptiert der schreibgeschützte Server alle Anforderungen. Es ist wichtig zu verstehen, dass der schreibgeschützte Server nur den letzten Status zum Zeitpunkt des Zusammenbruchs des Hauptservers anzeigen kann, es jedoch nicht möglich ist, diesen Status zu ändern.

Dies gilt für große Installationen, bei denen ein ununterbrochener Zugriff auf den CI-Server sowohl bei geplanten Fehlern als auch bei geplanten Updates wichtig ist.

Verbesserte Docker-Unterstützung


Wir haben zuvor über die Tatsache geschrieben, dass TeamCity Docker "out of the box" unterstützt: Starten von Builds im Container, Erstellen von Docker-Images, Hinzufügen und Entfernen aus dem Repository, Starten von Docker-Befehlen, Docker Compose.

Diese Version bietet Unterstützung für die .NET CLI- und Powershell-Läufer, mit denen Sie diese Erstellungsschritte im Docker-Container ausführen können.

Der Docker-Runner selbst wurde ebenfalls aktualisiert: Er unterstützt nativ Build, Push und andere.

In diesem Video sehen Sie, wie die Docker-Unterstützung in TeamCity funktioniert:


Speichern Sie Artefakte auf Amazon S3


Das TeamCity AWS S3-Plugin existiert bereits seit einiger Zeit, aber in Version 2018.1 haben wir viele Probleme behoben und es in die Hauptdistribution aufgenommen. Die S3-Integration behandelt Abhängigkeitsartefakte und Bereinigungsartefakte so elegant und ist so in die TeamCity-Benutzeroberfläche integriert, dass ein ahnungsloser Benutzer möglicherweise nicht bemerkt, dass Artefakte im S3-Bucket gespeichert sind.

Hier ist eine Demo:


Weitere Verbesserungen


Neben anderen Verbesserungen ist eine bequemere Arbeit mit Montageschritten zu erwähnen, die von den Vorlagen geerbt wurden. Insbesondere ist es jetzt möglich, Vor- und Nachschritte in der Vorlage festzulegen und anzuzeigen, dass die Konfigurationsschritte dazwischen liegen.


Die neue Version hat auch die Arbeit mit NuGet-Feeds erheblich verbessert. Jetzt kann es auf der Ebene eines bestimmten Projekts und nicht global auf dem gesamten Server aktiviert werden, was in der Vergangenheit zu Leistungsproblemen geführt hat. Infolgedessen werden jetzt mehrere NuGet-Feeds in verschiedenen Projekten unterstützt.



Wenn einige Ihrer Dienste im Netzwerk für SSL-Zertifikate funktionieren, die nicht von einer bekannten Behörde signiert sind, können Sie diese Zertifikate anstelle des ziemlich komplizierten Imports in Java-Server und -Agenten einfach über eine praktische Weboberfläche in das Stammserverprojekt hochladen. Sowohl der Server als auch die Agenten beginnen sofort mit der Verwendung der neuen Zertifikate.

Wir hatten kürzlich ein Webinar, in dem antonarhipov all das in Aktion demonstrierte. Sie können es im Eintrag sehen:


Sie können die neueste Version von TeamCity 2018.1 von unserer Website herunterladen (sowie unter AWS, in Azure oder aus dem Docker-Container ausführen). Hinterlassen Sie Kommentare und Vorschläge zur neuen Version in unserem Bug-Tracker .

Wir erinnern Sie daran, dass TeamCity Professional 100 Konfigurations-Builds und 3 Builds eines Agenten absolut kostenlos und ohne zeitliche und funktionale Einschränkungen bereitstellt.
Hab einen schönen Build!

Source: https://habr.com/ru/post/de416999/


All Articles