Das Addon bietet Tools für die Datenbank-Migration während des Deployments von REDAXO-Projekten. Zusätzlich bietet es eine auf REDAXO abgestimmte Konfiguration für deployer.
Das Addon bietet zwei Konsolen-Befehle für die Migration:
Beim ersten Aufruf dieses Kommandos werden in redaxo/data/addons/ydeploy
zwei Dateien angelegt:
schema.yml
mit den Tabellendefinitionen der Datenbankfixtures.yml
mit allen Datensätzen der Tabellen, deren Daten mit synchronisiert werden sollen (Metainfo-Definitionen, MediaManager-Typen, YForm-Manager-Defintionen etc.)
Beim erneuten Aufruf wird dann die aktuelle Datenbank-Struktur mit der aus der schema.yml
verglichen, und die relevanten Daten mit der fixtures.yml
. Sollte es Abweichungen geben, werden die beiden Dateien aktualisiert und eine Migrationsdatei in redaxo/data/addons/ydeploy/migrations/
erstellt, die alle Änderungen enthält.
Details des Kommandos erhält man über redaxo/bin/console help ydeploy:diff
.
Templates, Module und Actions werden nicht über die fixtures.yml
synchronisiert, sondern dafür sollte das Developer-Addon genutzt werden.
Dieses Kommando führt alle noch ausstehenden Migrationsdateien aus.
Bei Nutzung von deployer (siehe unten) wird dieses Kommando automatisch während des Deployments ausgeführt. Es ist aber auch geeignet, um Datenbank-Änderungen der anderen Entwickler in die lokale Entwicklungsumgebung zu übernehmen.
Details des Kommandos erhält man über redaxo/bin/console help ydeploy:migrate
.
Zunächst sollte man sich mit den Grundlagen von deployer vertraut machen: https://deployer.org
Das Addon liefert deployer selbst nicht mit. Es kann über verschiedene Wege instaliert werden:
- Lokal im Projekt (ggf. in separatem
.tools
-Ordner:composer require deployer/deployer
- Global über composer:
composer global require deployer/deployer
- Als Phar-Archive: https://deployer.org/download
Im Projekt-Root sollte die Konfigurationsdatei deploy.php
angelegt werden, die die auf REDAXO abgestimmte
Basis-Konfiguration aus diesem Addon einbindet:
<?php
namespace Deployer;
if ('cli' !== PHP_SAPI) {
throw new \Exception('The deployer configuration must be used in cli.');
}
// Der Pfad ist ggf. anzupassen, falls der Projekt-Root nicht dem REDAXO-Root entspricht
// Falls die Yak-Struktur (https://github.com/yakamara/yak) verwendet wird, sollte stattdessen die `deploy_yak.php` eingebunden werden
// require __DIR__ . '/redaxo/src/addons/ydeploy/deploy_yak.php';
require __DIR__ . '/redaxo/src/addons/ydeploy/deploy.php';
set('repository', '[email protected]:user/repo.git');
host('servername')
->setHostname('example.com')
->setDeployPath('/var/www/com.example')
;
In dieser Datei kann die Konfiguration individuell auf das Projekt abgestimmt werden, sowie durch eigene weitere Tasks ergänzt werden. Siehe dazu:
- https://deployer.org/docs/7.x/basics
- https://deployer.org/docs/7.x/hosts
- https://deployer.org/docs/7.x/tasks
Die folgende .gitignore
hat sich als Basis bewährt bei Nutzung von deployer:
/.build
/media/*
!/media/.redaxo
/redaxo/cache/*
!/redaxo/cache/.*
/redaxo/data/addons/*/*
!/redaxo/data/addons/developer/*
!/redaxo/data/addons/mblock/*
!/redaxo/data/addons/mform/*
!/redaxo/data/addons/ydeploy/*
/redaxo/data/core/*
/redaxo/data/log/*
Sollte REDAXO nicht direkt im Projekt-Root liegen, müssen die Pfade entsprechend angepasst werden.
Führe dep deploy
aus, um das Deployment auf den Zielserver zu starten. Dieser Befehl besteht aus zwei Teilen, die sich auch einzeln ausführen lassen:
- Lokal vorbereiten:
dep build local
- Vorbereitetes Paket auf den Server spielen:
dep release [host]
So lässt sich bspw. über dep deploy staging
auf den staging
-Server deployen, testen und anschließend mit dem bereits vorliegenden Build auf den Produktivserver aufspielen: dep release production
.