
Continuous Deployment ist ein spezieller Ansatz in der Softwareentwicklung, mit dem verschiedene Funktionen in Software schnell, sicher und effizient implementiert werden können.
Die Hauptidee besteht darin, einen zuverlĂ€ssigen automatisierten Prozess zu erstellen, mit dem der Entwickler dem Benutzer schnell ein fertiges Produkt zur VerfĂŒgung stellen kann. Gleichzeitig werden in der Produktion stĂ€ndige Ănderungen vorgenommen - dies wird als Continuous Delivery Pipeline (CD-Pipeline) bezeichnet.
Skillbox empfiehlt: Praktikum "Mobile Developer PRO" .
Wir erinnern Sie daran: FĂŒr alle Leser von âHabrâ - ein Rabatt von 10.000 Rubel bei der Anmeldung fĂŒr einen Skillbox-Kurs mit dem Promo-Code âHabrâ.

Um den Fluss zu steuern, können Sie eine Vielzahl von Tools verwenden, von denen es sowohl kostenpflichtige als auch völlig kostenlose gibt. Dieser Artikel beschreibt die drei beliebtesten Lösungen unter Entwicklern, die fĂŒr jeden Programmierer nĂŒtzlich sein können.
Jenkins
VollstÀndig eigenstÀndiger Open Source-Automatisierungsserver. Es lohnt sich, mit ihm zusammenzuarbeiten, um alle Arten von Aufgaben im Zusammenhang mit der Montage, dem Testen, der Lieferung oder der Bereitstellung von Software zu automatisieren.
PC-Mindestanforderungen:
- 256 MB RAM, 1 GB Dateispeicher.
Optimal:
- 1 GB RAM, 50 GB Festplattenspeicher.
FĂŒr die Arbeit benötigen Sie auĂerdem zusĂ€tzliche Software - Java Runtime Environment (JRE) Version 8.
Die Architektur (Distributed Computing) ist wie folgt:

Jenkins Server - eine Installation, die fĂŒr das GUI-Hosting sowie die Organisation und AusfĂŒhrung der gesamten Assembly verantwortlich ist.
Jenkins-Knoten / Slave / Build-Server - GerĂ€te, die so konfiguriert werden können, dass Montagearbeiten im Auftrag des Masters (des Hauptknotens) ausgefĂŒhrt werden.
Linux-InstallationZuerst mĂŒssen Sie das Jenkins-Repository zum System hinzufĂŒgen:
cd / tmp && wget -q -O - pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - echo 'deb pkg.jenkins.io/debian-stable binary /' | sudo tee -a /etc/apt/sources.list.d/jePaket-Repository aktualisieren:
sudo apt updateJenkins installieren:
sudo apt install jenkinsDanach ist Jenkins standardmĂ€Ăig auf dem Port 8080 auf dem System verfĂŒgbar.
Ăffnen Sie zum ĂberprĂŒfen der FunktionalitĂ€t die Adresse
localhost : 8080 im Browser. AnschlieĂend werden Sie vom System aufgefordert, das ursprĂŒngliche Kennwort des Benutzers mit Root-Rechten einzugeben. Dieses Passwort befindet sich in der Datei / var / lib / jenkins / Secrets / initialAdminPassword.
Jetzt ist alles betriebsbereit. Sie können CI / CD-Streams erstellen. Die grafische OberflÀche der Arbeitsumgebung sieht wie folgt aus:


StÀrken von Jenkins:
- Skalierbarkeit durch die Master / Slave-Architektur;
- das Vorhandensein der REST XML / JSON-API;
- die Möglichkeit, dank Plugins eine groĂe Anzahl von Erweiterungen anzuschlieĂen;
- Eine aktive und sich stÀndig weiterentwickelnde Gemeinschaft.
Nachteile:
- fehlende Analyseeinheit;
- nicht zu bequeme Schnittstelle.
Teamcity
Kommerzielle Entwicklung von JetBrains. Der Server eignet sich fĂŒr eine einfache Einrichtung und eine hervorragende BenutzeroberflĂ€che. In der Standardkonfiguration gibt es eine groĂe Anzahl von Funktionen, die Anzahl der verfĂŒgbaren Plugins nimmt stĂ€ndig zu.
FĂŒr diesen Inhalt ist die Java Runtime Environment (JRE) Version 8 erforderlich.
Die Serveranforderungen fĂŒr die Hardware sind nicht kritisch:
- RAM - 3,2 GB;
- Prozessor - Dual Core, 3,2 GHz;
- Kommunikationskanal mit einer Bandbreite von 1 Gbit / s.
Mit dem Server können Sie eine hohe Arbeitsleistung erzielen:
- 60 Projekte mit 300 Baugruppenkonfigurationen;
- Zuordnung von 2 MB zum Baugruppenprotokoll;
- 50 Build Agents;
- die FĂ€higkeit, 50 Benutzer in der Webversion und 30 Benutzer in der IDE zu arbeiten;
- 100 externe SLE-Verbindungen, normalerweise Perforce und Subversion. Die durchschnittliche Ănderungszeit betrĂ€gt 120 Sekunden.
- mehr als 150 Modifikationen pro Tag;
- mit der Datenbank auf einem Server arbeiten;
- JVM-Server-Prozesseinstellungen: -Xmx1100m -XX: MaxPermSize = 120m.
Die Agentenanforderungen werden durch AusfĂŒhren von Assemblys bestimmt. Die Hauptaufgabe des Servers besteht darin, alle verbundenen Agenten zu verfolgen und Assemblys aus der Warteschlange basierend auf den KompatibilitĂ€tsanforderungen auf diese Agenten zu verteilen, wobei die Ergebnisse gemeldet werden. Agenten verfĂŒgen ĂŒber verschiedene Plattformen und Betriebssysteme sowie eine vorkonfigurierte Umgebung.
Alle Informationen zu den Ergebnissen der Baugruppe werden in der Datenbank gespeichert. Dies sind zunĂ€chst der Verlauf und andere Ă€hnliche Daten, VCS-Ănderungen, Agenten, Erstellungswarteschlangen, Konten und Benutzerberechtigungen. Die Datenbank enthĂ€lt nicht nur Assemblyprotokolle und Artefakte.
Linux-InstallationVerwenden Sie das TeamCity-Archiv: TeamCity .tar.gz, um TeamCity manuell mit dem Tomcat-Servlet-Container zu installieren. Sie können
es hier herunterladen.
tar -xfz TeamCity.tar.gz
/ bin / runAll. sh [Start | Stopp]
Beim ersten Start mĂŒssen Sie den Datenbanktyp auswĂ€hlen, in dem die Baugruppendaten gespeichert werden.

