Module de migration

Edit me

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