Schnelle Bereitstellung oder Bereitstellung des Frontends in 15 Minuten

Wir hatten lange Zeit die Frage: Wie einfach und schnell ist es, ein Front-End-Projekt bereitzustellen?

Wir haben über ein Tool wie Jenkins nachgedacht. Viele, die es konfiguriert haben, wissen, dass die Konfiguration viel Zeit und vor allem viele Systemressourcen benötigt. Wenn Sie es auf dem Server aktivieren, müssen Sie eineinhalb Gigabyte Speicher zuweisen. Es ist so ein Vergnügen, wenn Sie zum Beispiel 500 Megabyte für alles haben.

Eine Alternative ist Mina. Dies ist eine großartige Lösung, die wir in Ruby-Projekten verwenden. Aber was ist, wenn Sie nur ein Frontend haben? Ruby setzen und ein Bündel machen? Nein, es ist zu kompliziert. Mina hat natürlich eine großartige Funktionalität, aber wir möchten dies auf NodeJS ohne unnötige Gesten tun.

Am Ende haben wir Bash-Skripte geschrieben, aber es hat uns gestört. Und wir hatten die Idee, einen eigenen kleinen Service für die Bereitstellung von Front-End-Anwendungen zu schreiben.

  • npm-Paket
  • habe eine kleine und einfache Konfiguration
  • Die Konfiguration dauert 10 Minuten und die Bereitstellung 5 Minuten
  • ein Release-System haben (wenn schließlich etwas schief geht und jemand sagt: "Es ist
pleite, dann können Sie sicher und schnell zur vorherigen Version zurückkehren)

Und wir haben Runy entwickelt - ein praktisches und praktisches Tool für die Bereitstellung des Frontends.

Sie müssen lediglich drei Befehle konfigurieren und die erste Bereitstellung nach der Installation des Pakets durchführen:
init - Erstelle eine Konfiguration und gib deine Daten ein
Setup - Erstellen Sie eine Projektstruktur
Bereitstellen - Stellen Sie Ihr Projekt bereit

Und das ist alles!

Dieses Modul hat unser Leben vereinfacht! Jetzt erfolgt die Bereitstellung in einem Team. Schnell und einfach. Wenn neue Entwickler zu uns kommen, können Sie ihnen Zugriff auf den Entwickler- / Bühnenserver gewähren, damit die Jungs sich selbst bereitstellen können. Junior-Entwickler werden es ebenfalls nützlich finden, sie benötigen keine Einstiegsschwelle für die Verwendung und können in Zukunft das Modul herausfinden und neues Wissen erwerben.

Ein wenig über den technischen Teil (ein ausführlicheres Handbuch finden Sie auf Github ). Runy verfügt derzeit über die folgenden Befehle: Init, Setup, Bereitstellen, Entsperren, Rollback.

Init


Erstellt eine Konfigurationsdatei am Speicherort des Befehlsaufrufs. Sie sollten Ihre Daten eingeben. Wie Sie sehen können, verwenden wir die SSH-Agent-Verbindung, sodass keine Kennwörter in der Konfiguration enthalten sind.

// runy.js module.exports = { host: '0.0.0.0', //   username: 'username', //       port: 22, //   remotePath: '/your/project/path', //      git: 'link-to-your-git-repository', //  ( ssh)    agent: process.env.SSH_AUTH_SOCK, //   commands: [ //      'npm install', 'npm run build', ], }; 

Setup


Unter dem angegebenen Pfad in der Konfiguration werden der Release-Ordner (es werden Releases unter den Nummern 1, 2, 3 usw. gespeichert) und die Datei .current.release (die aktuelle Release-Nummer wird darin gespeichert) erstellt.

Bereitstellen


Dieses Team hat einen gewissen Schutz, gleichzeitig kann nur eine Person eine Bereitstellung durchführen.

Das Team macht Folgendes. Erstellt einen temporären Ordner, installiert ein Projekt, führt eine Liste Ihrer Befehle aus der Konfigurationsdatei (Befehle) aus, um die Abhängigkeiten aufzurufen und die Anwendung zu erstellen, erstellt einen neuen Release-Ordner, überträgt das gerade erstellte Projekt dorthin, überprüft die Anzahl der Releases und löscht die alten (3 Releases werden jetzt gespeichert), erstellt Ein symbolischer Link zur aktuellen Version (die aktuelle Version ist immer auf diesem Pfad verfügbar, Ihr Remote-Pfad / aktuelle), aktualisiert die Datei mit der Release-Ziffer und bereinigt die Ordner.

Entsperren


Löscht die Schutzdatei, die beim Ausführen des Bereitstellungsbefehls erstellt wird. Im Allgemeinen wird die Datei automatisch und auch bei der Verarbeitung von Fehlern gelöscht. In allen Fällen ist dieser Befehl jedoch vorhanden.

Rollback


Gibt einen symbolischen Link zur vorherigen Version zurück und löscht die aktuelle.

PS Wir haben noch Ideen für die Entwicklung dieses Tools. Sie können auch an der Entwicklung des Projekts teilnehmen, indem Sie hier Aufgaben erstellen / ausführen.

Lassen Sie die Bereitstellung jedes Entwicklers bequemer und schneller werden.

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


All Articles