Projet

Général

Profil

Migrer un projet EOLE 2.4 vers Envole 4

Preparation Envole 4

ATTENTION : Les lignes de commandes suivantes sont faites pour fonctionner facilement au copier/coller, cela ne dispense pas de les lire afin d’essayer de comprendre ce qu’elles font.

user@work:~$ git config user.email
moi@example.net

Nous stockons des valeurs dans des variables afin de faciliter les manipulations.

  • Répertoire où sont stocker les dépôts GIT de l’utilisateur
    user@work:~$ H_SRC="${HOME}/src" 
    user@work:~$ mkdir -p "${H_SRC}" 
    
  • Numéro de version du projet Enole
    user@work:~$ ENVOLE_VERSION=4
    

Installation de git-package par clonage

Les demandes de compilation des paquets se font entièrement par GIT.

Vous pouvez les faires à la main en créant des étiquettes mais la commande git-package permet de simplifier le travail.

L’installation de l’outil git-package par un clone GIT permet de le mettre à jour par un simple git pull.

Désinstaller le paquet deb s’il est présent

  • Vérifier la présence du paquet
    user@work:~$ dpkg -l git-package
    
  • Le désinstaller s’il est présent.
    user@work:~$ sudo apt-get remove git-pakage
    

Installer git-package

ATTENTION : Utiliser le bon chemin vers le repertoire de stockage du clone de git-package

Suivre la documentation d’installation et configuration.

Paramétrage de git-package

Vous pouvez configurer la liste des distributions qui seront utilisées par le complètement automatique Bash :

user@work:~$ git config --global --add package.distribution envole-4/experimental
user@work:~$ git config --global --add package.distribution envole-4/unstable
user@work:~$ git config --global --add package.distribution eole-2.5/experimental
user@work:~$ git config --global --add package.distribution eole-2.5/unstable
user@work:~$ git config --global --add package.distribution eole-2.4/experimental
user@work:~$ git config --global --add package.distribution eole-2.4/unstable

En sachant que la commande de compilation utilisera la premiere distribution dans le cas où l'option -d|--distrib de git-package n'est pas spécifiée.

Pour connaître la distribution par défaut :

user@work:~$ git config package.distribution || echo eole-2.5/experimental | head -n 1

Vérifier que le paquet est bien compilé en EOLE 2.4

Vous pouvez savoir si un paquet a été compilé pour EOLE 2.4 avec la commande suivante :

user@work:~src/project$ git ls-remote -t origin pkg/eole/eole-2.4/*
11ac580a42785b81b279b6626a0f528680024f5f        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole1-1
429d5062f2c07c63d1caa5ab8902ab6c7ed4db4a        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole1-1^{}
0f812b21f2f66c7ae6938ac6a0a11a32b3f3fef3        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole1-2
19159bd57ba0234765379cc56d88dffb31c3ef29        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole1-2^{}
7195e46b8c8e03cab9d22dfc742dac5efce50dca        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole2-1
53caa5cde42a6e38464262551a66a4b5385efe0b        refs/tags/pkg/eole/eole-2.4/1.9.7e-eole2-1^{}

La plupart des préparatifs ont déjà été fait.

Il faut migrer certains éléments pour l’utilisation des dépôts Envole.

ATTENTION : Assurez-vous que les branches soient bien à jour par rapport aux dépôts sur dev-eole.ac-dijon.fr.

Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4

user@work:~/src/wordpress (master)$ git checkout -b dist/envole/4/master dist/ubuntu/precise/master

user@work:~/src/wordpress (dist/envole/4/master)$ git push -u $(git config branch.master.remote) dist/envole/4/master
user@work:~/src/wordpress (dist/envole/4/master=)$ 

Renommer l’étiquette de la dernière compilation EOLE 2.4

Les étiquettes de la forme pkg/* sont positionnées sur la branche d’empaquetage afin de pouvoir suivre les demandes de compilation.

Déterminer l’étiquette de la dernière compilation EOLE 2.4

user@work:~/src/wordpress (dist/envole/4/master=)$ git describe --abbrev=0 dist/ubuntu/precise/master
pkg/eole/eole-2.4/3.6.1-eole3-1

user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_TAG=$(git describe --abbrev=0 dist/ubuntu/precise/master)

Extraire la version

user@work:~/src/wordpress (dist/envole/4/master=)$ echo ${EOLE_TAG##*/}
3.6.1-eole3-1

