Projet

Général

Profil

Migrer un projet EOLE 3 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

Ouvrir le projet à l’infrastructure de compilation EOLE

  • Demander à EOLE l'activation du projet pour l’infrastructure de compilation EOLE
  • Se positionner sur la branche d’empaquetage EOLE 2.3
    user@work:~src/etherpad (master=)$ git checkout dist/ubuntu/lucid/master
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master<)$ git pull
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ 
    

Créer une étiquette de la dernière compilation de paquet EOLE 2.3

Cela permet de déclarer le dernier paquet à l’infrastructure de compilation EOLE.

Le fichier debian/changelog est mis à jour automatiquement depuis les logs GIT en ce basant sur le paquet précédent, il est donc important d’avoir des messages de commit qui ont du sens.

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

  • Déterminer le dernier commit de compilation EOLE 2.3
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git rev-list --oneline --no-merges -F --grep '## Nouveau paquet' --max-count 1 dist/ubuntu/lucid/master
    b6f847f8859db1c77355f51300052bb95d4f202b ## Nouveau paquet compilé par afornerot : eole-etherpad (1.4.1-eole3~20.gbpfb4d64) eole-2.3-proposed depuis dist/ubuntu/lucid/master
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ LAST_23_PKG_COMMIT=$(git rev-list --no-merges -F --grep '## Nouveau paquet' --max-count 1 dist/ubuntu/lucid/master)
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ LAST_23_PKG_MESSAGE=$(git log --no-walk --oneline ${LAST_23_PKG_COMMIT})
    
  • Extraire la version du paquet EOLE 2.3
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,'
    1.4.1-eole3~20.gbpfb4d64
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ VERSION_23=$(echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,')
    
  • Définir l’étiquette du dernier paquet EOLE 2.3 (les tildes (~) sont remplacés par des tirets bas (_))
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g'
    pkg/envole/envole-4/1.4.1-eole3_20.gbpfb4d64
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ TAG_23=$(echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g')
    

Créer l’étiquette pour la dernière compilation EOLE 2.3

  • Créer l’étiquette
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git tag -s -m "Debian package version ${VERSION_23}" "${TAG_23}" ${LAST_23_PKG_COMMIT}
    
  • Vérifier le contenu de l’étiquette
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git show ${TAG_23}
    

Publier l’étiquette pour la dernière compilation EOLE 2.3

user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git push $(git config branch.master.remote) ${TAG_23}

Renommé l’étiquette du dernier paquet EOLE 2.3

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

Cette étiquette pointera sur le même commit que l’étiquette créé précédemment car en 2.3 le fichier debian/changelog été géré sur la même branche que le packaging.

Déterminer le tag du dernier paquet EOLE 2.3

  • Définir l’étiquette du dernier paquet EOLE 2.3 (les tildes (~) sont remplacés par des tirets bas (_))
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo "debian/envole/4/${VERSION_23}" | sed -e 's,~,_,g'
    debian/envole/4/1.4.1-eole3_20.gbpfb4d64
    
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ DEB_TAG_23=$(echo "debian/envole/4/${VERSION_23}" | sed -e 's,~,_,g')
    

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

  • Créer l’étiquette
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git tag -s -m "Debian package version ${VERSION_23}" "${DEB_TAG_23}" ${LAST_23_PKG_COMMIT}
    
  • Vérifier le contenu de l’étiquette
    user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git show ${DEB_TAG_23}
    

Publier l’étiquette pour la dernière compilation EOLE 2.3

user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git push $(git config branch.master.remote) ${DEB_TAG_23}

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

user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git checkout -b dist/envole/${ENVOLE_VERSION}/master dist/ubuntu/lucid/master

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

Supprimer le fichier debian/changelog

Le fichier debian/changelog est géré automatiquement par l’infrastructure de compilation :

user@work:~src/etherpad (dist/envole/4/master=)$ git rm debian/changelog 
user@work:~src/etherpad (dist/envole/4/master+)$ git commit -m "Suppression du debian/changelog

Le fichier debian/changelog est géré automatiquement par
l’infrastructure de compilation EOLE." 

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

Créer le fichier debian/gbp.conf

Ce fichier permet à l’infrastructure de compilation EOLE de suivre les modifications sur le fichier debian/changelog

user@work:~src/etherpad (dist/envole/4/master>)$ cat >| debian/gbp.conf <<EOF
# Set per distribution debian tag
[DEFAULT]
debian-tag = debian/envole/4/%(version)s
EOF

user@work:~src/etherpad (dist/envole/4/master%>)$ git add debian/gbp.conf
user@work:~src/etherpad (dist/envole/4/master+>)$ 

Passer le projet en paquet natif

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

user@work:~src/etherpad (dist/envole/4/master+>)$ mkdir -p debian/source
user@work:~src/etherpad (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+>)$ 

Valider les changements d’empaquetage

user@work:~src/etherpad (dist/envole/4/master+>)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE

* debian/changelog: Suppression, il est géré automatiquement par
  l’infrastructure de compilation EOLE

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

* debian/source/format: Utilisation du format « 3.0 (native) »" 

user@work:~src/etherpad (dist/envole/4/master>)$ git push
user@work:~src/etherpad (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