CI einrichten mit Cake+TeamCity / Sudo Null IT News

Hey Habr! Mein Name ist Rustem, ich bin Senior DevOps Engineer bei IBM und heute möchte ich Ihnen eine der Möglichkeiten zeigen, eine C#-Anwendung zu erstellen. Dazu benötigen wir Cake + TeamCity für den CI-Prozess.

Heute werden wir den CI-Prozess aufsetzen, also die Zusammenstellung unseres Codes.

Theoretische Einführung: was wir über unser Toolkit wissen müssen.

Kuchen ist ein kostenloses, plattformübergreifendes Open-Source-Build-Automatisierungssystem und C#-DSL für Aufgaben wie das Kompilieren von Code, das Kopieren von Dateien und Ordnern, das Ausführen von Komponententests, das Komprimieren von Dateien und das Erstellen von NuGet-Paketen.

Teamstadt

TeamCity ist ein CI-Server, mit dem Sie automatische Builds und Tests unseres Produkts einrichten können

Grundlegende Konzepte, die wir in TC kennen müssen:

Bauagent Die Software, die den Erstellungsprozess tatsächlich durchführt. Er wird separat vom TeamCity-Server installiert und konfiguriert, d. h. der Agent kann auf einem separaten Computer (physisch oder virtuell) installiert und auf demselben Betriebssystem (OS) wie der Server oder einem anderen Betriebssystem ausgeführt werden. Erwähnenswert ist auch, dass der Assembler-Agent selbst keine Code-Assembler-Mechanismen bereitstellt, sondern genau diese Mechanismen aus der Umgebung des Servers sucht, auf dem er installiert ist, und sie dann in der Assemblierung verwendet.

Teamcity-Server – Der Server selbst führt keine Builds oder Tests durch: Die Aufgabe des Servers besteht darin, alle verbundenen Build-Agenten zu verfolgen, Builds in einer Warteschlange basierend auf Kompatibilitätsanforderungen an Agenten zu verteilen und die Ergebnisse zu melden.

Projekt — TeamCity-Projekt entspricht einem Softwareprojekt oder einer bestimmten Version/Release eines Softwareprojekts. Ein Projekt ist ein Satz von Konfigurationen für Bauvorschriften.

Build-Konfiguration ist eine Kombination von Parametern, die das Montageverfahren definiert. Zu den Einstellungen gehören VCS-Root, Build-Schritte, Build-Trigger.

VCS-Stamm – eine Reihe von Versionskontrollparametern (Quellpfade, Benutzername, Passwort, Checkout-Modus und andere Parameter), die bestimmen, wie TeamCity mit dem Versionskontrollsystem (SCM) interagiert, um Änderungen zu verfolgen und Quellen für den Build zu erhalten.

Schritt bauen – eine zu erledigende Aufgabe. Jeder Build-Schritt wird durch einen Build-Runner dargestellt, der die Integration mit einem bestimmten Build-Tool (z. B. Ant, Gradle, MSBuild usw.), einem Testframework (z. B. NUnit) oder einer Codeanalyse-Engine ermöglicht. So können Sie in einer Assemblierung mehrere Schritte haben und nacheinander Testwerkzeuge aufrufen, Code Coverage durchführen und beispielsweise Ihr Projekt kompilieren.

Bauen — CI/CD-Job, der auf dem Agenten ausgeführt wird. Besteht aus einem oder mehreren Build-Schritten, die beliebige Wartungsaufgaben ausführen können: kompilieren, testen, bereitstellen, Protokolle schreiben usw.

Baue Artefakte – Dateien, die durch den Erstellungsprozess generiert werden, wie z. B. Installationsprogramme, Binärdateien, WAR-Dateien, Berichte, Protokolldateien, die zum Herunterladen verfügbar sind.

Trainieren

Beginnen wir mit der Montage.

Hier hat das Entwicklungsteam seinen Code übertragen und nun müssen Sie dessen automatische Assemblierung konfigurieren.

Unsere Anwendung ist C#, was bedeutet, dass wir sie aus der Projektdatei mit der Erweiterung .csproj zusammenstellen werden

Erinnern wir uns an seinen Standort.

Beginnen wir mit dem Schreiben von Build-Skripten. Dazu benötigen wir ein offizielles Skript, das für die Installation und Überprüfung von Cake sowie für die Ausführung der Build-Skripte verantwortlich ist.

Sie können das Skript von herunterladen https://github.com/cake-build/cake/blob/develop/build.ps1

Als nächstes müssen wir im Repository einen Ordner mit dem Hauptanwendungscode erstellen und unsere Cake-Skripte dorthin übertragen.

Diese. Jetzt haben wir einen Ordner mit dem Hauptskript und einen Ordner, in dem sich die Build-Skripte befinden.

Zuerst erstellen wir eine Datei “paths.cake”, in die wir den Pfad zu unserer csproj-Datei schreiben.

Als Nächstes erstellen wir ein Skript namens „prepare.cake“, in dem wir die Schritte vor dem Build beschreiben: Löschen des Verzeichnisses und Wiederherstellen der Nuget-Pakete.

Als nächstes kommt das Build-Skript build.cake.

Hier beschreiben wir unsere Aufgabe, d.h. ein Build-Job und der Prozess und Prozess des Packens unserer Artefakte im nupkg-Format, um sie an das Artefakt-Repository in Octopus zu liefern.

Als Nächstes erstellen wir die Datei “targets.cake”, in der globale Aufgaben gespeichert werden, die alle von uns geschriebenen Aufgaben enthalten und die Abhängigkeiten zwischen ihnen definieren. Diese. Die abhängige Aufgabe wird erst ausgeführt, wenn die Ausführung der Aufgabe, von der sie abhängt, erfolgreich ist.

Und die letzte Datei ist load.cake, die alle unsere Skripte in der beschriebenen Reihenfolge aufruft.

Großartig, jetzt haben wir alle Skripte geschrieben und unser src-Ordner enthält die folgenden Dateien:

Es bleibt, den CI-Prozess in TeamCity zu konfigurieren. Dazu erstellen wir ein Projekt in TC.

Gehen Sie zu Verwaltung -> Projekt -> Projekt erstellen

Wir geben unser Repository sowie den Login und das Passwort unseres Benutzers an (im Moment ist das Passwort Personal Access Token, das unter github -> Einstellungen -> Entwicklereinstellungen -> Personal Access Token erhältlich ist)

Als nächstes müssen wir eine Build-Konfiguration in unserem Projekt erstellen.

Als nächstes erstellen wir die Build-Schritte.

Als nächstes geben wir unserem Schritt einen Namen, wählen Powershell als Runner aus, wählen im Skriptfeld „Datei“ und geben den Pfad zu unserer build.ps1 an, wir schreiben auch zusätzliche Argumente in das Skript (Starten der Haupt-Build-Aufgabe von unserer die Datei “targets.cake”).

Jetzt können Sie unser CI testen – auf Ausführen drücken und schauen.

Und… Die Montage war erfolgreich. Du bist wunderbar! Wir nehmen das Artefakt.

Bald wird OTUS eine offene Lektion „Docker-Bilder. Mikrodienste. Darauf werden wir herausfinden, wie man ein Dockerfile richtig schreibt; Lassen Sie uns darüber sprechen, was Microservices sind und wie sie miteinander interagieren. Jeder kann sich für den Kurs anmelden Verknüpfung.

Similar Posts

Leave a Reply

Your email address will not be published.