3 beliebte Tools zum Organisieren der kontinuierlichen Bereitstellung (Continuous Deployment)

Bild

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

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

Paket-Repository aktualisieren:

sudo apt update

Jenkins installieren:

sudo apt install jenkins

Danach 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-Installation

Verwenden 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-Installation

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

Source: https://habr.com/ru/post/de455130/


All Articles