user@work:~/src/wordpress (dist/envole/4/master=)$ VERSION=${EOLE_TAG##*/}

Vérifier le message de l’étiquette

Nous allons réutiliser le message de l’étiquette de la dernière compilation EOLE 2.4, la première ligne non vide doit contenir la chaîne New package version :

user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_TAG} | perl -lane 'print if (/New package version/ .. /^-+BEGIN/) =~ /^\d+$/'
Lionel MORIN: New package version 3.6.1-eole3-1 for eole-2.4-unstable.
[...]

user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_MESSAGE=$(git show -s --format="format:" ${EOLE_TAG} | perl -lane 'print if (/New package version/ .. /^-+BEGIN/) =~ /^\d+$/')

Dupliquer l’étiquette de la dernière compilation EOLE 2.4 en première étiquette de compilation Envole

  • Créer l’étiquette
    user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -m "${EOLE_MESSAGE}" pkg/envole/envole-4/${VERSION} ${EOLE_TAG}^{}
    
  • Vérifier le message de l’étiquette
    user@work:~/src/wordpress (dist/envole/4/master=)$ git show pkg/envole/envole-4/${VERSION}
    

Pousser la nouvelle étiquette

user@work:~/src/wordpress (dist/envole/4/master=)$ git push --tags

Renommé l’étiquette du dernier paquet EOLE 2.4

