
Continuous Deployment (kontinuierliche Bereitstellung) ist ein spezieller Ansatz in der Softwareentwicklung, der angewendet wird, um verschiedene Funktionen schnell, sicher und effizient in Software zu integrieren.
Die grundlegende Idee besteht darin, einen zuverlĂ€ssigen automatisierten Prozess zu schaffen, der es dem Entwickler ermöglicht, dem Benutzer schnell ein fertiges Produkt bereitzustellen. Dabei werden kontinuierlich Ănderungen in die Produktion eingefĂŒhrt â dies wird als Continuous Delivery Pipeline bezeichnet.
Skillbox empfiehlt: Praktischer Kurs .
Wir erinnern daran: alle Leser von âHabrâ erhalten einen Rabatt von 10.000 Rubel bei der Anmeldung zu einem beliebigen Kurs von Skillbox mit dem Aktionscode âHabrâ.

FĂŒr das Management des Flusses kann eine breite Palette von Tools verwendet werden, darunter sowohl kostenpflichtige als auch vollkommen kostenlose. In diesem Artikel werden die drei beliebtesten Lösungen unter Entwicklern beschrieben, die fĂŒr jeden Programmierer nĂŒtzlich sein können.
Jenkins
VollstÀndig autonomer Automatisierungsserver mit offenem Quellcode. Er eignet sich zur Automatisierung aller Arten von Aufgaben, die mit dem Erstellen, Testen, Bereitstellen oder Deployen von Software verbunden sind.
Minimale Anforderungen an den PC:
- 256 MB RAM, 1 GB Speicherplatz.
Optimal:
- 1 GB RAM, 50 GB auf der Festplatte.
FĂŒr den Betrieb wird auch zusĂ€tzliche Software benötigt â das Java Runtime Environment (JRE) Version 8.
Die Architektur (verteilte Systeme) sieht folgendermaĂen aus:

Jenkins-Server â die Installation, die fĂŒr das Hosting der GUI sowie die Organisation und AusfĂŒhrung des gesamten Builds verantwortlich ist.
Jenkins Node/Slave/Build-Server â GerĂ€te, die eingerichtet werden können, um Build-AuftrĂ€ge im Namen des Masters (Hauptknotens) auszufĂŒhren.
Installation fĂŒr Linux
Zuerst muss das Jenkins-Repository zum System hinzugefĂŒgt werden:
cd /tmp && wget -q -O â | sudo apt-key add â echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Paket-Repository aktualisieren:
sudo apt update
Jenkins installieren:
sudo apt install jenkins
Danach ist Jenkins im System ĂŒber den Standardport 8080 verfĂŒgbar.
Zur ĂberprĂŒfung der FunktionsfĂ€higkeit muss die Adresse im Browser geöffnet werden :8080. Dann fordert das System zur Eingabe des initialen Passworts des Benutzers mit Root-Rechten auf. Dieses Passwort befindet sich in der Datei /var/lib/jenkins/secrets/initialAdminPassword.
Jetzt ist alles betriebsbereit, man kann mit der Erstellung von CI/CD-Pipelines beginnen. Die grafische BenutzeroberflĂ€che sieht folgendermaĂen aus:


StÀrken von Jenkins:
- Skalierbarkeit, die die Master/Slave-Architektur bietet;
- Vorhandensein von REST XML/JSON API;
- Möglichkeit, eine groĂe Anzahl von Erweiterungen ĂŒber Plugins anzuschlieĂen;
- eine aktive und stÀndig wachsende Gemeinschaft.
Nachteile:
- es fehlt ein Analyseblock;
- nicht sehr benutzerfreundliche OberflÀche.
TeamCity
Kommerzielle Entwicklung von JetBrains. Der Server ist leicht einzurichten und bietet eine ausgezeichnete BenutzeroberflĂ€che. In der Standardkonfiguration gibt es eine groĂe Anzahl an Funktionen, die stĂ€ndig erweitert werden.
FĂŒr den Betrieb wird die Java Runtime Environment (JRE) Version 8 benötigt.
Die Hardwareanforderungen des Servers sind nicht kritisch:
- RAM â 3,2 GB;
- Prozessor â dual-core, 3,2 GHz;
- Netzwerkverbindung mit einer Bandbreite von 1 Gbit/s.
Der Server ermöglicht eine hohe Arbeitsleistung:
- 60 Projekte mit 300 Build-Konfigurationen;
- Zuweisung von 2 MB fĂŒr das Build-Protokoll;
- 50 Build-Agenten;
- Möglichkeit zur Bearbeitung von 50 Benutzern in der Webversion und 30 Benutzern in der IDE;
- 100 Verbindungen zu externen VCS, in der Regel Perforce und Subversion. Durchschnittliche Ănderungsdauer â 120 Sekunden;
- mehr als 150 Modifikationen pro Tag;
- Arbeiten mit einer Datenbank auf einem Server;
- Einstellungen fĂŒr den Serverprozess JVM: -Xmx1100m -XX:MaxPermSize=120m.
Die Anforderungen an den Agenten hĂ€ngen von den aktiven Builds ab. Die Hauptaufgabe des Servers besteht darin, alle verbundenen Agenten zu ĂŒberwachen und die Builds aus der Warteschlange basierend auf den KompatibilitĂ€tsanforderungen auf diese Agenten zu verteilen, wĂ€hrend die Ergebnisse zurĂŒckgegeben werden. Die Agenten verfĂŒgen ĂŒber unterschiedliche Plattformen und Betriebssysteme sowie eine vorab konfigurierte Umgebung.
Alle Informationen zu den Build-Ergebnissen werden in einer Datenbank gespeichert. Dies umfasst in erster Linie die Historie und andere Ă€hnliche Daten, Ănderungen im VCS, Agenten, Build-Warteschlangen, Benutzerkonten und Berechtigungen. Nur die Build-Protokolle und Artefakte sind nicht in der Datenbank enthalten.

Installation fĂŒr Linux
FĂŒr die manuelle Installation von TeamCity mit einem Servlet-Container Tomcat sollte das TeamCity-Archiv verwendet werden: TeamCity .tar.gz. Herunterladen .
tar -xfz TeamCity.tar.gz
/bin /runAll. sh [start|stop]
Beim ersten Start mĂŒssen Sie den Typ der Datenbank auswĂ€hlen, in der die Build-Daten gespeichert werden sollen.

Die Standardkonfiguration lÀuft auf :8111/ mit einem registrierten Build-Agenten, der auf demselben PC lÀuft.
StÀrken von TeamCity:
- einfache Konfiguration;
- benutzerfreundliche OberflÀche;
- eine groĂe Anzahl integrierter Funktionen;
- Support-Service;
- gibt es ein RESTful API;
- gute Dokumentation;
- gute Sicherheit.
Nachteile:
- eingeschrÀnkte Integration;
- dies ist ein kostenpflichtiges Tool;
- eine kleine Gemeinschaft (die jedoch wÀchst).
GoCD
Ein Open-Source-Projekt, das die Java Runtime Environment (JRE) Version 8 zur Installation und DurchfĂŒhrung benötigt.
Systemanforderungen:
- RAM â mindestens 1 GB, besser mehr;
- Prozessor â Dual-Core mit einer Taktfrequenz von 2 GHz;
- Festplatte â mindestens 1 GB freier Speicherplatz.
Agent:
- RAM â mindestens 128 MB, besser mehr;
- Prozessor â mindestens 2 GHz.
Der Server sorgt fĂŒr den Betrieb der Agenten und bietet eine benutzerfreundliche OberflĂ€che:

Stages/Jobs/Tasks:

Installation fĂŒr Linux
echo âdeb /â | sudo tee /etc/apt/sources.list.d/gocd.list
curl | sudo apt-key add â
add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get install go-agent
/etc/init.d/go-server [start|stop|status|restart]
/etc/init.d/go-agent [start|stop|status|restart]
StandardmĂ€Ăig lĂ€uft GoCD auf :8153.
StÀrken von GoCD:
- offener Quellcode;
- einfache Installation und Einrichtung;
- gute Dokumentation;
- ausgezeichnete BenutzeroberflÀche:

- Möglichkeit zur schrittweisen Darstellung des GoCD-Bereitstellungsprozesses in einer Ansicht:

- exzellente Darstellung der Pipeline-Struktur:

- GoCD optimiert den CD-Arbeitsablauf in den gefragtesten Cloud-Umgebungen, einschlieĂlich Docker und AWS;
- Das Tool ermöglicht die Fehlerbehebung in der Pipeline, wobei jedes Update von der Commit- bis zur Bereitstellungsphase in Echtzeit verfolgt wird.
Nachteile:
- mindestens ein Agent erforderlich;
- keine Konsole zur Anzeige aller abgeschlossenen Aufgaben;
- fĂŒr jede BefehlsausfĂŒhrung muss eine separate Aufgabe zur Pipeline-Konfiguration erstellt werden;
- Um ein Plugin zu installieren, muss die .jar-Datei nach /plugins/external verschoben und der Server neu gestartet werden;
- relativ kleine Gemeinschaft.
Als Fazit
Das sind nur drei Tools, tatsÀchlich gibt es viel mehr. Die Auswahl ist schwierig, daher sollte man auf zusÀtzliche Aspekte achten.
Der offene Quellcode des Tools ermöglicht es, seine Funktionen besser zu verstehen und schneller neue Funktionen hinzuzufĂŒgen. Wenn jedoch etwas nicht funktioniert, bleibt man auf sich selbst und die UnterstĂŒtzung der Community angewiesen. Kostenpflichtige Tools bieten UnterstĂŒtzung, die manchmal entscheidend sein kann.
Wenn Sicherheit das Wichtigste ist, sollte man mit einem lokalen Tool arbeiten. Wenn nicht, ist die Wahl einer SaaS-Lösung eine gute Option.
Und das Letzte: Um einen wirklich effektiven Prozess der kontinuierlichen Bereitstellung zu gewĂ€hrleisten, mĂŒssen Kriterien festgelegt werden, deren Spezifikationen es ermöglichen, den Kreis der verfĂŒgbaren Tools einzugrenzen.
Skillbox empfiehlt:
- ZweijÀhriger praktischer Kurs .
- Online-Kurs .
- Praktischer Jahreskurs .
Quelle: habr.com
