3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Continuous Deployment ist ein spezieller Ansatz in der Softwareentwicklung, der dazu dient, verschiedene Funktionen in Software schnell, sicher und effizient umzusetzen.

Die Hauptidee besteht darin, einen zuverlässigen automatisierten Prozess zu schaffen, der es dem Entwickler ermöglicht, das fertige Produkt schnell an den Benutzer zu liefern. Gleichzeitig kommt es zu ständigen Änderungen in der Produktion – man spricht von einer Continuous Delivery Pipeline (CD Pipeline).

Skillbox empfiehlt: Praktischer Kurs „Mobile Developer PRO“.

Erinnerung: für alle Leser von „Habr“ – ein Rabatt von 10 Rubel bei der Anmeldung zu einem beliebigen Skillbox-Kurs mit dem Aktionscode „Habr“.

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Um den Fluss zu steuern, können Sie eine breite Palette von Tools verwenden, darunter sowohl kostenpflichtige als auch völlig kostenlose. Dieser Artikel beschreibt drei der bei Entwicklern beliebtesten Lösungen, die für jeden Programmierer nützlich sein können.

Jenkins

Völlig eigenständiger Open-Source-Automatisierungsserver. Es lohnt sich, mit uns zusammenzuarbeiten, um alle Arten von Aufgaben im Zusammenhang mit dem Erstellen, Testen, Versenden oder Bereitstellen von Software zu automatisieren.

Mindestanforderungen an den PC:

  • 256 MB RAM, 1 GB Dateispeicher.

Optimal:

  • 1 GB RAM, 50 GB Festplatte.

Zum Arbeiten benötigen Sie außerdem zusätzliche Software – Java Runtime Environment (JRE) Version 8.

Die Architektur (verteiltes Rechnen) sieht folgendermaßen aus:
3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Jenkins Server ist eine Installation, die für das GUI-Hosting sowie die Organisation und Ausführung des gesamten Builds verantwortlich ist.

Jenkins Node/Slave/Build Server – Geräte, die so konfiguriert werden können, dass sie Build-Arbeiten im Namen des Masters (Hauptknotens) ausführen.

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 binär/' | sudo tee -a /etc/apt/sources.list.d/je

Paket-Repository aktualisieren:

sudo apt aktualisieren

Installieren Sie Jenkins:

sudo apt installiere Jenkins

Danach ist Jenkins im System über den Standardport 8080 verfügbar.

Um die Funktionalität zu überprüfen, müssen Sie die Adresse im Browser öffnen localhost:8080. Das System fordert Sie dann auf, das anfängliche Passwort für den Root-Benutzer einzugeben. Dieses Passwort befindet sich in der Datei /var/lib/jenkins/secrets/initialAdminPassword.

Jetzt ist alles bereit und Sie können mit der Erstellung von CI/CD-Flows beginnen. Die grafische Oberfläche der Workbench sieht folgendermaßen aus:

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Jenkins Stärken:

  • Skalierbarkeit durch die Master/Slave-Architektur;
  • Verfügbarkeit der REST XML/JSON API;
  • die Möglichkeit, dank Plugins eine große Anzahl von Erweiterungen anzuschließen;
  • aktive und sich ständig weiterentwickelnde Gemeinschaft.

Nachteile:

  • es gibt keinen analytischen Block;
  • nicht sehr benutzerfreundliche Oberfläche.

TeamCity

Kommerzielle Entwicklung von JetBrains. Der Server ist gut, einfach einzurichten und verfügt über eine hervorragende Schnittstelle. Die Standardkonfiguration verfügt über eine große Anzahl an Funktionen und die Anzahl der verfügbaren Plugins nimmt ständig zu.

Erfordert Java Runtime Environment (JRE) Version 8.

Die Anforderungen an die Serverhardware sind unkritisch:

  • RAM - 3,2 GB;
  • Prozessor - Dual-Core, 3,2 GHz;
  • Kommunikationskanal mit einer Kapazität von 1 Gbit/s.

Mit dem Server können Sie eine hohe Leistung erzielen:

  • 60 Projekte mit 300 Build-Konfigurationen;
  • 2 MB Zuweisung für Build-Protokoll;
  • 50 Build-Agenten;
  • die Möglichkeit, mit 50 Benutzern in der Webversion und 30 Benutzern in der IDE zu arbeiten;
  • 100 Verbindungen externer VCS, normalerweise Perforce und Subversion. Die durchschnittliche Wechselzeit beträgt 120 Sekunden;
  • mehr als 150 Änderungen pro Tag;
  • Arbeiten mit der Datenbank auf einem Server;
  • JVM-Serverprozesseinstellungen: -Xmx1100m -XX:MaxPermSize=120m.