Une étiquette de la forme debian/* est créé par l’infrastructure de compilation de paquet afin de gérer automatiquement le fichier debian/changelog.

Déterminer l’étiquette du dernier paquet EOLE 2.4

user@work:~/src/wordpress (dist/envole/4/master=)$ awk -F'=' '/^debian-tag/ {print $2}' debian/gbp.conf | sed -e "s,%(version)s,${VERSION}," 
 debian/eole/2.4/3.6.1-eole3-1

user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_DEB_TAG=$(echo $(awk -F'=' '/^debian-tag/ {print $2}' debian/gbp.conf | sed -e "s,%(version)s,${VERSION},"))

Récupérer l’étiquette du dernier paquet EOLE 2.4

Les étiquettes de la forme debian/* ne pointe sur aucune branche, ils ne sont utilisés que par l’infrastructure de compilation de paquet et ne sont donc que sur les dépôts dev-eole.ac-dijon.fr.

Pour récupérer la dernière étiquette de paquet :

user@work:~/src/wordpress (dist/envole/4/master=)$ git fetch $(git config branch.master.remote) refs/tags/${EOLE_DEB_TAG}:refs/tags/${EOLE_DEB_TAG}

Vérifier le message de l’étiquette

user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_DEB_TAG} | perl -lane 'print if (/Debian release/ .. /^-+BEGIN/) =~ /^\d+$/'
eole-wordpress Debian release 3.6.1-eole3-1

user@work:~/src/wordpress (dist/envole/4/master=)$ DEB_MESSAGE=$(git show -s --format="format:" ${EOLE_DEB_TAG} | perl -lane 'print if (/Debian release/ .. /^-+BEGIN/) =~ /^\d+$/')

Dupliquer l’étiquette du dernier paquet EOLE 2.4 en première étiquette de paquet Envole

user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -m "${DEB_MESSAGE}" debian/envole/4/${VERSION} ${EOLE_DEB_TAG}^{}

On vérifie le message

user@work:~/src/wordpress (dist/envole/4/master)$ git show debian/envole/4/${VERSION}

Pousser la nouvelle étiquette

user@work:~/src/wordpress (dist/envole/4/master=)$ git push $(git config branch.master.remote) debian/envole/4/${VERSION}

Passer le projet en paquet natif

Pour la gestion des numéros de version de paquet:

user@work:~src/wordpress (dist/envole/4/master=)$ mkdir -p debian/source
user@work:~src/wordpress (dist/envole/4/master=)$ cat >| debian/source/format <<EOF
3.0 (native)
EOF

user@work:~src/etherpad (dist/envole/4/master*=)$ git add debian/source/format
user@work:~src/etherpad (dist/envole/4/master+=)$ 

Modifier la configuration git-buildpackage

Il faut modifier modifier le fichier de configuration debian/gbp.conf afin de modifier le format des étiquettes de suivi des compilations:

user@work:~/src/wordpress (dist/envole/4/master+=)$ sed -i -e 's,^debian-tag.*,debian-tag = debian/envole/4/%(version)s,' debian/gbp.conf
user@work:~/src/wordpress (dist/envole/4/master*+=)$ git add debian/gbp.conf
user@work:~/src/wordpress (dist/envole/4/master+=)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE

* debian/gbp.conf: Définition du format des étiquettes de compilation
  pour Envole." 

user@work:~/src/wordpress (dist/envole/4/master>)$ 

Préparer l’étiquette de version amont (« upstream » en anglais)

L’infrastructure de compilation EOLE utilise les étiquettes release/* pour connaître la version amont et en dériver la verion du paquet.

Nous prenons l’exemple du paquet wordpress mais la procédure est identique pour tous les paquets Envole :

user@work:~src/wordpress (dist/envole/4/master=)$ git checkout master
user@work:~src/wordpress (master=)$ git tag -m "New Envole release 4.0" release/<mettre la version réelle de l'application>+1 master

Compiler un paquet Envole

Lorsque vous modifier l’empaquetage, il est nécessaire de compiler en premier sur un environnement de compilation personnel.

Vous pouvez avoir une machine virtuelle à disposition

Compiler un paquet expérimental

Si vous avez configuré git-package comme indiqué plus haut, vous pouvez vous passer de l’option -d|--distrib pour compiler un paquet pour la distribution
envole-2.4-experimental :

user@work:~src/wordpress (master=)$ git package --build dist/envole/4/master

NOTE : Le dernier argument dist/envole/4/master est la référence GIT, c’est à dire un identifiant de commit (le SHA1),
un nom d’étiquette ou de branche

ASTUCE : le complètement automatique Bash et l’outil git-package permet de ne spécifier que le minimum nécessaire afin de trouver la branche d’empaquetage

user@work:~src/wordpress (master=)$ git package --build envole/4<TABULATION>

ou

user@work:~src/wordpress (master=)$ git package --build envole/4<ENTER>

Compiler un paquet de développement

Il s’agit de la même procédure mais en spécifiant la distribution envole-4/unstable par l’option -d|--distrib de git-package :

user@work:~src/wordpress (master=)$ git package --build --distrib envole-4/unstable envole/4

Tester un paquet Envole sur un serveur

Tester un paquet expérimental

ATTENTION : Disponible sur un serveur EOLE à partir de la version 2.4.1 avec le paquet eole-web

Aucun paquet de la distribution envole-4-experimental ne s’installe automatiquement lors des mises à jour.

Il faut installer manuellement les paquets en spécifiant le numéro de version exacte que l’on souhaite utiliser.

Configurer les dépôts de paquets

  • Ajouter manuellement le dépôt Envole expérimental (il n’est pas configurable par Query-Auto ou Maj-Auto car il n’est utile que pour les développeurs)
    root@scribe:~# cat >| /etc/apt/sources.list.d/envole-4-experimental.list <<EOF
    deb http://test-eole.ac-dijon.fr/envole envole-4-experimental main
    EOF
    
  • Configurer les dépôts standards et prendre en compte le dépôt expérimental
    root@scribe:~# Query-Auto -V test-eole.ac-dijon.fr
    

Déterminer la version du paquet compilé

root@scribe:~# apt-cache policy eole-wordpress
apt:
  Installé : 3.9.2-eole2~5.gbpb66498
  Candidat : 3.9.2-eole2~5.gbpb66498
 Table de version :
     4.0-1~1.gbpcc1457 0
         90 http://eole.ac-dijon.fr/envole envole-4-experimental/main amd64 Packages
     3.9.2-eole2~5.gbpb66498 0
        500 http://eoleng.ac-dijon.fr/eole eole-2.3-dev/main amd64 Packages
 *** 3.9.2-eole2~5.gbpb66498 0
        100 /var/lib/dpkg/status

Installer le paquet experimental

root@scribe:~# apt-get install eole-worpress=4.0-1~1.gbpcc1457 wordpress-apps=4.0-1~1.gbpcc1457

Tester un paquet de développement

C'est comme d'habitude

root@scribe:~# Query-Auto -D -V test-eole.ac-dijon.fr
root@scribe:~# apt-eole install eole-wordpress wordpress-apps

Adaptation de l’empaquetage

Suivre les recommandations du wiki suivant
https://dev-eole.ac-dijon.fr/projects/envole/wiki/MigrationAppliEnvole4