Projet

Général

Profil

PreparationEnvole4 » Historique » Version 23

Arnaud FORNEROT, 19/02/2015 11:35

1 4 Daniel Dehennin
{{toc}}
2 4 Daniel Dehennin
3 11 Daniel Dehennin
h1. TODO
4 11 Daniel Dehennin
5 11 Daniel Dehennin
* Séparer cette documentation en partie ;
6 11 Daniel Dehennin
* Faire une page « point d’entrée » qui pointerait sur deux sous-pages pour les deux cas de figure
7 12 Daniel Dehennin
* Séparer cette page en 4 parties
8 12 Daniel Dehennin
** Préambule commun [[PreparationEnvole4#Installation-de-git-package-par-clonage|Installation de git-package par clonage]]
9 12 Daniel Dehennin
** [[PreparationEnvole4#Migrer-un-projet-EOLE-23-vers-Envole-4|Migrer un projet EOLE 2.3 vers Envole 4]]
10 12 Daniel Dehennin
** [[PreparationEnvole4#Migrer-un-projet-EOLE-24-vers-Envole-4|Migrer un projet EOLE 2.4 vers Envole 4]]
11 12 Daniel Dehennin
** Fin commune
12 12 Daniel Dehennin
*** [[PreparationEnvole4#Préparer-létiquette-de-version-amont-upstream-en-anglais|Préparer l’étiquette de version amont (« upstream » en anglais)]]
13 12 Daniel Dehennin
*** [[PreparationEnvole4#Compiler-un-paquet-Envole|Compiler un paquet Envole]]
14 12 Daniel Dehennin
*** [[PreparationEnvole4#Tester-un-paquet-expérimental|Tester un paquet expérimental]]
15 12 Daniel Dehennin
*** [[PreparationEnvole4#Installer-un-paquet-non-expérimental|Installer un paquet non expérimental]]
16 12 Daniel Dehennin
*** [[PreparationEnvole4#Adaptation-de-lempaquetage|Adaptation de l’empaquetage]]
17 11 Daniel Dehennin
18 1 Arnaud FORNEROT
h1. Preparation Envole 4
19 1 Arnaud FORNEROT
20 10 Daniel Dehennin
*@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.
21 1 Arnaud FORNEROT
22 1 Arnaud FORNEROT
<pre>
23 10 Daniel Dehennin
user@work:~$ git config user.email
24 10 Daniel Dehennin
moi@example.net
25 1 Arnaud FORNEROT
</pre>
26 1 Arnaud FORNEROT
27 10 Daniel Dehennin
Nous stockons des valeurs dans des variables afin de faciliter les manipulations.
28 3 Arnaud FORNEROT
29 10 Daniel Dehennin
* Répertoire où sont stocker les dépôts GIT de l’utilisateur
30 3 Arnaud FORNEROT
<pre>
31 10 Daniel Dehennin
user@work:~$ H_SRC="${HOME}/src"
32 10 Daniel Dehennin
user@work:~$ mkdir -p "${H_SRC}"
33 1 Arnaud FORNEROT
</pre>
34 10 Daniel Dehennin
* Numéro de version du projet Enole
35 1 Arnaud FORNEROT
<pre>
36 10 Daniel Dehennin
user@work:~$ ENVOLE_VERSION=4
37 1 Arnaud FORNEROT
</pre>
38 1 Arnaud FORNEROT
39 1 Arnaud FORNEROT
40 1 Arnaud FORNEROT
41 1 Arnaud FORNEROT
42 10 Daniel Dehennin
43 10 Daniel Dehennin
h2. Installation de project:git-package par clonage
44 10 Daniel Dehennin
45 10 Daniel Dehennin
Les demandes de compilation des paquets se font entièrement par GIT.
46 10 Daniel Dehennin
47 10 Daniel Dehennin
Vous pouvez les faires à la main en créant des "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage mais la commande project:git-package permet de simplifier le travail.
48 10 Daniel Dehennin
49 10 Daniel Dehennin
L’installation de l’outil project:git-package par un clone GIT permet de le mettre à jour par un simple _git pull_.
50 10 Daniel Dehennin
51 10 Daniel Dehennin
52 10 Daniel Dehennin
53 10 Daniel Dehennin
h3. Désinstaller le paquet deb s’il est présent
54 10 Daniel Dehennin
55 10 Daniel Dehennin
* Vérifier la présence du paquet
56 1 Arnaud FORNEROT
<pre>
57 10 Daniel Dehennin
user@work:~$ dpkg -l git-package
58 1 Arnaud FORNEROT
</pre>
59 10 Daniel Dehennin
* Le désinstaller s’il est présent.
60 10 Daniel Dehennin
<pre>
61 10 Daniel Dehennin
user@work:~$ sudo apt-get remove git-pakage
62 10 Daniel Dehennin
</pre>
63 1 Arnaud FORNEROT
64 1 Arnaud FORNEROT
65 1 Arnaud FORNEROT
66 10 Daniel Dehennin
h3. Installer project:git-package
67 1 Arnaud FORNEROT
68 10 Daniel Dehennin
*@ATTENTION@* : Utiliser le bon chemin vers le repertoire de stockage du clone de project:git-package
69 1 Arnaud FORNEROT
70 10 Daniel Dehennin
Suivre la documentation [[git-package:|d’installation et configuration]].
71 10 Daniel Dehennin
72 10 Daniel Dehennin
73 10 Daniel Dehennin
74 10 Daniel Dehennin
h3. Paramétrage de project:git-package
75 10 Daniel Dehennin
76 10 Daniel Dehennin
Vous pouvez configurer la liste des distributions qui seront utilisées par le "complètement automatique Bash":https://fr.wikipedia.org/wiki/Compl%C3%A8tement_automatique#Interpr.C3.A9teurs_de_commandes :
77 1 Arnaud FORNEROT
<pre>
78 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution envole-4/experimental
79 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution envole-4/unstable
80 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution eole-2.4/experimental
81 10 Daniel Dehennin
user@work:~$ git config --global --add package.distribution eole-2.4/unstable
82 1 Arnaud FORNEROT
</pre>
83 1 Arnaud FORNEROT
84 10 Daniel Dehennin
En sachant que la commande de compilation utilisera la premiere distribution dans le cas où l'option *@-d|--distrib@* de project:git-package n'est pas spécifiée.
85 10 Daniel Dehennin
86 10 Daniel Dehennin
Pour connaître la distribution par défaut :
87 10 Daniel Dehennin
88 1 Arnaud FORNEROT
<pre>
89 10 Daniel Dehennin
user@work:~$ git config package.distribution || echo eole-2.4/experimental | head -n 1
90 1 Arnaud FORNEROT
</pre>
91 1 Arnaud FORNEROT
92 1 Arnaud FORNEROT
93 1 Arnaud FORNEROT
94 1 Arnaud FORNEROT
95 10 Daniel Dehennin
h2. Migrer un projet EOLE 2.3 vers Envole 4
96 1 Arnaud FORNEROT
97 10 Daniel Dehennin
* Demander à EOLE l'activation du projet pour l’infrastructure de compilation EOLE
98 10 Daniel Dehennin
* Se positionner sur la branche d’empaquetage EOLE 2.3
99 10 Daniel Dehennin
<pre>
100 10 Daniel Dehennin
user@work:~src/etherpad (master=)$ git checkout dist/ubuntu/lucid/master
101 1 Arnaud FORNEROT
102 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master<)$ git pull
103 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ 
104 10 Daniel Dehennin
</pre>
105 3 Arnaud FORNEROT
106 2 Arnaud FORNEROT
107 10 Daniel Dehennin
108 10 Daniel Dehennin
h3. Créer une étiquette de la dernière compilation de paquet EOLE 2.3
109 10 Daniel Dehennin
110 10 Daniel Dehennin
Cela permet de déclarer le dernier paquet à l’infrastructure de compilation EOLE.
111 10 Daniel Dehennin
112 10 Daniel Dehennin
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 [[eole:GitBonnesPratiques#De-lécriture-des-ChangeLog|qui ont du sens]].
113 10 Daniel Dehennin
114 10 Daniel Dehennin
115 10 Daniel Dehennin
h4. Déterminer l’étiquette du dernier paquet EOLE 2.3
116 10 Daniel Dehennin
117 10 Daniel Dehennin
* Déterminer le dernier commit de compilation EOLE 2.3
118 1 Arnaud FORNEROT
<pre>
119 10 Daniel Dehennin
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
120 10 Daniel Dehennin
b6f847f8859db1c77355f51300052bb95d4f202b ## Nouveau paquet compilé par afornerot : eole-etherpad (1.4.1-eole3~20.gbpfb4d64) eole-2.3-proposed depuis dist/ubuntu/lucid/master
121 10 Daniel Dehennin
122 10 Daniel Dehennin
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)
123 10 Daniel Dehennin
124 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ LAST_23_PKG_MESSAGE=$(git log --no-walk --oneline ${LAST_23_PKG_COMMIT})
125 1 Arnaud FORNEROT
</pre>
126 10 Daniel Dehennin
* Extraire la version du paquet EOLE 2.3
127 10 Daniel Dehennin
<pre>
128 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,'
129 10 Daniel Dehennin
1.4.1-eole3~20.gbpfb4d64
130 1 Arnaud FORNEROT
131 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ VERSION_23=$(echo ${LAST_23_PKG_MESSAGE} | sed -E -e 's,[^(]+\(([^)]+).*,\1,')
132 10 Daniel Dehennin
</pre>
133 10 Daniel Dehennin
* Définir l’étiquette du dernier paquet EOLE 2.3 (les "tildes":https://fr.wiktionary.org/wiki/tilde#Nom_commun (*@~@*) sont remplacés par des tirets bas (*@_@*))
134 1 Arnaud FORNEROT
<pre>
135 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g'
136 10 Daniel Dehennin
pkg/envole/envole-4/1.4.1-eole3_20.gbpfb4d64
137 10 Daniel Dehennin
138 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ TAG_23=$(echo "pkg/envole/envole-4/${VERSION_23}" | sed -e 's,~,_,g')
139 1 Arnaud FORNEROT
</pre>
140 1 Arnaud FORNEROT
141 1 Arnaud FORNEROT
142 10 Daniel Dehennin
h4. Créer l’étiquette pour la dernière compilation EOLE 2.3
143 1 Arnaud FORNEROT
144 10 Daniel Dehennin
* Créer l’étiquette
145 1 Arnaud FORNEROT
<pre>
146 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git tag -s -m "Debian package version ${VERSION_23}" "${TAG_23}" ${LAST_23_PKG_COMMIT}
147 1 Arnaud FORNEROT
</pre>
148 10 Daniel Dehennin
* Vérifier le contenu de l’étiquette
149 10 Daniel Dehennin
<pre>
150 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git show ${TAG_23}
151 10 Daniel Dehennin
</pre>
152 3 Arnaud FORNEROT
153 1 Arnaud FORNEROT
154 10 Daniel Dehennin
h4. Publier l’étiquette pour la dernière compilation EOLE 2.3
155 1 Arnaud FORNEROT
156 10 Daniel Dehennin
<pre>
157 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git push $(git config branch.master.remote) ${TAG_23}
158 10 Daniel Dehennin
</pre>
159 3 Arnaud FORNEROT
160 2 Arnaud FORNEROT
161 10 Daniel Dehennin
162 10 Daniel Dehennin
h3. Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4
163 10 Daniel Dehennin
164 1 Arnaud FORNEROT
<pre>
165 10 Daniel Dehennin
user@work:~src/etherpad (dist/ubuntu/lucid/master=)$ git checkout -b dist/envole/${ENVOLE_VERSION}/master dist/ubuntu/lucid/master
166 10 Daniel Dehennin
167 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master)$ git push -u $(git config branch.master.remote) dist/envole/${ENVOLE_VERSION}/master
168 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master=)$ 
169 1 Arnaud FORNEROT
</pre>
170 2 Arnaud FORNEROT
171 1 Arnaud FORNEROT
172 1 Arnaud FORNEROT
173 10 Daniel Dehennin
h3. Supprimer le fichier debian/changelog 
174 10 Daniel Dehennin
175 10 Daniel Dehennin
Le fichier *@debian/changelog@* est [[eole:EoleDebianPackaging24#debianchangelog|géré automatiquement par l’infrastructure de compilation]] :
176 10 Daniel Dehennin
177 1 Arnaud FORNEROT
<pre>
178 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master=)$ git rm debian/changelog 
179 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+)$ git commit -m "Suppression du debian/changelog
180 10 Daniel Dehennin
181 10 Daniel Dehennin
Le fichier debian/changelog est géré automatiquement par
182 10 Daniel Dehennin
l’infrastructure de compilation EOLE."
183 10 Daniel Dehennin
184 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master>)$
185 10 Daniel Dehennin
</pre>
186 10 Daniel Dehennin
187 10 Daniel Dehennin
188 10 Daniel Dehennin
189 10 Daniel Dehennin
h3. Créer le fichier debian/gbp.conf
190 10 Daniel Dehennin
191 10 Daniel Dehennin
Ce fichier permet à l’infrastructure de compilation EOLE de suivre les modifications sur le fichier *@debian/changelog@*
192 10 Daniel Dehennin
193 10 Daniel Dehennin
<pre>
194 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master>)$ cat >| debian/gbp.conf <<EOF
195 1 Arnaud FORNEROT
# Set per distribution debian tag
196 1 Arnaud FORNEROT
[DEFAULT]
197 1 Arnaud FORNEROT
debian-tag = debian/envole/4/%(version)s
198 1 Arnaud FORNEROT
EOF
199 8 Daniel Dehennin
200 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master%>)$ git add debian/gbp.conf
201 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ 
202 1 Arnaud FORNEROT
</pre>
203 1 Arnaud FORNEROT
204 1 Arnaud FORNEROT
205 1 Arnaud FORNEROT
206 10 Daniel Dehennin
h3. Passer le projet en paquet natif
207 1 Arnaud FORNEROT
208 10 Daniel Dehennin
Pour la gestion des [[eole:EoleDebianPackaging24#debiansourceformat|numéros de version]] de paquet:
209 10 Daniel Dehennin
210 8 Daniel Dehennin
<pre>
211 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ mkdir -p debian/source
212 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ cat >| debian/source/format <<EOF
213 1 Arnaud FORNEROT
3.0 (native)
214 1 Arnaud FORNEROT
EOF
215 1 Arnaud FORNEROT
216 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master*+>)$ git add debian/source/format
217 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ 
218 1 Arnaud FORNEROT
</pre>
219 8 Daniel Dehennin
220 10 Daniel Dehennin
h3. Valider les changements d’empaquetage
221 1 Arnaud FORNEROT
222 1 Arnaud FORNEROT
<pre>
223 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+>)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE
224 8 Daniel Dehennin
225 10 Daniel Dehennin
* debian/changelog: Suppression, il est géré automatiquement par
226 10 Daniel Dehennin
  l’infrastructure de compilation EOLE
227 1 Arnaud FORNEROT
228 10 Daniel Dehennin
* debian/gbp.conf: Définition du format des étiquettes de compilation
229 10 Daniel Dehennin
  pour Envole.
230 8 Daniel Dehennin
231 10 Daniel Dehennin
* debian/source/format: Utilisation du format « 3.0 (native) »"
232 1 Arnaud FORNEROT
233 1 Arnaud FORNEROT
user@work:~src/etherpad (dist/envole/4/master>)$ git push -u $(git branch.master.remote) dist/envole/4/master
234 1 Arnaud FORNEROT
user@work:~src/etherpad (dist/envole/4/master=)$ 
235 21 Igor GODI
</pre>
236 21 Igor GODI
237 21 Igor GODI
h2. Préparer l’étiquette de version amont (« upstream » en anglais)
238 21 Igor GODI
239 21 Igor GODI
L’infrastructure de compilation EOLE utilise les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage *@release/*@* pour connaître la version _amont_ et en dériver la verion du paquet.
240 21 Igor GODI
241 21 Igor GODI
Nous prenons l’exemple du paquet project:wordpress mais la procédure est identique pour tous les paquets Envole :
242 21 Igor GODI
243 21 Igor GODI
<pre>
244 21 Igor GODI
user@work:~src/wordpress (dist/envole/4/master=)$ git checkout master
245 23 Arnaud FORNEROT
user@work:~src/wordpress (master=)$ git tag -m "New Envole release 4.0" release/<mettre la vrai version de l'application> master
246 1 Arnaud FORNEROT
</pre>
247 1 Arnaud FORNEROT
248 10 Daniel Dehennin
h2. Migrer un projet EOLE 2.4 vers Envole 4
249 10 Daniel Dehennin
250 8 Daniel Dehennin
[[MigrationAppliEnvole4#État-des-lieux-application-par-application|La plupart des préparatifs ont déjà été fait]].
251 1 Arnaud FORNEROT
252 1 Arnaud FORNEROT
Il faut migrer certains éléments pour l’utilisation des "dépôts Envole":http://eole.ac-dijon.fr/envole.
253 1 Arnaud FORNEROT
254 8 Daniel Dehennin
*@ATTENTION@* : Assurez-vous que les branches soient bien à jour par rapport aux dépôts sur *@dev-eole.ac-dijon.fr@*.
255 8 Daniel Dehennin
256 1 Arnaud FORNEROT
257 10 Daniel Dehennin
258 10 Daniel Dehennin
h3. Dupliquer la branche de compilation EOLE 2.3 en branche de compilation Envole 4
259 10 Daniel Dehennin
260 1 Arnaud FORNEROT
<pre>
261 10 Daniel Dehennin
user@work:~/src/wordpress (master)$ git checkout -b dist/envole/4/master dist/ubuntu/precise/master
262 8 Daniel Dehennin
263 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master)$ git push -u $(git config branch.master.remote) dist/envole/4/master
264 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ 
265 1 Arnaud FORNEROT
</pre>
266 8 Daniel Dehennin
267 8 Daniel Dehennin
268 8 Daniel Dehennin
269 10 Daniel Dehennin
h3. Renommer l’étiquette de la dernière compilation EOLE 2.4
270 1 Arnaud FORNEROT
271 10 Daniel Dehennin
Les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de la forme *@pkg/*@* sont positionnées sur la branche d’empaquetage afin de pouvoir suivre les demandes de compilation.
272 10 Daniel Dehennin
273 10 Daniel Dehennin
274 10 Daniel Dehennin
h4. Déterminer l’étiquette de la dernière compilation EOLE 2.4
275 1 Arnaud FORNEROT
276 10 Daniel Dehennin
<pre>
277 8 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git describe --abbrev=0 dist/ubuntu/precise/master
278 13 Daniel Dehennin
pkg/eole/eole-2.4/3.6.1-eole3-1
279 1 Arnaud FORNEROT
280 1 Arnaud FORNEROT
user@work:~/src/wordpress (dist/envole/4/master=)$ EOLE_TAG=$(git describe --abbrev=0 dist/ubuntu/precise/master)
281 1 Arnaud FORNEROT
</pre>
282 1 Arnaud FORNEROT
283 13 Daniel Dehennin
h4. Extraire la version
284 1 Arnaud FORNEROT
285 13 Daniel Dehennin
<pre>
286 13 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ echo ${EOLE_TAG##*/}
287 13 Daniel Dehennin
3.6.1-eole3-1
288 13 Daniel Dehennin
289 13 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ VERSION=${EOLE_TAG##*/}
290 13 Daniel Dehennin
</pre>
291 13 Daniel Dehennin
292 10 Daniel Dehennin
h4. Vérifier le message de l’étiquette
293 1 Arnaud FORNEROT
294 10 Daniel Dehennin
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@* :
295 10 Daniel Dehennin
296 1 Arnaud FORNEROT
<pre>
297 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_TAG} | perl -lane 'print if (/New package version/ .. /^-+BEGIN/) =~ /^\d+$/'
298 10 Daniel Dehennin
Lionel MORIN: New package version 3.6.1-eole3-1 for eole-2.4-unstable.
299 10 Daniel Dehennin
[...]
300 1 Arnaud FORNEROT
301 10 Daniel Dehennin
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+$/')
302 1 Arnaud FORNEROT
</pre>
303 1 Arnaud FORNEROT
304 10 Daniel Dehennin
h4. Dupliquer l’étiquette de la dernière compilation EOLE 2.4 en première étiquette de compilation Envole
305 10 Daniel Dehennin
306 10 Daniel Dehennin
* Créer l’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage
307 1 Arnaud FORNEROT
<pre>
308 19 Igor GODI
user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -m "${EOLE_MESSAGE}" pkg/envole/envole-4/${VERSION} ${EOLE_TAG}^{}
309 1 Arnaud FORNEROT
</pre>
310 10 Daniel Dehennin
* Vérifier le message de l’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage
311 1 Arnaud FORNEROT
<pre>
312 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show pkg/envole/envole-4/${VERSION}
313 8 Daniel Dehennin
</pre>
314 8 Daniel Dehennin
315 10 Daniel Dehennin
h4. Pousser la nouvelle étiquette 
316 10 Daniel Dehennin
317 1 Arnaud FORNEROT
<pre>
318 18 Igor GODI
user@work:~/src/wordpress (dist/envole/4/master=)$ git push --tags
319 1 Arnaud FORNEROT
</pre>
320 1 Arnaud FORNEROT
321 10 Daniel Dehennin
h3. Renommé l’étiquette du dernier paquet EOLE 2.4
322 1 Arnaud FORNEROT
323 10 Daniel Dehennin
Une étiquette de la forme *@debian/*@* est créé par l’infrastructure de compilation de paquet afin de gérer automatiquement le fichier *@debian/changelog@*.
324 10 Daniel Dehennin
325 10 Daniel Dehennin
326 10 Daniel Dehennin
h4. Déterminer l’étiquette du dernier paquet EOLE 2.4
327 10 Daniel Dehennin
328 1 Arnaud FORNEROT
<pre>
329 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ awk -F'=' '/^debian-tag/ {print $2}' debian/gbp.conf | sed -e "s,%(version)s,${VERSION},"
330 1 Arnaud FORNEROT
 debian/eole/2.4/3.6.1-eole3-1
331 1 Arnaud FORNEROT
332 10 Daniel Dehennin
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},"))
333 1 Arnaud FORNEROT
</pre>
334 1 Arnaud FORNEROT
335 1 Arnaud FORNEROT
336 10 Daniel Dehennin
h4. Récupérer l’étiquette du dernier paquet EOLE 2.4
337 1 Arnaud FORNEROT
338 10 Daniel Dehennin
Les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage 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@*.
339 6 Daniel Dehennin
340 10 Daniel Dehennin
Pour récupérer la dernière "étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de paquet :
341 10 Daniel Dehennin
342 8 Daniel Dehennin
<pre>
343 10 Daniel Dehennin
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}
344 1 Arnaud FORNEROT
</pre>
345 1 Arnaud FORNEROT
346 1 Arnaud FORNEROT
347 10 Daniel Dehennin
h4. Vérifier le message de l’étiquette
348 10 Daniel Dehennin
349 8 Daniel Dehennin
<pre>
350 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git show -s --format="format:" ${EOLE_DEB_TAG} | perl -lane 'print if (/Debian release/ .. /^-+BEGIN/) =~ /^\d+$/'
351 1 Arnaud FORNEROT
eole-wordpress Debian release 3.6.1-eole3-1
352 1 Arnaud FORNEROT
353 10 Daniel Dehennin
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+$/')
354 1 Arnaud FORNEROT
</pre>
355 1 Arnaud FORNEROT
356 10 Daniel Dehennin
h4. Dupliquer l’étiquette du dernier paquet EOLE 2.4 en première étiquette de paquet Envole
357 1 Arnaud FORNEROT
358 1 Arnaud FORNEROT
<pre>
359 16 Igor GODI
user@work:~/src/wordpress (dist/envole/4/master=)$ git tag -m "${DEB_MESSAGE}" debian/envole/4/${VERSION} ${EOLE_DEB_TAG}^{}
360 1 Arnaud FORNEROT
</pre>
361 1 Arnaud FORNEROT
362 1 Arnaud FORNEROT
On vérifie le message
363 1 Arnaud FORNEROT
364 1 Arnaud FORNEROT
<pre>
365 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master)$ git show debian/envole/4/${VERSION}
366 1 Arnaud FORNEROT
</pre>
367 1 Arnaud FORNEROT
368 10 Daniel Dehennin
h4. Pousser la nouvelle étiquette
369 1 Arnaud FORNEROT
370 1 Arnaud FORNEROT
<pre>
371 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master=)$ git push $(git config branch.master.remote) debian/envole/4/${VERSION}
372 1 Arnaud FORNEROT
</pre>
373 8 Daniel Dehennin
374 8 Daniel Dehennin
375 10 Daniel Dehennin
376 10 Daniel Dehennin
h3. Passer le projet en paquet natif
377 10 Daniel Dehennin
378 10 Daniel Dehennin
Pour la gestion des [[eole:EoleDebianPackaging24#debiansourceformat|numéros de version]] de paquet:
379 10 Daniel Dehennin
380 10 Daniel Dehennin
<pre>
381 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ mkdir -p debian/source
382 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ cat >| debian/source/format <<EOF
383 10 Daniel Dehennin
3.0 (native)
384 10 Daniel Dehennin
EOF
385 10 Daniel Dehennin
386 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master*=)$ git add debian/source/format
387 10 Daniel Dehennin
user@work:~src/etherpad (dist/envole/4/master+=)$ 
388 10 Daniel Dehennin
</pre>
389 10 Daniel Dehennin
390 10 Daniel Dehennin
391 10 Daniel Dehennin
392 1 Arnaud FORNEROT
h3. Modifier la configuration git-buildpackage
393 1 Arnaud FORNEROT
394 10 Daniel Dehennin
Il faut modifier modifier le fichier de configuration *@debian/gbp.conf@* afin de modifier le format des "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage de suivi des compilations:
395 1 Arnaud FORNEROT
396 1 Arnaud FORNEROT
<pre>
397 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master+=)$ sed -i -e 's,^debian-tag.*,debian-tag = debian/envole/4/%(version)s,' debian/gbp.conf
398 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master*+=)$ git add debian/gbp.conf
399 10 Daniel Dehennin
user@work:~/src/wordpress (dist/envole/4/master+=)$ git commit -m "Configuration pour l’infrastructure de compilation EOLE
400 10 Daniel Dehennin
401 10 Daniel Dehennin
* debian/gbp.conf: Définition du format des étiquettes de compilation
402 1 Arnaud FORNEROT
  pour Envole."
403 1 Arnaud FORNEROT
404 1 Arnaud FORNEROT
user@work:~/src/wordpress (dist/envole/4/master>)$ 
405 8 Daniel Dehennin
</pre>
406 8 Daniel Dehennin
407 10 Daniel Dehennin
h2. Préparer l’étiquette de version amont (« upstream » en anglais)
408 8 Daniel Dehennin
409 10 Daniel Dehennin
L’infrastructure de compilation EOLE utilise les "étiquettes":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage *@release/*@* pour connaître la version _amont_ et en dériver la verion du paquet.
410 10 Daniel Dehennin
411 10 Daniel Dehennin
Nous prenons l’exemple du paquet project:wordpress mais la procédure est identique pour tous les paquets Envole :
412 10 Daniel Dehennin
413 1 Arnaud FORNEROT
<pre>
414 10 Daniel Dehennin
user@work:~src/wordpress (dist/envole/4/master=)$ git checkout master
415 22 Arnaud FORNEROT
user@work:~src/wordpress (master=)$ git tag -m "New Envole release 4.0" release/*<mettre la version réelle de l'application>* master
416 1 Arnaud FORNEROT
</pre>
417 1 Arnaud FORNEROT
418 14 Arnaud FORNEROT
h1. Compiler un paquet Envole
419 10 Daniel Dehennin
420 10 Daniel Dehennin
Lorsque vous modifier l’empaquetage, il est nécessaire de compiler en premier sur un [[eole:GitPackagingSbuildLVM|environnement de compilation personnel]].
421 10 Daniel Dehennin
422 10 Daniel Dehennin
Vous pouvez avoir une machine virtuelle à disposition
423 10 Daniel Dehennin
424 10 Daniel Dehennin
425 10 Daniel Dehennin
426 10 Daniel Dehennin
h3. Compiler un paquet expérimental
427 10 Daniel Dehennin
428 10 Daniel Dehennin
Si vous avez configuré project:git-package comme [[#Paramétrage-de-git-package|indiqué plus haut]], vous pouvez vous passer de l’option *@-d|--distrib@* pour compiler un paquet pour la distribution
429 10 Daniel Dehennin
*@envole-2.4-experimental@* :
430 10 Daniel Dehennin
431 1 Arnaud FORNEROT
<pre>
432 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build dist/envole/4/master
433 8 Daniel Dehennin
</pre>
434 1 Arnaud FORNEROT
435 10 Daniel Dehennin
*@NOTE@* : Le dernier argument *@dist/envole/4/master@* est la "référence GIT":http://git-scm.com/book/fr/v1/Les-tripes-de-Git-R%C3%A9f%C3%A9rences-Git, c’est à dire un identifiant de commit (le SHA1),
436 10 Daniel Dehennin
 un nom d’"étiquette":http://git-scm.com/book/fr/Les-bases-de-Git-Étiquetage ou de branche
437 1 Arnaud FORNEROT
438 10 Daniel Dehennin
*@ASTUCE@* : le "complètement automatique Bash":https://fr.wikipedia.org/wiki/Compl%C3%A8tement_automatique#Interpr.C3.A9teurs_de_commandes et l’outil project:git-package permet de ne spécifier que le minimum nécessaire afin de trouver la branche d’empaquetage
439 10 Daniel Dehennin
<pre>
440 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build envole/4<TABULATION>
441 10 Daniel Dehennin
</pre>
442 8 Daniel Dehennin
443 10 Daniel Dehennin
ou
444 8 Daniel Dehennin
445 8 Daniel Dehennin
<pre>
446 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build envole/4<ENTER>
447 6 Daniel Dehennin
</pre>
448 6 Daniel Dehennin
449 10 Daniel Dehennin
450 10 Daniel Dehennin
451 10 Daniel Dehennin
h3. Compiler un paquet de développement
452 10 Daniel Dehennin
453 10 Daniel Dehennin
Il s’agit de la même procédure mais en spécifiant la distribution *@envole-4/unstable@* par l’option *@-d|--distrib@* de project:git-package :
454 8 Daniel Dehennin
455 10 Daniel Dehennin
<pre>
456 10 Daniel Dehennin
user@work:~src/wordpress (master=)$ git package --build --distrib envole-4/unstable envole/4
457 1 Arnaud FORNEROT
</pre>
458 10 Daniel Dehennin
459 12 Daniel Dehennin
h2. Tester un paquet expérimental
460 10 Daniel Dehennin
461 1 Arnaud FORNEROT
*@ATTENTION@* : Disponible sur un serveur EOLE à partir de la version 2.4.1 avec le paquet project:eole-web
462 10 Daniel Dehennin
463 12 Daniel Dehennin
Aucun paquet de la distribution *@envole-4-experimental@* ne s’installe automatiquement lors des mises à jour.
464 1 Arnaud FORNEROT
465 12 Daniel Dehennin
Il faut installer manuellement les paquets en spécifiant le numéro de version exacte que l’on souhaite utiliser.
466 12 Daniel Dehennin
467 12 Daniel Dehennin
468 12 Daniel Dehennin
469 10 Daniel Dehennin
h3. Configurer les dépôts de paquets
470 10 Daniel Dehennin
471 10 Daniel Dehennin
472 10 Daniel Dehennin
* 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)
473 3 Arnaud FORNEROT
<pre>
474 1 Arnaud FORNEROT
root@scribe:~# cat >| /etc/apt/sources.list.d/envole-4-experimental.list <<EOF
475 1 Arnaud FORNEROT
deb http://test-eole.ac-dijon.fr/envole envole-4-experimental main
476 10 Daniel Dehennin
EOF
477 3 Arnaud FORNEROT
</pre>
478 1 Arnaud FORNEROT
* Configurer les dépôts standards et prendre en compte le dépôt expérimental
479 10 Daniel Dehennin
<pre>
480 10 Daniel Dehennin
root@scribe:~# Query-Auto -V test-eole.ac-dijon.fr
481 10 Daniel Dehennin
</pre>
482 10 Daniel Dehennin
483 10 Daniel Dehennin
484 10 Daniel Dehennin
485 10 Daniel Dehennin
h3. Déterminer la version du paquet compilé
486 10 Daniel Dehennin
487 10 Daniel Dehennin
488 1 Arnaud FORNEROT
<pre>
489 10 Daniel Dehennin
root@scribe:~# apt-cache policy eole-wordpress
490 10 Daniel Dehennin
apt:
491 10 Daniel Dehennin
  Installé : 3.9.2-eole2~5.gbpb66498
492 10 Daniel Dehennin
  Candidat : 3.9.2-eole2~5.gbpb66498
493 10 Daniel Dehennin
 Table de version :
494 10 Daniel Dehennin
     4.0-1~1.gbpcc1457 0
495 10 Daniel Dehennin
         90 http://eole.ac-dijon.fr/envole envole-4-experimental/main amd64 Packages
496 10 Daniel Dehennin
     3.9.2-eole2~5.gbpb66498 0
497 10 Daniel Dehennin
        500 http://eoleng.ac-dijon.fr/eole eole-2.3-dev/main amd64 Packages
498 10 Daniel Dehennin
 *** 3.9.2-eole2~5.gbpb66498 0
499 10 Daniel Dehennin
        100 /var/lib/dpkg/status
500 1 Arnaud FORNEROT
</pre>
501 3 Arnaud FORNEROT
502 1 Arnaud FORNEROT
503 10 Daniel Dehennin
504 10 Daniel Dehennin
h3. Installer le paquet experimental
505 10 Daniel Dehennin
506 2 Arnaud FORNEROT
<pre>
507 10 Daniel Dehennin
root@scribe:~# apt-get install eole-worpress=4.0-1~1.gbpcc1457 wordpress-apps=4.0-1~1.gbpcc1457
508 1 Arnaud FORNEROT
</pre>
509 2 Arnaud FORNEROT
510 1 Arnaud FORNEROT
511 1 Arnaud FORNEROT
512 10 Daniel Dehennin
513 1 Arnaud FORNEROT
h2. Installer un paquet non expérimental
514 1 Arnaud FORNEROT
515 1 Arnaud FORNEROT
C'est comme d'habitude
516 1 Arnaud FORNEROT
<pre>
517 10 Daniel Dehennin
root@scribe:~# Query-Auto -D -V test-eole.ac-dijon.fr
518 10 Daniel Dehennin
root@scribe:~# apt-eole install eole-wordpress wordpress-apps
519 1 Arnaud FORNEROT
</pre>
520 1 Arnaud FORNEROT
521 1 Arnaud FORNEROT
522 1 Arnaud FORNEROT
523 10 Daniel Dehennin
524 10 Daniel Dehennin
h2. Adaptation de l’empaquetage
525 1 Arnaud FORNEROT
526 1 Arnaud FORNEROT
Suivre les recommandations du wiki suivant
527 1 Arnaud FORNEROT
https://dev-eole.ac-dijon.fr/projects/envole/wiki/MigrationAppliEnvole4