Ich habe eine einfache “kontinuierliche Migration”-Pipeline. Es ist eine Sammlung von Shell-Skripten, die Aufgaben wie diese ausführen:
- phpBB-Datenbank, Anhänge usw. vom Remote-Server herunterladen
- Discourse-Instanzen erstellen/verwalten
- Spezifische
site_settings werden angewendet, wenn eine Discourse-Instanz aus einer Vorlageninstanz erstellt wird
- Diese sichern/wiederherstellen
- Migration mit einem bestimmten Satz von Import-Skripten aus einem Git-Repository ausführen
- Aufgaben nach der Migration durchführen
Im Grunde ermöglicht mir dies, an einer Discourse-Instanz (dctemplate) vor der Migration zu arbeiten, mit der ich herumspiele. Ich passe die Discourse-Einstellungen nach meinen Wünschen an.
Nachts lade ich die Live-Daten des bestehenden phpBB herunter und führe eine neue Migration auf einer neuen Discourse-Instanz (dcstaging) durch, die gerade aus der neuesten Vorlage erstellt wurde.
Dies dauert natürlich Stunden. Daher betreibe ich auch ein lokales phpBB mit einer sehr kleinen Datenbank, mit der ich Tests durchführe und die Migrationsskripte verbessere. Ich kann relativ schnelle Migrationen durchführen, um auf einer anderen Discourse-Instanz (dcdev) zu testen.
Der Test-Workflow tagsüber sieht also so aus:
Ich habe einige Arbeiten an der Vorlage vorgenommen und bin zufrieden damit, wo ich bin:
./dc_template_create.sh dctemplate
Ups, ich habe einen Fehler in meiner Vorlage gemacht. Stelle sie auf den vorherigen Zustand zurück:
./dc_template_restore.sh dctemplate
Führe eine schnelle Migration durch, um einige Dinge zu testen:
# Erstelle eine neue Instanz dcdev aus dctemplate (und wende spezifische site_settings auf dcdev an)
./dc_template_restore.sh dcdev dctemplate
./dc_migrate.sh dcdev # wird mit dem spezifischen Migrationsskript-Repository für diese Instanz ausgeführt
Führe eine lange Migration über Nacht vom echten, Live-phpBB durch:
./dc_template_create.sh dctemplate
./dc_template_restore.sh dcstaging dctemplate
./phpbb_pull.sh
./dc_migrate.sh dcstaging
sleep 300
./dc_rake.sh dcstaging # zusätzliche Aufgaben nach der Migration, die nicht vom Importer behandelt werden (Moderatoren erstellen, detaillierte Verschlagwortung, einige Themen verschieben usw.)
Wenn jemand interessiert ist, könnte ich es ein wenig aufräumen und teilen.