Deployment mit TYPO3.Surf

Ich habe mich in den letzten Wochen mit den Einstellungen und der Konfiguration von TYPO3.Surf beschäftigt. Geplant war schon viel eher ein weitere Artikel in dieser Reihe, jedoch ist durch einen Umzug und weitere Projekte einfach nicht die Zeit dazu vorhanden gewesen. Aber nun geht los. Step by Step Continous Deployment mit TYPO3.Surf.

Als erstes benötigen wir eine frische Installation von TYPO3.Flow. Eine Installationsanleitung habe ich hier niedergeschrieben: TYPO3.Flow installieren

In diese Installation installieren wir als nächstes TYPO3.Surf. Dazu wechseln wir in das Verzeichnins in welchem TYPO3.Flow installiert wurde und geben folgenden Befehl ein

/pfad/zu/composer.phar require typo3/surf:dev-master

Composer installiert nun TYPO3.Surf. Nachdem die Installation abgeschlossen ist stehen die folgenden Befehle auf der Kommandozeile zur Verfügung:

PACKAGE „TYPO3.SURF“:
——————————————————————————-
encrypt:setup Setup encryption with a local key
for the deployment system
encrypt:seal Encrypt configuration with the local
key
encrypt:open Open encrypted configuration with
the local key

surf:list List deployments
surf:deploy Run a deployment
surf:describe Describe a deployment
surf:simulate Simulate a deployment

wenn wir

./flow surf:list

eingeben so werden bereits zwei mögliche Deployments angezeigt

  • flow3base-distribution
  • phoenix-distribution

Diese werden automatisch mit geliefert und beinhalten Basis Flow bzw. TYPO3 CMS Installationen. In der aktuellen Version sind diese beiden Deployments jedoch nicht funktionsfähig.

Um ein neues Deployment zu erstellen legen wir eine Datei mein-deployment.php an unter Build/Surf/. Rufen wir jetzt erneut

./flow surf:list

auf, so sehen wir neben den bereits bekannten Deployment Zielen ebenfalls mein-deployment. Unter https://gist.github.com/beelbrecht/fa8baf9f22faca64711e ist ein Deployment Skript zu finden, welches  sehr gut zeigt was mit TYPO3.Surf möglich ist. Wir kopieren den Inhalt in mein-deployment.php und füllen die Platzhalter aus. Das Deployment mit TYPO3.Surf verbindet sich bei obigem Skript mit dem Server und führt dort das Deployment durch. Es wird empfohlen die Authentifizierung auf dem Server mittels SSH Key durchzuführen. Ansonsten würden Passwörter in den Deployment Skripten stehen, welche meiner Meinung nach nichts in einem Code Repository zu suchen haben. Das Deployment wird mit dieser Konfiguration direkt auf dem Server ausgeführt. Es werden also entsprechende Kommandos auf dem Server ausgeführt, so dass das mit

$application->setOption('repositoryUrl', '[urlToYourNeosDistributionGitRepository]');

angegebene Paket mittels Composer installiert wird. Das entsprechende Repository muss eine composer.json enthalten, welche die Abhängigkeiten enthält. Um das Deployment zu starten müssen wir auf der Kommandozeile

./flow surf:deploy mein-deployment

eingeben.

Auf dem Server wird die folgende Ordner Struktur angelegt:

cache
releases
    [timestamp]
    current -> [timestamp]
    previous
shared
    Configuration
    Data

Die genauere Bedeutung der Ordner unterhalb von shared werde ich in einem späteren Post betrachten. Die Ordner

releases/current
releases/previous

sind Links auf die entsprechenden Versionen. Diese werden im Ordner releases mit einem Timestamp abgelegt. Das Document Root des Webservers bzw. des Virtualhosts muss also entsprechend auf den Ordner

releases/current

zeigen. Die deployte Version aktualisiert sich dadurch vollautomatisch.

Einen Artikel der etwas genauer auf die Systemumgebung eingeht habe ich hier veröffentlicht: Continuous Deployment mit TYPO3 Surf Step by Step

 


Beitrag veröffentlicht

in

,

von

Kommentare

3 Antworten zu „Deployment mit TYPO3.Surf“

  1. Avatar von Stan
    Stan

    Moin, danke erstmal für die tolle Anleitung. Ich bin noch ganz neu in dem Thema und versuche gerade ein Deployment für Typo3-Projekte auf die Beine zu stellen.

    Bislang sind mir zwei Sachen unklar.
    1) Wo muss meine Flow/Surf Installation liegen bzw. von wo aus ausgeführt werden? Direkt auf dem DEV/LIVE-Server oder Lokal?
    2) Wenn ich momentan versuche zu Deployen [./flow surf:deploy Typo3Deployment] bekomme ich folgende Fehlermeldung: „conq: repository access denied. deployment key is not associated with the requested repository.“ Ne Idee was ich übersehen habe?

  2. Avatar von Stephan

    Hallo,
    vielen Dank für dein Feedback. Ich nehme das mal zum Anlass und werde den Artikel morgen ergänzen bzw. einen detaillierteren veröffentlichen. Zu der Fehlermeldung: Ich vermute die Fehlermeldung kommt von deinem Git Repository. Ich denke da musst du noch den Key des Servers auf den du deployen willst einfügen.
    Viele Grüße
    Stephan

  3. Avatar von Stan
    Stan

    Das wäre Klasse, danke dir!