GitFTP-Deploy

Avatar of Jan Östlund
Jan Östlund am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Jan ist der Erfinder von GitFTP-Deploy, jetzt in Version 2.0. Er hat mir von GitFTP-Deploy erzählt, und ich fand es ziemlich cool. Wie Sie in diesem Beitrag erfahren werden, handelt es sich um eine macOS-Software für Git-basiertes Deployment. Ich denke, es ist es wert, davon zu wissen, da es gut zwischen kostenlosen (und meist etwas komplexeren) selbstgebauten Lösungen und Lösungen mit monatlichen oder jährlichen Abonnementkosten liegt. GitFTP-Deply ist eine einmalige Zahlung. Dies ist ein etwas heikles Thema, da es werblicher Natur ist. Daher volle Offenlegung: Jan hat dafür nicht bezahlt, aber ich habe mich entschieden, Affiliate-Links zu verwenden.

Lassen Sie uns die Szene aufbauen. Sagen wir, Sie sind ein Web-Freelancer und fast fertig mit der neuen Website eines Kunden. Über die Jahre haben Sie gelernt, dass es am besten ist, die Dateien nicht mehr direkt über FTP zu bearbeiten. Es ist zu einfach, Änderungen vorzunehmen, die alles kaputt machen, ohne Aufzeichnungen darüber, was sich geändert hat und wer was getan hat. Heutzutage verwenden Sie Git, um die Version der Dateien zu verwalten.

Warum Versionskontrolle verwenden?

Es gibt viele Vorteile bei der Verwendung eines Versionskontrollsystems für Ihre Projekte. Selbst wenn Sie eine sehr organisierte Person sind, können Sie mit einem Benennungssystem wie `index-2017-01-12.html` oder `header_image_final_final_v2.svg` leicht durcheinandergeraten. Ist es wirklich final? Woher wissen Sie, was genau sich zwischen diesen Versionen und der letzten geändert hat?

Ein Versionskontrollsystem (VCS, wie Git) erzwingt, dass zu jedem Zeitpunkt nur eine Version Ihrer Dateien vorhanden ist. Alle vergangenen Versionen von Dateien sind ordentlich im VCS verpackt. Wenn Sie sie benötigen, können Sie jederzeit jede Version abrufen, und Sie haben einen Schnappschuss des vollständigen Projekts zur Hand.

Jedes Mal, wenn Sie eine neue Version Ihres Projekts speichern, fordert Ihr VCS Sie auf, eine kurze Beschreibung der Änderungen anzugeben. Zusätzlich (bei Code-/Textdateien) können Sie genau sehen, was sich im Inhalt der Datei geändert hat. Das VCS hilft Ihnen zu verstehen, wie sich Ihr Projekt zwischen den Versionen entwickelt hat.

Deployment / Hochladen

So nützlich ein VCS auch ist, es hilft nicht direkt beim Hochladen von Dateien auf eine Live-Website. (Wir werden dies als Deployment bezeichnen.)

Das Bereitstellen von Dateien kann sehr einfach sein. Verwenden Sie einen FTP-Client (z. B. Transmit), um Dateien per FTP oder SFTP direkt auf Ihren Server hochzuladen. Die erstmalige Veröffentlichung einer Website ist besonders einfach: Laden Sie einfach alle Dateien hoch.

Wenn Sie Änderungen an einer Website vornehmen, müssen Sie auch Dateien hochladen. Aber... welche? Erinnern Sie sich immer, welche Dateien Sie geändert haben? Wenn Ihr panischer Kunde anruft, um Ihnen mitzuteilen, dass die Website nicht funktioniert, wissen Sie dann, was sich bei den letzten Uploads geändert hat?

Wenn Sie Git verwenden, ist es einfach zu sehen. Aber trotzdem erledigt Git kein Deployment, und das manuelle Überprüfen, welche Dateien sich geändert haben, und das Verschieben dieser ist fehleranfällig und mühsam. Sie benötigen immer noch eine clevere Möglichkeit, Ihre geänderten Dateien hochzuladen und bereitzustellen.

Welche anderen Optionen haben Sie also für das Bereitstellen von Dateien? Eine Option ist auch die Installation von Git auf dem Server. Dann können Sie, genau wie Sie lokal von Ihrem Git-Repository pushen und pullen, von diesem Repository auf dem Server pullen und der Server lädt die neuesten Änderungen herunter. Dies ist jedoch nicht für jeden eine Option. Es erfordert Shell-Zugriff auf den Server, und das ist auf vielen Shared-Hosting-Lösungen einfach nicht möglich.