Agentenanforderungen basieren auf der Ausführung von Assemblys. Die Hauptaufgabe des Servers besteht darin, alle verbundenen Agenten zu überwachen und Assemblys aus der Warteschlange entsprechend den Kompatibilitätsanforderungen an diese Agenten zu verteilen und die Ergebnisse zu melden. Agenten gibt es auf verschiedenen Plattformen und Betriebssystemen sowie in einer vorkonfigurierten Umgebung.

Alle Informationen zu den Build-Ergebnissen werden in der Datenbank gespeichert. Dabei handelt es sich in erster Linie um den Verlauf und andere ähnliche Daten, VCS-Änderungen, Agenten, Build-Warteschlangen, Benutzerkonten und Berechtigungen. Die Datenbank enthält nicht nur Build-Protokolle und Artefakte.

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Installation für Linux

Um TeamCity manuell mit einem Tomcat-Servlet-Container zu installieren, sollten Sie das TeamCity-Archiv verwenden: TeamCity .tar.gz. Herunterladen Sie können es hier erhalten.

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.

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Die Standardkonfiguration läuft weiter localhost:8111/ mit einem registrierten Build-Agenten, der auf demselben PC ausgeführt wird.

Die Stärken von TeamCity:

  • Einfache Einstellung;
  • benutzerfreundliche Oberfläche;
  • eine große Anzahl integrierter Funktionen;
  • Unterstützung;
  • es gibt eine 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 für Installation und Betrieb Java Runtime Environment (JRE) Version 8 erfordert.

Systemvoraussetzungen:

  • RAM – mindestens 1 GB, mehr ist besser;
  • Prozessor - Dual-Core, mit einer Kernfrequenz von 2 GHz;
  • Festplatte - mindestens 1 GB freier Speicherplatz.

Agent:

  • RAM – mindestens 128 MB, mehr ist besser;
  • Prozessor - mindestens 2 GHz.

Der Server gewährleistet den Betrieb von Agenten und bietet dem Benutzer eine komfortable Schnittstelle:

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

Stufen/Jobs/Aufgaben:

3 beliebte Tools zur Organisation der kontinuierlichen 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 läuft GoCd weiter localhost: 8153.

Die Stärken von GoCd:

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

  • Tolle Benutzeroberfläche:

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

  • Möglichkeit, den GoCD-Bereitstellungspfad Schritt für Schritt in einer Ansicht anzuzeigen:

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

  • Hervorragende Darstellung der Rohrleitungsstruktur:

3 beliebte Tools zur Organisation der kontinuierlichen Bereitstellung (Continuous Deployment)

  • GoCD optimiert den CD-Workflow in den beliebtesten Cloud-Umgebungen, einschließlich Docker, AWS;
  • Das Tool ermöglicht die Behebung von Problemen in der Pipeline, wobei jede Änderung vom Commit bis zur Bereitstellung in Echtzeit verfolgt wird.

Nachteile:

  • es wird mindestens ein Agent benötigt;
  • es gibt keine Konsole, um alle erledigten Aufgaben anzuzeigen;
  • Um jeden Befehl auszuführen, müssen Sie eine Aufgabe für die Pipeline-Konfiguration erstellen.
  • Um das Plugin zu installieren, müssen Sie die .jar-Datei verschieben /plugins/external und starten Sie den Server neu;
  • relativ kleine Gemeinde.

Als Schlussfolgerung

Dies sind nur drei Tools, tatsächlich gibt es noch viel mehr. Die Auswahl ist schwierig, daher müssen Sie unbedingt auf weitere Aspekte achten.

Der Open-Source-Code des Tools ermöglicht es, zu verstehen, worum es sich handelt, und neue Funktionen schneller hinzuzufügen. Aber wenn etwas nicht funktioniert, müssen Sie sich nur auf sich selbst und die Hilfe der Community verlassen. Kostenpflichtige Tools bieten Unterstützung, die manchmal von entscheidender Bedeutung sein kann.

Wenn Sicherheit für Sie oberste Priorität hat, lohnt es sich, mit einem lokalen Tool zu arbeiten. Wenn nicht, ist die Wahl einer SaaS-Lösung eine gute Option.

Und schließlich müssen Sie zur Gewährleistung eines wirklich effektiven Continuous-Deployment-Prozesses Kriterien formulieren, deren Spezifität es Ihnen ermöglicht, die Palette der verfügbaren Tools einzugrenzen.

Skillbox empfiehlt:

Source: habr.com

Kommentar hinzufügen