Module de migration
Module de migration
Installation / paramétrage
Pour lancer le module de migration, il faut copier le script voo4_cli.php qui se trouve dans src/tools/voo4_cli.php vers le dossier /resources/cron dans un projet. Il faut que les variables d’environnement définies dedans soient valides
Le module de migration est intégré à Voozanoo depuis la version 2.20. Si vous avez une version de Voozanoo ≥ 2.20, vous pouvez sauter à l’étape Faire une migration.
Versions antérieure à 2.20 :
Il faut créer la table sys_context, où est stocké le numéro de version de Voozanoo.
Pour créer cette table : (contrôler avant que la requête de création est bien à jour par rapport au fichier src/resources/sql/structure_sys_context.sql):
CREATE TABLE IF NOT EXISTS `sys_context` (
`id_sys_config` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`section` VARCHAR(80) NOT NULL,
`name` VARCHAR(80) NOT NULL,
`value` varchar(80) NOT NULL,
`last_update` datetime NOT NULL,
PRIMARY KEY (id_sys_config)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Puis insérer le numéro de la version actuelle (2.15 dans l’exemple)
insert into sys_context set section='system', name='version', value='2.15';
Il est aussi possible et recommandé d’ajouter une configuration dans le voozanoo.ini pour définir le chemin des logs, et du JSON généré lors d’une migration :
voozanoo.migration.log.enable = TRUE
voozanoo.migration.log.conf.timestampFormat = 'Y-m-d H:i:s'
voozanoo.migration.log.conf.stream.writerName = "Stream"
voozanoo.migration.log.conf.stream.writerParams.stream = "/var/logs/migration.log"
voozanoo.migration.log.conf.stream.writerParams.mode = "a"
Faire une migration
Première étape : mettre à jour le code dans la version désirée.
Si nécessaire (preproduction ou production par exemple), changer d’utilisateur pour les droits :
sudo -u www-data
Pour récupérer des informations sur la version actuelle (numéro de version dans le APPINFO et en base) :
php voo4_cli.php mtd="version"
Pour les tests ou les migrations :
php voo4_cli.php
mtd="[ migration | tests ]"
version="[ N°version cible ]"
simulation="[ true | false ]"
exemple, pour tester une migration en 2.20 :
php voo4_cli.php mtd="migration" version="2.20" simulation="true"
Puis pour exécuter réellement la migration :
php voo4_cli.php mtd="migration" version="2.20" simulation="false"
Note : pour continuer une migration même s’il y a une ou plusieurs erreurs, il est possible d’utiliser l’option force=true Exemple :
php voo4_cli.php mtd="migration" version="2.20" simulation="false" force="true"
Lancer des tests
Le module de migration gère aussi des tests en suivant la même logique orientée action que dans les migrations. Pour lancer des tests, la commande à utiliser est :
php voo4_cli.php mtd="tests"
Ou pour s’arrêter à la première erreur :
php voo4_cli.php mtd="tests" stop_on_error="true"
Il est aussi possible de ne lancer que les tests avec un certain tag :
php voo4_cli.php mtd="tests" tag="configuration"
Il est possible de lister des corrections :
php voo4_cli.php mtd="listCorrections"
┌──────────────────────────────────┐
│ Mode correction : mantis N°22181 │
└──────────────────────────────────┘
┌───────────────────────────────┐
│ Listes des projets à migrer : │
│ voo4 │
└───────────────────────────────┘
--------------------------------------
Action : CorrectIndex
Description : "Ajout d'un index sur pj_group"
Sur la table "voo4_pj_group" :
- [voo4] : L'index existe déjà sur le champ 'name'.
Impacted resources : Table
Status : ok
Créer un test pour une application
L’option “appli=true” permet de lancer des tests intégrés à l’application plutôt que des tests du noyau. Voici les prérequis :
- Des tests existent dans: library/{Appname}/Resource/XML/ScriptPlayer/Action/Tests/
- “includePaths.library” est définie dans la configuration
- “autoloadernamespaces[] = {Appname}” dans la configuration
- Les tests créés étendent les class de tests du noyau. Exemple pour une application nommée “Sandbox”:
class App_Resource_XML_ScriptPlayer_Action_Tests_CheckVersionsSandbox extends Core_Library_Resource_XML_ScriptPlayer_Action_Tests
- un fichier resources/xml/tests/integrity/voozanoo4-tests.xml existe dans votre application et contient une ligne qui appelle votre test :
<tests type="check_versions_sandbox"
label="description de l’action"
tags="my tags"
/>
Pour lancer vos tests, allez là aussi dans resources/cron, et faites :
php voo4_cli.php mtd="tests" appli=true
Sources :
- pour exemple, les classes de test VOO4 sont dans src/library/Resource/XML/ScriptPlayer/Action/Tests, et le XML dans src/resources/xml_resources/tests/voozanoo4-tests.xml