Eine weitere Möglichkeit ist, sich auf Drittanbieter-Cloud-Dienste wie DeployBot, Springloops oder Beanstalk zu verlassen. Keine dieser Optionen ist schlecht, aber es gibt potenzielle Nachteile

  • Es fallen monatliche oder jährliche Kosten für diese Dienste an, unabhängig davon, ob Sie sie gerade aktiv nutzen oder nicht.
  • Die Einrichtung externer Git-Repositorys kann einige Zeit in Anspruch nehmen und kompliziert sein.
  • Es besteht auch ein erhöhtes Risiko, sich auf einen Drittanbieter-Dienst zu verlassen. Der Deployment-Dienst kann gerade dann ausfallen, wenn Sie bereitstellen möchten.
  • Die Geschwindigkeit des Deployments hängt von diesem Dienst ab. Möglicherweise gibt es eine lange Warteschlange anderer Deployments vor Ihrem.

Ein Blick auf GitFTP-Deploy

Werfen wir einen Blick auf meine Alternative: GitFTP-Deploy. GitFTP-Deploy ist eine native macOS-App, die nur die geänderten Dateien (über SFTP, FTP oder FTPS) seit dem letzten Deployment hochlädt. Sie müssen sich nicht merken, welche Dateien Sie geändert, hinzugefügt oder gelöscht haben.

Da GitFTP-Deploy aus Ihrem lokalen Git-Repository liest, was sich geändert hat, gewöhnen Sie sich auch an die Verwendung von Git für Ihr Projekt: Sobald eine Datei committet ist, ist sie auch für das Deployment bereit.

Eine weitere Funktion, die Ihr Deployment erleichtern könnte, ist die Möglichkeit von GitFTP-Deploy, Pre- und Post-Deployment-Skripte auszuführen. Verwenden Sie einen JavaScript-Compiler (wie Babel) oder einen CSS-Präprozessor (wie Stylus)? Verketten und komprimieren Sie Assets? Das Ausführen dieser Aufgaben kann durch die App automatisiert werden.

Manchmal kann es eine echte Zeitersparnis sein, einfach die letzten Änderungen zu committen, und sie werden automatisch auf den Server gepusht, nur mit einem einzigen Git-Commit-Befehl.

Erste Schritte

In weniger als zwei Minuten können Sie mit dem Deployment Ihrer Dateien beginnen.

1) Neue Website erstellen

2) Auf Ihr lokales Repository zeigen und den Commit auswählen, ab dem Sie mit dem Deployment beginnen möchten

3) Serververbindung einrichten

4) Auf "Deploy" klicken

Vielleicht ist Ihr Workflow etwas komplizierter? Brauchen Sie mehr Leistung?

Sie können Skripte angeben, die sowohl lokal als auch auf Ihrem Server vor und nach dem Hochladen ausgeführt werden. Beispielsweise möchten Sie vor dem Hochladen Ihren bevorzugten JavaScript-Compiler oder ein Gulp-Skript ausführen, das Ihre JavaScript-Dateien für die Produktion verkettet und optimiert.

Oder verwenden Sie vielleicht einen Workflow mit einem anderen Task-Runner wie Grunt? Grunt kann auch konfiguriert werden, um Ihnen bei der Optimierung von Bildern, der Komprimierung von Skripten, der Kompilierung von Präprozessoren und unzähligen anderen Dingen zu helfen.

Ausführen von gulp --production

Die Möglichkeit, Tasks auszuführen, kann sehr leistungsfähig sein. Selbst WordPress verfügt beispielsweise über WP-CLI, was bedeutet, dass Sie Dinge wie das Synchronisieren von Datenbanken und das Aktualisieren von Einstellungen mit Ihrem Deployment skripten könnten.

Weitere Hinweise zur Nutzung

Wenn Sie keine Build-Dateien unter Versionskontrolle haben möchten, können Sie diesen Ordner zu "immer hochladen" hinzufügen.

Die Verwendung von GitFTP-Deploy bedeutet nicht, dass Sie GitHub oder einen anderen gehosteten Git-Repository-Dienst von Drittanbietern nicht mehr verwenden können. Stellen Sie einfach sicher, dass Sie die Änderungen von dort herunterladen, bevor Sie bereitstellen.

Team-Nutzung

Obwohl GitFTP-Deploy nicht unbedingt für Teams entwickelt wurde, können Sie es trotzdem verwenden. Der einfachste Weg ist, dass eine Person die Deployments übernimmt. Eine weitere, fortschrittlichere Option ist die Ausführung von GitFTP-Deploy auf einem Server.

Dieser Weg funktioniert möglicherweise nicht für große Teams, und Commits werden von vielen verschiedenen Personen durchgeführt. GitFTP-Deploy versucht jedoch zu prüfen, welcher Branch und welcher Commit zuletzt bereitgestellt wurde.