GIT – Projekte versionieren und mit FTP verbinden

Heute ist es wieder Zeit für einen Gastbeitrag. Der gute Vampiric Desire hat sich die Mühe gemacht und gewährt uns einen kleinen Einblick darin, wie man am besten als Team an einem Projekt arbeitet und dazu Versionierungssysteme wie z.B. GIT oder Bitbucket nutzt.

Änderungen an Projekten versionieren, dokumentieren und im Team arbeiten

Die meisten von euch haben ein Projekt für die eigene User App auf dem Computer. Im besten Fall sichert ihr eure Daten zusätzlich in der Cloud oder auf einer externen Festplatte und könnt so an eurem Endgerät super daran arbeiten. Wollt ihr aber mehrere Geräte nutzen oder mit einer anderen Person im Team an einem Projekt arbeiten, so wird das Zusammenarbeiten am selben Code plötzlich schwierig.

Stellt euch vor, wie blöd es wäre, wenn ihr eine Stelle vom Code verändert habt und jemand anders auch am Code arbeitet und ihr eure Änderungen zusammenführen müsst…

Ihr müsst also darauf achten, dass ihr immer mit dem aktuellsten Code arbeitet, da sonst bereits vorhandene Änderungen überschrieben werden oder Abhängigkeiten nicht aufgelöst werden könnten. Ihr müsst die Zugangsdaten zum Hochladen auf jedem Gerät zur Verfügung haben und wenn ihr im Team arbeitet sogar die Zugangsdaten an die anderen Personen weitergeben. Dort haben die Personen sogar den kompletten Zugriff auf alle Projekte auf dem FTP oder können Änderungen ohne Kontrolle und Dokumentierung hochladen.

All das birgt Gefahren die im Zweifel zum kompletten Ausfall der App führen könnten, wenn alter Code zum Beispiel genutzt wurde und Änderungen rückgängig gemacht worden sind. Auch ist es ohne entsprechende Versionierung schwierig einzelne Änderungen am Code rückgängig zu machen, die einen Fehler enthalten. Um all diese Probleme zu lösen, setzen viele auf ein Versionierungssystem wie z.B. GIT.

Was ist GIT eigentlich?

GIT ist ein Versionierungssystem ,dass mehrere Personen erlaubt an einem Code arbeiten und dabei die Integrität sicherstellt. So können Änderungen lokal vorgenommen werden und am Ende in das GIT-Projekt (Repository) hochgeladen werden. Auch wird durch entsprechende Versionierung möglich, Änderungen wieder rückgängig zu machen und natürlich jede Änderung zu dokumentieren. Wer hat sie gemacht, wann wurde sie gemacht und was wurde gemacht. Änderungen anderer Nutzer können dabei einfach per Klick migriert oder überschrieben werden.

Daher macht es nicht nur Sinn GIT in Teamprojekten zu nutzen, sondern auch wenn man alleine arbeitet. GIT-Projekte kann man z.B. kostenlos auf Github und Bitbucket hosten.

GIT einzusetzen ergibt auch für User Apps bei Knuddels Sinn, doch wie bekommt ihr das GIT-Projekt auf euren Knuddels FTP ohne es in einem zusätzlichen manuellen Schritt hochzuladen? Und wie erlaubt ihr anderen im Team den Upload ohne die Zugangsdaten weiterzugeben?

Docker – Eine virtuelle Maschine auf deinem GIT Projekt

Docker Container sind virtuelle Maschinen die man z.B. zu einem bestimmten Zeitpunkt starten kann. So kann man z.B. beim hochladen in das GIT Projekt eine Linux Instanz starten, die das entsprechende GIT Projekt mit ins Dateisystem lädt, um entsprechende Aufgaben zu erfüllen. Mit der Erweiterung GIT-FTP z.B. kann man beim PUSH (Hochladen der Änderungen im Repository)  in das GIT Projekt automatisch sämtliche Dateien auf einem FTP hochladen. Und genau das Nutzen wir aus, um ein automatisches Hochladen auf dem Knuddels FTP zu erreichen. Bitbucket bietet diese Option explizit an und die folgende Anleitung erklärt die Einrichtung auf Bitbucket mit Hilfe eines von mir erstellten Docker Images.

Einrichtung von Docker

In unserem Bitbucket Repository gibt es auf der linken Seite den Reiter Pipelines, den wählen wir aus und können dann unser Pipeline Script erstellen, der das Docker Image ausführt.

Im Script selber fügen wir folgenden Code ein:

image: vampiricdesire/ftpgit

pipelines:
  default:
    - step:
        script:
         - git config git-ftp.url ftp://appupload.knuddels.de/ftp/PROJEKTNAME/
         - git config git-ftp.user $FTP_USERNAME
         - git config git-ftp.password $FTP_PASSWORD
         - git ftp init
         #- git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD ftp://appupload.knuddels.de/ftp/PROJEKTNAME/

In der ersten Zeile steht, welches Docker Image er laden soll. Hier habe ich bereits für meine Projekte ein Image erstellt, welches sämtliche Tools wie GIT, GIT-FTP etc. bereits installiert hat.Wenn ihr euer eigenes Docker Image nutzen wollt, könnt ihr dieses also in dieser Zeile einsetzen. Im Internet gibt es diverse Tutorials um Docker Images zu erstellen.

Das Script führt bei einem Push (Hochladen der Änderungen im Repository) automatisch einen FTP Upload aus. Zu beachten ist hier, dass FTP Benutzer und Passwort nicht fest im Script hinterlegt sind, sondern per Variable eingebunden werden. Beim ersten ausführen muss git ftp init genutzt werden, danach kann mit git ftp push gearbeitet werden. Sprich nach der ersten erfolgreichen Ausführung müsst ihr das git ftp init auskommentieren und die Zeile mit git ftp push entsprechend aus dem Kommentar herausholen.

Um nun die Variablen im Script zu ersetzen, müssen wir die Umgebungsvariablen vom Projekt in Bitbucket anpassen. Dort gehen wir in die Einstellungen und wählen bei dem Unterpunkt Pipelines den Punkt Environment Variables aus.

Dort tragt ihr FTP_PASSWORD mit dem Haken bei Secured ein und den FTP_USERNAME (der darf ohne Secured sein). Durch das Setzen des Hakens bei Secured wird der Wert durch Sternchen bzw. Platzhalter in der Übersicht angezeigt. Sprich ihr und andere können das Passwort nachträglich nicht einsehen sondern nur noch verändern. Somit bleibt das Passwort dem restlichen Team vorenthalten und ihr gibt keine sensiblen Daten weiter.

Und das wars eigentlich auch schon. Nun wird euer GIT Projekt automatisch mit dem Knuddels FTP synchronisiert.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s