J’ai un pipeline de « migration continue » pour les pauvres. C’est un ensemble de scripts shell pour effectuer des tâches telles que :
- extraire la base de données phpbb, les pièces jointes, etc. du serveur distant
- créer/gérer des instances discourse
- des
site_settings spécifiques sont appliqués lorsqu’une instance discourse est créée à partir d’une instance modèle
- les sauvegarder/restaurer
- exécuter la migration avec un ensemble spécifique de scripts d’importation à partir d’un dépôt git
- effectuer des tâches post-migration
Essentiellement, cela me permet de travailler sur une instance discourse dctemplate pré-migration avec laquelle je joue. Je continue à ajuster les paramètres de discourse à ma convenance.
Chaque nuit, j’extrais les données du phpbb live existant et j’effectue une nouvelle migration sur une nouvelle instance discourse (dcstaging) nouvellement créée à partir du modèle le plus récent.
Cela prend des heures, bien sûr, j’ai donc aussi un phpbb local en cours d’exécution avec une base de données très petite que j’utilise pour effectuer des tests et améliorer les scripts de migration. Je peux effectuer des migrations relativement rapides pour tester sur une autre instance discourse (dcdev).
Le flux de travail de test pendant la journée ressemble donc à ceci :
J’ai fait du travail sur le modèle, j’aime où j’en suis :
./dc_template_create.sh dctemplate
Oups, j’ai fait une erreur sur mon modèle. Je le restaure à l’état précédent :
./dc_template_restore.sh dctemplate
Je fais une migration rapide pour tester certaines choses :
# crée une nouvelle instance dcdev à partir de dctemplate (et applique des site_settings spécifiques à dcdev)
./dc_template_restore.sh dcdev dctemplate
./dc_migrate.sh dcdev # s'exécute avec le dépôt de script de migration spécifique à cette instance
Je fais une longue migration pendant la nuit à partir du vrai phpbb live :
./dc_template_create.sh dctemplate
./dc_template_restore.sh dcstaging dctemplate
./phpbb_pull.sh
./dc_migrate.sh dcstaging
sleep 300
./dc_rake.sh dcstaging # tâches post-migration supplémentaires non gérées par l'importateur pour (créer des modérateurs, un étiquetage détaillé, déplacer certains sujets, etc.)
Si quelqu’un est suffisamment intéressé, je pourrais le nettoyer un peu et le partager.