- Migrer un projet EOLE 3 vers Envole 4
- Preparation Envole 4
- Ouvrir le projet à l’infrastructure de compilation EOLE
- Créer une étiquette de la dernière compilation de paquet EOLE 2.3
- Renommé l’étiquette du dernier paquet EOLE 2.3
- Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4
- Supprimer le fichier debian/changelog
- Créer le fichier debian/gbp.conf
- Passer le projet en paquet natif
- Valider les changements d’empaquetage
- Préparer l’étiquette de version amont (« upstream » en anglais)
- Compiler un paquet Envole
- Tester un paquet Envole sur un serveur
- Adaptation de l’empaquetage
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 distributionenvole-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