3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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 „Mobile Entwickler PRO“.

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“.

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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:
3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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 - 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/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 localhost: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:

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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.

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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 kann hier erfolgen..

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.

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

Die Standardkonfiguration funktioniert auf localhost: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:

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

Stages/Jobs/Aufgaben:

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

Installation fĂŒr Linux

echo “deb download.gocd.org /” | sudo tee /etc/apt/sources.list.d/gocd.list

curl download.gocd.org/GOCD-GPG-KEY.asc | 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 localhost:8153.

StÀrken von GoCd:

  • Open Source;
  • einfache Installation und Einrichtung;
  • gute Dokumentation;

  • hervorragende BenutzeroberflĂ€che:

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

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

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

  • ausgezeichnete Darstellung der Pipeline-Struktur:

3 beliebte Werkzeuge zur Organisation kontinuierlicher Bereitstellung (Continuous Deployment)

  • 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:

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster