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 keysurf: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
Kommentare
3 Antworten zu „Deployment mit TYPO3.Surf“
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?
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
Das wäre Klasse, danke dir!