Die Standardkonfiguration wird auf
localhost ausgefĂŒhrt : 8111 / mit einem registrierten Build-Agenten, der auf demselben PC ausgefĂŒhrt wird.
TeamCity StÀrken:
- einfache Einrichtung;
- bequeme Schnittstelle;
- eine groĂe Anzahl von eingebauten Funktionen;
- Support-Service;
- Es gibt eine RESTful-API.
- gute Dokumentation;
- gute Sicherheit.
Nachteile:
- eingeschrÀnkte Integration;
- es ist ein kostenpflichtiges Werkzeug;
- eine kleine Gemeinschaft (die jedoch wÀchst).
Gocd
Ein Open Source-Projekt, fĂŒr dessen Installation und AusfĂŒhrung Java Runtime Environment (JRE) Version 8 erforderlich ist.
Systemanforderungen:
- RAM - mindestens 1 GB, besser mehr;
- Prozessor - Dual-Core mit einer Kernfrequenz von 2 GHz;
- Festplatte - mindestens 1 GB freier Speicherplatz.
Agent:
- RAM - mindestens 128 MB, vorzugsweise mehr;
- Prozessor - mindestens 2 GHz.
Der Server stellt Agenten bereit und bietet dem Benutzer eine bequeme OberflÀche:

Stufen / Jobs / Aufgaben:
Linux-Installationecho âdeb download.gocd.org /â | sudo tee /etc/apt/sources.list.d/gocd.list
curl download.gocd.org/GOCD-GPG-KEY.asc | sudo apt-key hinzufĂŒgen -
add-apt-repository ppa: openjdk-r / ppa
apt-get update
apt-get install -y openjdk-8-jre
apt-get install go-server
apt-get installiere go-agent
/etc/init.d/go-server [Start | Stopp | Status | Neustart]
/etc/init.d/go-agent [Start | Stopp | Status | Neustart]StandardmĂ€Ăig lĂ€uft GoCd auf
localhost : 8153.
GoCd-StÀrken:
- Open Source
- einfache Installation und Einrichtung;
- gute Dokumentation;
- tolle BenutzeroberflÀche:

- Möglichkeit der schrittweisen Anzeige des GoCD-Bereitstellungspfads in einer Ansicht:

- Hervorragende Darstellung der Förderstruktur:

- GoCD optimiert den CD-Workflow in den beliebtesten Cloud-Umgebungen, einschlieĂlich Docker, AWS;
- Das Tool ermöglicht die Korrektur von Fehlern in der Pipeline, fĂŒr die jede Ănderung von einem Commit zur Bereitstellung im Echtzeitmodus nachverfolgt wird.
Nachteile:
- Es wird mindestens ein Agent benötigt.
- Es gibt keine Konsole, auf der alle erledigten Aufgaben angezeigt werden können.
- Um jeden Befehl auszufĂŒhren, mĂŒssen Sie eine Aufgabe fĂŒr die Pipelinekonfiguration erstellen.
- Um das Plugin zu installieren, mĂŒssen Sie die JAR-Datei nach <go-server-location> / plugins / external verschieben und den Server neu starten.
- relativ kleine Gemeinde.
Als Fazit
Dies sind nur drei Werkzeuge, tatsĂ€chlich gibt es noch viel mehr. Die Auswahl ist schwierig, daher mĂŒssen Sie auf zusĂ€tzliche Aspekte achten.
Der Open Source-Code des Tools ermöglicht es zu verstehen, was es ist, und es ist schneller, neue Funktionen hinzuzufĂŒgen. Aber wenn etwas nicht funktioniert, mĂŒssen Sie sich nur auf sich selbst und die Hilfe der Community verlassen. Bezahlte Tools bieten UnterstĂŒtzung, die manchmal kritisch sein kann.
Wenn Sicherheit am wichtigsten ist, sollten Sie mit einem lokalen Werkzeug 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 formuliert werden, deren SpezifitĂ€t es ermöglicht, die Auswahl der verfĂŒgbaren Tools einzuschrĂ€nken.
Skillbox empfiehlt: