Projet

Général

Profil

Passage a redmine » Historique » Version 2

« Précédent - Version 2/5 (diff) - Suivant » - Version actuelle
Julien Enselme, 07/06/2013 21:24
Détails des scripts


h1. Passage à redmine

Le CRI met à disposition des élèves et des associations une forge Redmine qui permet de centraliser tout ce qui concerne drupal. Avant, le wiki était dans le wiki du ginfo, les tâches sur le portail du projet et le code dans un dépôt git sur le compte sas de assos. Il a donc été décidé de migrer le wiki, les tâches et le code dans l’interface de redmine.

h1. Migration du wiki

Le wiki a été migré à la main en copiant collant le texte de l’ancien wiki et en adaptant la syntaxe et en mettant le contenu à jour. En effet lors du passage à redmine, la version utilisée ne permettait pas de faire du rest sur le wiki (malheureusement).

h1. Migration du code

Comme il n’y avait pas de commit en dehors du commit initial, l’historique n’a pas été conservé et un nouveau dépôt vide a été créé et les scripts de l’installation y ont été ajoutés.

h1. Migration des tâches

h2. Généralités

Redmine dispose d’une API rest pour les tâches. Cette API permet de créer et de mettre à jour des tâches automatiquement. On écrit une tâche ou une mise à jour de tâche au format json ou xml et on l’injecte via les méthodes POST et PUT de http. L’authentification se fait via une clé API disponible dans le compte de l’utilisateur. Voici des exemples de commande (POST sert à créer une tâche et PUT à mettre à jour) :

curl -X POST -v --data "@is.json" -H "Content-Type: application/json" -H "X-Redmine-API-Key: CLE" https://forge.centrale-marseille.fr/issues.json
curl -v -H "Content-Type: application/json" -X PUT --data "@3.1.json" -H "X-Redmine-API-Key: CLE" http://localhost/redmine/issues/ID_TACHE.json

Plus d’info dans la doc de redmine :

h2. La méthode utilisée

Avant d’effectuer la migration en vrai, les scripts ont été testés en local avec une instance local de la forge redmine. Les modules python permettant de faire du rest n’ont pas été utilsés car ils n’ont pas donné satisfaction lors des tests préliminaires.

h3. Prérequis

Pour pouvoir exécuter les scripts, il faut :

  • python3
  • Les modules suivants : urllib, re, os, httplib2 (certains d’entre eux peuvent être dans votre installation de python3 (tous sauf httplib2 normalement), essayer de de les importer pour être fixé)
  • Une copie du portail avec les urls simplifiées activées et fonctionnels du projet avec toutes les tâches. Cette copie est indispensable car :

    • Les tâches doivent être accessibles par l’utilisateur anonyme pour ne pas avoir à configurer l’authentification dans le script. On ajoute une vue qui ne sert qu’à ça.
    • Il est plus facile d’accéder aux contenus avec les clean-url.
    • Désactiver le module book qui pose problème.
    • Installer les modules suivants :
    • entity_json : il permet de récupérer (entre autre) la liste des commentaires d’un type de contenu à une adresse de type : @http://localhost/portail/entity_json/node/ID/json@
    • restws : il permet de récupérer le contenu lui même à une adresse de type : @http://localhost/portail/node/ID.json@ ou @http://localhost/portail/comment/ID.json@. Il faut le configurer pour qu’il donne du json et pour quel type de contenu
    • Vérifier que les pages données par ces modules sont bien accessibles par l’utilisateur anonyme.
    • pandoc pour transformer avec plus ou moins de succès (en général plus) le html en syntaxe wiki (textile). Voir http://johnmacfarlane.net/pandoc/ pour plus d’infos.
    • Faire des dictionnaires de correspondance entre les noms des champs de la tâche drupal et et les clés de la demande redmine.

h3. Les scripts

Pour migrer les tâches, nous avons écrit un script python disponible dans le dépôt dans source:scripts_divers/migrer_taches_vers_redmine/ et s’appelle goto_redmine.py. Ce dossier contient également :

Normalement le script est suffisamment commenté pour être compris par quelqu’un ayant fait du python. Il faut néanmoins faire attention aux points suivant :