3 beliebte Tools zur Organisation von Continuous Deployment

3 beliebte Tools zur Organisation von Continuous Deployment

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 „Mobiler 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 Tools zur Organisation von Continuous Deployment

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:
3 beliebte Tools zur Organisation von Continuous Deployment

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 — 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

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

3 beliebte Tools zur Organisation von Continuous Deployment

3 beliebte Tools zur Organisation von Continuous Deployment

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.

3 beliebte Tools zur Organisation von Continuous Deployment

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

3 beliebte Tools zur Organisation von Continuous Deployment

Die Standardkonfiguration lÀuft auf localhost: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:

3 beliebte Tools zur Organisation von Continuous Deployment

Stages/Jobs/Tasks:

3 beliebte Tools zur Organisation von 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 lĂ€uft GoCD auf localhost:8153.

StÀrken von GoCD:

  • offener Quellcode;
  • einfache Installation und Einrichtung;
  • gute Dokumentation;

  • ausgezeichnete BenutzeroberflĂ€che:

3 beliebte Tools zur Organisation von Continuous Deployment

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

3 beliebte Tools zur Organisation von Continuous Deployment

  • exzellente Darstellung der Pipeline-Struktur:

3 beliebte Tools zur Organisation von Continuous Deployment

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

Quelle: habr.com

60GB SSD 8Gb DDR4