
Continuous Deployment (kontinuierliche Bereitstellung) ist ein spezieller Ansatz in der Softwareentwicklung, der fĂŒr die schnelle, sichere und effektive Implementierung verschiedener Funktionen in Software angewendet wird.
Die Hauptidee besteht darin, einen zuverlĂ€ssigen automatisierten Prozess zu schaffen, der es Entwicklern ermöglicht, den Nutzern schnell ein fertiges Produkt bereitzustellen. Dabei werden fortlaufend Ănderungen in die Produktionsumgebung eingefĂŒhrt â dies wird als Continuous Delivery Pipeline (CD-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â.

Zur Steuerung des Workflows kann eine breite Palette von Tools eingesetzt werden, sowohl kostenpflichtige als auch vollstĂ€ndig kostenlose. In diesem Artikel werden drei der bei Entwicklern beliebtesten Lösungen beschrieben, die fĂŒr jeden Programmierer nĂŒtzlich sein können.
Jenkins
Ein vollstÀndig autonomer Automatisierungsserver mit offener Quelle. Er ist ideal zur Automatisierung aller Arten von Aufgaben in Bezug auf Build, Test, Bereitstellung oder Deployment von Software.
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 zusĂ€tzlich Software benötigt - Java Runtime Environment (JRE) Version 8.
Die Architektur (verteilte Berechnungen) sieht wie folgt aus:

Jenkins-Server - eine Installation, die fĂŒr das GUI-Hosting sowie die Organisation und AusfĂŒhrung des gesamten Builds verantwortlich ist.
Jenkins-Node/Slave/Bauserver - GerĂ€te, die fĂŒr die AusfĂŒhrung von Build-Jobs im Namen des Masters (Hauptknotens) konfiguriert werden können.
Installation fĂŒr Linux
Zuerst mĂŒssen Sie das Jenkins-Repository zum System hinzufĂŒgen:
cd /tmp && wget -q -O - | sudo apt-key add - echo 'deb binary/' | sudo tee -a /etc/apt/sources.list.d/je
Das Paket-Repository aktualisieren:
sudo apt update
Jenkins installieren:
sudo apt install jenkins
AnschlieĂend ist Jenkins im System unter dem Standardport 8080 verfĂŒgbar.
Zur ĂberprĂŒfung der FunktionalitĂ€t muss die Adresse im Browser geöffnet werden :8080. Das System fordert dann zur Eingabe des anfĂ€nglichen Passworts fĂŒr den Benutzer mit Root-Rechten auf. Dieses Passwort befindet sich in der Datei /var/lib/jenkins/secrets/initialAdminPassword.
Jetzt ist alles betriebsbereit, und Sie können mit der Erstellung von CI/CD-Pipelines beginnen. Die grafische BenutzeroberflĂ€che der Arbeitsumgebung sieht folgendermaĂen aus:


StÀrken von Jenkins:
- Skalierbarkeit, die durch die Master/Slave-Architektur gewÀhrleistet wird;
- VerfĂŒgbarkeit von REST XML/JSON API;
- Möglichkeit, viele Erweiterungen durch Plugins anzuschlieĂen;
- eine aktive und stÀndig wachsende Community.
Nachteile:
- fehlendes Analyse-Modul;
- nicht sehr benutzerfreundliche BenutzeroberflÀche.
TeamCity
Kommerzielle Entwicklung von JetBrains. Der Server zeichnet sich durch einfache Konfiguration und hervorragende BenutzeroberflĂ€che aus. In der Standardkonfiguration sind viele Funktionen vorhanden, und die Anzahl der verfĂŒgbaren Plugins wĂ€chst stĂ€ndig.
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 Leistung:
- 60 Projekte mit 300 Build-Konfigurationen;
- Zuweisung von 2 MB fĂŒr das Build-Protokoll;
- 50 Build-Agenten;
- Möglichkeit fĂŒr 50 Benutzer in der Web-Version und 30 Benutzer in der IDE;
- 100 Verbindungen zu externen Versionierungssystemen, in der Regel Perforce und Subversion. Durchschnittliche Ănderungszeit â 120 Sekunden;
- ĂŒber 150 Ănderungen pro Tag;
- Arbeiten mit einer Datenbank auf einem Server;
- JVM-Prozesskonfigurationen des Servers: -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 KompatibilitĂ€tsanforderungen auf diese Agenten zu verteilen und die Ergebnisse zu melden. Die Agenten laufen auf unterschiedlichen Plattformen und Betriebssystemen und verfĂŒgen ĂŒber eine vorkonfigurierte Umgebung.
Alle Informationen zu den Build-Ergebnissen werden in einer Datenbank gespeichert. Dies umfasst zunĂ€chst die Historie und Ă€hnliche Daten, Ănderungen im VCS, Agenten, Build-Warteschlangen, Benutzerkonten und Berechtigungen. Protokolle und Artefakte werden jedoch nicht in die Datenbank aufgenommen.

Installation fĂŒr Linux
FĂŒr die manuelle Installation von TeamCity mit dem Servlet-Container Tomcat sollte das TeamCity-Archiv: TeamCity .tar.gz verwendet werden. 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.

Die Standardkonfiguration funktioniert auf :8111/ mit einem registrierten Build-Agenten, der auf demselben PC lÀuft.
StÀrken von TeamCity:
- einfache Einrichtung;
- benutzerfreundliche OberflÀche;
- eine groĂe Anzahl integrierter Funktionen;
- Kundendienst;
- verfĂŒgbares RESTful API;
- gute Dokumentation;
- gute Sicherheit.
Nachteile:
- eingeschrÀnkte Integration;
- dies ist ein kostenpflichtiges Tool;
- eine kleine, aber wachsende Community.
GoCD
Open-Source-Projekt, welches Java Runtime Environment (JRE) Version 8 fĂŒr die Installation und den Betrieb 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 ermöglicht den Betrieb der Agenten und bietet eine benutzerfreundliche OberflÀche:

Stages/Jobs/Aufgaben:

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 arbeitet GoCd ĂŒber :8153.
StÀrken von GoCd:
- Open Source;
- einfache Installation und Einrichtung;
- gute Dokumentation;
- hervorragende BenutzeroberflÀche:

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

- ausgezeichnete Darstellung der Pipeline-Struktur:

- GoCD optimiert den CD-Prozess in den gefragtesten Cloud-Umgebungen, einschlieĂlich Docker, AWS;
- Das Tool ermöglicht die Behebung von Problemen in der Pipeline, indem es eine Echtzeit-Verfolgung jeder Ănderung vom Commit bis zur Bereitstellung bietet.
Nachteile:
- Es wird mindestens ein Agent benötigt;
- Es gibt keine Konsole zur Anzeige aller ausgefĂŒhrten Aufgaben;
- FĂŒr die AusfĂŒhrung jedes Befehls muss eine einzelne Aufgabe zur Pipeline-Konfiguration erstellt werden;
- Um das Plugin zu installieren, muss die .jar-Datei in /plugins/external verschoben und der Server neu gestartet werden;
- Eine relativ kleine Community.
Als Ergebnis
Es gibt insgesamt drei Tools, in Wirklichkeit sind es jedoch weitaus mehr. Die Auswahl ist schwierig, daher sollte man unbedingt auf weitere Aspekte achten.
Der offene Quellcode des Tools ermöglicht es, zu verstehen, worum es sich handelt, und neue Funktionen schneller hinzuzufĂŒgen. Wenn jedoch etwas nicht funktioniert, bleibt man oft nur auf sich allein gestellt und auf die Hilfe der Community angewiesen. Kostenpflichtige Tools bieten UnterstĂŒtzung, die manchmal entscheidend sein kann.
Wenn Sicherheit oberste PrioritÀt hat, sollte man mit einem lokalen Tool arbeiten. Andernfalls ist die Wahl einer SaaS-Lösung eine gute Option.
Und schlieĂlich: Um wirklich effektive Prozesse fĂŒr das Continuous Deployment zu gewĂ€hrleisten, mĂŒssen die Kriterien festgelegt werden, deren Spezifikationen die Auswahl der verfĂŒgbaren Werkzeuge einschrĂ€nken.
Skillbox empfiehlt:
- ZweijÀhriger praktischer Kurs .
- Online-Kurs .
- Praktischer Jahreskurs .
Quelle: habr.com
