Projet

Général

Profil

MigrationAppliEnvole4 » Historique » Version 91

Lionel Morin, 16/05/2014 16:56

1 1 Lionel Morin
h1. Migration d'une application Envole vers la version EOLE 2.4 (ébauche)
2 1 Lionel Morin
3 25 Joël Cuissinat
{{>toc}}
4 25 Joël Cuissinat
5 3 Lionel Morin
Pour faciliter le travail de packaging, il est nécessaire de [[eole-skeletor:Doc-geting-started| "skeletoriser"]] le dépot 2.3 pour le [[eole:EoleDebianPackaging24| transformer en dépot 2.4]].
6 5 Lionel Morin
7 13 Lionel Morin
h2. Nouvelle organisation du dépot git
8 1 Lionel Morin
9 13 Lionel Morin
Une nouvelle organisation globale des dépots git pour Envole est mise en place et sera commune pour 2.3 et 2.4.
10 13 Lionel Morin
11 13 Lionel Morin
h3. Description des branches
12 13 Lionel Morin
13 8 Lionel Morin
|_.Sources originales |_.Sources modifiées pour Envole |_.Ajouts EOLE  |_.Packaging      |
14 13 Lionel Morin
|/2=.upstream         |/2=.=>  patch                   |/2=.=>  master |=>  packaging 2.3|
15 1 Lionel Morin
|                                                                       =>  packaging 2.4|
16 4 Lionel Morin
17 15 Lionel Morin
* la branche _*upstream*_ ne contient que les sources originales de l'application et sert de référence pour la branche patch
18 13 Lionel Morin
* la branche _*patch*_ contient les sources patchées pour envole (il y a ici possibilité de générer un paquet envole-<nom_appli>)
19 1 Lionel Morin
* la branche _*master*_ est commune en 2.3 et 2.4 (sous réserve de rester compatible) et comporte, en plus des sources, tous les ajouts EOLE (templates, dicos, scripts, sql, password...)
20 14 Lionel Morin
* les branches de *_packaging_*, une par version
21 21 Lionel Morin
Les flèches "=>" représentent le sens de merge des branches. (*uptream* est mergée dans *patch* qui est mergée dans *master* qui est mergée dans *packaging*)
22 22 Lionel Morin
Il est important de bien respecter ce sens de merge au risque de perdre des fichiers et rendre le dépot git inutilisable.
23 13 Lionel Morin
24 13 Lionel Morin
h3. Étapes de migration d'un dépot
25 13 Lionel Morin
26 14 Lionel Morin
# Créer la branche "patch" à partir de "master" :
27 13 Lionel Morin
<pre>
28 14 Lionel Morin
user:~/depot/monappli (master)$ git checkout -b patch
29 1 Lionel Morin
</pre>
30 1 Lionel Morin
# Supprimer tout le contenu autre que le dossier src :
31 14 Lionel Morin
<pre>
32 16 Lionel Morin
user:~/depot/monappli (patch)$ git rm -r dicos/* sso/* tmpl/* sql/* Makefile eole.mk apps.mk # etc...
33 14 Lionel Morin
</pre>
34 14 Lionel Morin
# Commiter
35 14 Lionel Morin
<pre>
36 14 Lionel Morin
user:~/depot/monappli (patch)$ git commit -m "Suppression de la partie EOLE"
37 14 Lionel Morin
</pre>
38 17 Lionel Morin
# Créer la branche "upstream" à partir de "patch" :
39 17 Lionel Morin
<pre>
40 17 Lionel Morin
user:~/depot/monappli (patch)$ git checkout -b upstream
41 17 Lionel Morin
</pre>
42 17 Lionel Morin
# Supprimer toutes les sources du dossier src :
43 17 Lionel Morin
<pre>
44 17 Lionel Morin
user:~/depot/monappli (upstream)$ git rm -r src/monappli-1.0.0/* src/plugins-1.0.0/* # etc...
45 17 Lionel Morin
</pre>
46 17 Lionel Morin
# Télécharger les sources de l'application depuis le site d'origine (fichier tar.gz)
47 17 Lionel Morin
# Décompresser les sources dans le dossier src et renommer le dossier selon la nomenclature skeletor :
48 17 Lionel Morin
<pre>
49 18 Lionel Morin
user:~/depot/monappli (upstream)/src$ tar -xvzf ~/monappli-1.0.0.tar.gz 
50 18 Lionel Morin
user:~/depot/monappli (upstream)$ mv monappli monappli-1.0.0
51 17 Lionel Morin
</pre>
52 19 Lionel Morin
# Commiter
53 19 Lionel Morin
<pre>
54 19 Lionel Morin
user:~/depot/monappli (upstream)$ git commit -m "Mise en place des sources 1.0.0"
55 19 Lionel Morin
</pre>
56 19 Lionel Morin
# Merge de la branche "upstream" dans "patch" (avec une option pour conserver les fichiers de "patch") :
57 19 Lionel Morin
<pre>
58 19 Lionel Morin
user:~/depot/monappli (upstream)$ git checkout patch
59 19 Lionel Morin
user:~/depot/monappli (patch)$ git merge -s ours upstream
60 19 Lionel Morin
</pre>
61 19 Lionel Morin
# Merge de la branche "patch" dans "master" (avec une option pour conserver les fichiers de "master") :
62 19 Lionel Morin
<pre>
63 19 Lionel Morin
user:~/depot/monappli (patch)$ git checkout master
64 19 Lionel Morin
user:~/depot/monappli (master)$ git merge -s ours patch
65 19 Lionel Morin
</pre>
66 1 Lionel Morin
67 23 Lionel Morin
Les options de merge étant conservées, les prochains merge pourront se faire avec un simple "@git merge ...@".
68 20 Lionel Morin
Il est important de bien respecter le flux de merge des branches (représenté par "=>" dans le tableau au-dessus).
69 20 Lionel Morin
70 47 Lionel Morin
Pour simplifier ce travail, on pourra reporter la création de la branche "upstream" et l'effectuer à l'occasion d'une montée de version de l'application.
71 46 Lionel Morin
72 1 Lionel Morin
h2. Modification des dicos
73 1 Lionel Morin
74 1 Lionel Morin
Normalement il n'y a rien à changer.
75 1 Lionel Morin
76 1 Lionel Morin
h2. Modification des templates
77 1 Lionel Morin
78 1 Lionel Morin
Certaines variables souvent utilisées dans Envole ont changé de nom.
79 1 Lionel Morin
80 1 Lionel Morin
|_.Nom en 2.3                  |_.Nouveau nom en 2.4          |
81 1 Lionel Morin
|adresse_ip_annuaire           |container_ip_annuaire         |
82 1 Lionel Morin
|adresse_ip_fichier            |container_ip_fichier          |
83 1 Lionel Morin
|adresse_ip_mail               |container_ip_mail             |
84 1 Lionel Morin
|adresse_ip_mysql              |container_ip_mysql            |
85 1 Lionel Morin
|adresse_ip_web                |container_ip_web              |
86 1 Lionel Morin
87 24 Joël Cuissinat
*=> Ces variables peuvent être rajoutées en 2.4 pour une rétro-compatibilité (#5701)*
88 1 Lionel Morin
89 1 Lionel Morin
h2. Modification des scripts shell
90 2 Lionel Morin
91 2 Lionel Morin
h3. CreoleGet
92 2 Lionel Morin
93 2 Lionel Morin
<pre>
94 2 Lionel Morin
.ParseDico
95 2 Lionel Morin
echo $mavariable
96 2 Lionel Morin
</pre>
97 2 Lionel Morin
est remplacé par :
98 2 Lionel Morin
<pre>
99 2 Lionel Morin
echo $(CreoleGet mavariable)
100 2 Lionel Morin
</pre>
101 2 Lionel Morin
102 2 Lionel Morin
ATTENTION : à ce jour, pour accéder à une variable esclave, il faut connaître la variable maître :
103 2 Lionel Morin
<pre>
104 1 Lionel Morin
echo $(CreoleGet lamaster.lesclave)
105 1 Lionel Morin
</pre>
106 2 Lionel Morin
107 90 Lionel Morin
*Il est possible de tester la présence de ParseDico avant de le lancer et ainsi faire en sorte d'avoir des scripts communs en 2.3 et en 2.4*
108 3 Lionel Morin
109 89 Lionel Morin
Code d'exemple tiré de grr :
110 1 Lionel Morin
<pre>
111 89 Lionel Morin
#!/bin/bash
112 89 Lionel Morin
if [ -f /usr/bin/ParseDico ];then
113 89 Lionel Morin
    #EOLE 2.3
114 89 Lionel Morin
    . ParseDico
115 89 Lionel Morin
    . /etc/eole/containers.conf
116 11 Lionel Morin
else
117 89 Lionel Morin
    #EOLE 2.4
118 89 Lionel Morin
    activer_apache=$(CreoleGet activer_apache)
119 89 Lionel Morin
    activer_grr=$(CreoleGet activer_grr non)
120 89 Lionel Morin
    container_path_web=$(CreoleGet container_path_web)
121 1 Lionel Morin
fi
122 1 Lionel Morin
123 89 Lionel Morin
if [ "$activer_apache" = "oui" ] && [ "$activer_grr" = "oui" ];then
124 89 Lionel Morin
    /usr/share/envole/grr/InstallEnvoleGrr.php
125 89 Lionel Morin
    www_grr="$container_path_web/var/www/html/grr"
126 89 Lionel Morin
    chmod 774 "$www_grr/images"
127 89 Lionel Morin
fi
128 89 Lionel Morin
129 89 Lionel Morin
exit 0
130 7 Lionel Morin
</pre>
131 2 Lionel Morin
132 2 Lionel Morin
h3. CreoleRun
133 2 Lionel Morin
134 2 Lionel Morin
<pre>
135 2 Lionel Morin
./usr/share/eole/FonctionsEoleNg
136 2 Lionel Morin
RunCmd "ma -commande" conteneur
137 2 Lionel Morin
</pre>
138 1 Lionel Morin
est remplacé par :
139 1 Lionel Morin
<pre>
140 2 Lionel Morin
CreoleRun "ma -commande" conteneur
141 3 Lionel Morin
</pre>
142 43 Lionel Morin
143 91 Lionel Morin
*Il est possible d'émuler la commande RunCmd en 2.4 ou bien émuler CreoleRun en 2.3.*
144 91 Lionel Morin
Exemple de code :
145 91 Lionel Morin
<pre>
146 91 Lionel Morin
#!/bin/bash
147 91 Lionel Morin
if [ -f /usr/bin/ParseDico ];then
148 91 Lionel Morin
    RunCmd=RunCmd
149 91 Lionel Morin
    . /usr/bin/ParseDico
150 91 Lionel Morin
    . /etc/eole/containers.conf
151 91 Lionel Morin
    . /usr/share/eole/FonctionsEoleNg
152 91 Lionel Morin
else
153 91 Lionel Morin
    RunCmd=CreoleRun
154 91 Lionel Morin
    activer_moodle=$(CreoleGet activer_moodle)
155 91 Lionel Morin
fi
156 91 Lionel Morin
157 91 Lionel Morin
CMD="cd ${INSTALL_DIR} ; ${BIN_PHP} ${UPGRADE_SCRIPT} --non-interactive"
158 91 Lionel Morin
159 91 Lionel Morin
$RunCmd "${BIN_SU} - ${APACHE_USER} -s /bin/bash -c \"${CMD}\"" web
160 91 Lionel Morin
</pre>
161 2 Lionel Morin
162 2 Lionel Morin
h2. Problèmes spécifiques
163 2 Lionel Morin
164 2 Lionel Morin
h3. Problème de connexion aux bases MySQL #5633
165 2 Lionel Morin
166 26 Joël Cuissinat
Pour y remédier temporairement, on peut mettre "localhost" à la place de "127.0.0.1" (penser à la fois aux fichiers sql et aux fichiers de config php).
167 26 Joël Cuissinat
168 26 Joël Cuissinat
h2. État des lieux application par application
169 26 Joël Cuissinat
170 26 Joël Cuissinat
h3. Ajaxplorer
171 57 Joël Cuissinat
172 26 Joël Cuissinat
OK => *eole-ajaxplorer (4.2.3-eole3-1)*
173 80 Lionel Morin
174 80 Lionel Morin
MAJ Envole 3.3.7 => *eole-ajaxplorer 4.2.3-eole4-1*
175 82 Lionel Morin
176 81 Lionel Morin
_Problème au moment du test car piwik n'était pas installé (dans /var/www/html/ajaxplorer/plugins/gui.ajax/class.AJXP_ClientDriver.php +216 : include d'une lib piwik)_
177 26 Joël Cuissinat
178 26 Joël Cuissinat
h3. phpMyAdmin
179 66 Joël Cuissinat
180 26 Joël Cuissinat
OK => *eole-phpmyadmin (2.4.0-6)*
181 26 Joël Cuissinat
182 26 Joël Cuissinat
h3. Piwik
183 64 Joël Cuissinat
184 26 Joël Cuissinat
paquet *eole-piwik (1.12-eole1-1)* à déboguer ...
185 26 Joël Cuissinat
186 26 Joël Cuissinat
h3. Cdt
187 67 Joël Cuissinat
188 26 Joël Cuissinat
OK => *eole-cdt (4.9.3.7-eole1-2)*
189 77 Lionel Morin
190 71 Lionel Morin
MAJ Envole 3.3.7 => *eole-cdt 4.9.4.4-eole2-1*
191 26 Joël Cuissinat
192 26 Joël Cuissinat
h3. Dokuwiki
193 48 Lionel Morin
194 26 Joël Cuissinat
OK => *eole-dokuwiki (2012-01-25a-eole2-4)*
195 77 Lionel Morin
196 72 Lionel Morin
MAJ Envole 3.3.7 => *eole-dokuwiki_2012-01-25a-eole4-1*
197 26 Joël Cuissinat
198 26 Joël Cuissinat
h3. FluxBB
199 45 Joël Cuissinat
200 26 Joël Cuissinat
OK => *eole-fluxbb (1.5.3.eole1-1)*
201 83 Lionel Morin
202 70 Lionel Morin
MAJ Envole 3.3.7 => *eole-fluxbb 1.5.3.eole3-1* (#7686 est prise en compte)
203 26 Joël Cuissinat
204 26 Joël Cuissinat
h3. Gepi
205 53 Lionel Morin
206 26 Joël Cuissinat
OK => *eole-gepi (1.6.3-eole2-1)*
207 77 Lionel Morin
208 73 Lionel Morin
MAJ Envole 3.3.7 => *eole-gepi 1.6.3-eole4-1*
209 26 Joël Cuissinat
210 26 Joël Cuissinat
h3. GRR
211 65 Joël Cuissinat
212 26 Joël Cuissinat
OK => *eole-grr (1.9.7e-eole1-1)*
213 77 Lionel Morin
214 74 Lionel Morin
MAJ Envole 3.3.7 => *eole-grr 1.9.7e-eole2-1*
215 26 Joël Cuissinat
216 26 Joël Cuissinat
h3. Jappix
217 63 Joël Cuissinat
218 26 Joël Cuissinat
OK => *eole-jappix (0.9.0-eole1-1)*
219 86 Lionel Morin
220 85 Lionel Morin
MAJ Envole 3.3.7 => *eole-jappix 0.9.0-eole1-2*
221 26 Joël Cuissinat
222 26 Joël Cuissinat
h3. Moodle
223 44 Joël Cuissinat
224 26 Joël Cuissinat
KO : script _posttemplate/12-moodle_ non compatible 2.4 (#5964)
225 26 Joël Cuissinat
226 1 Lionel Morin
h3. Moodle BigBlueButton
227 26 Joël Cuissinat
228 26 Joël Cuissinat
_Non testé_
229 26 Joël Cuissinat
230 1 Lionel Morin
h3. Moodle Référentiel
231 26 Joël Cuissinat
232 26 Joël Cuissinat
_Non testé_
233 26 Joël Cuissinat
234 26 Joël Cuissinat
h3. Piwigo
235 57 Joël Cuissinat
236 49 Lionel Morin
OK => *eole-piwigo (2.3.5-eole2-1)*
237 77 Lionel Morin
238 75 Lionel Morin
MAJ Envole 3.3.7 => *eole-piwigo 2.3.5-eole3-1*
239 75 Lionel Morin
240 75 Lionel Morin
_Problème au moment du test car piwik n'était pas installé (dans /var/www/html/piwigo/include/page_header.php +76 : require_once sur une lib piwik)_
241 26 Joël Cuissinat
242 26 Joël Cuissinat
h3. Roundcube
243 57 Joël Cuissinat
244 26 Joël Cuissinat
OK => *eole-roundcube (0.9.1-eole2-1)*
245 88 Lionel Morin
246 84 Lionel Morin
MAJ Envole 3.3.7 => *eole-roundcube 0.9.1-eole4-1*
247 26 Joël Cuissinat
248 26 Joël Cuissinat
h3. SAP
249 26 Joël Cuissinat
250 1 Lionel Morin
_Non testé_
251 26 Joël Cuissinat
252 26 Joël Cuissinat
h3. SPIP Eva
253 26 Joël Cuissinat
254 51 Lionel Morin
OK => *eole-spipeva (3.0.10-eole1-1)*
255 77 Lionel Morin
256 51 Lionel Morin
MAJ Envole 3.3.7 => *eole-spipeva 3.0.10-eole4-1*
257 26 Joël Cuissinat
258 26 Joël Cuissinat
h3. Taskfreak
259 52 Lionel Morin
260 52 Lionel Morin
OK => *eole-taskfreak (0.6.4-eole1-1)*
261 57 Joël Cuissinat
262 1 Lionel Morin
mais problème d'encodage sur 2.4 (#6723)
263 78 Lionel Morin
264 78 Lionel Morin
265 78 Lionel Morin
MAJ Envole 3.3.7 => *eole-taskfreak 0.6.4-eole2-1*
266 1 Lionel Morin
267 1 Lionel Morin
h3. Webcalendar
268 69 Joël Cuissinat
269 1 Lionel Morin
OK => ?
270 1 Lionel Morin
271 1 Lionel Morin
h3. WordPress
272 1 Lionel Morin
273 1 Lionel Morin
OK => *eole-worpress (3.6.1-eole1-1)*
274 79 Lionel Morin
275 79 Lionel Morin
MAJ Envole 3.3.7 => *eole-wordpress 3.6.1-eole3-1*
276 26 Joël Cuissinat
277 26 Joël Cuissinat
h3. Zarafa
278 26 Joël Cuissinat
279 57 Joël Cuissinat
_Non testé_
280 61 Joël Cuissinat
281 61 Joël Cuissinat
h3. CDC
282 61 Joël Cuissinat
283 61 Joël Cuissinat
_Non testé_
284 62 Joël Cuissinat
285 57 Joël Cuissinat
h3. -SquirrelMail-
286 57 Joël Cuissinat
287 57 Joël Cuissinat
_Ne sera pas supporté_
288 57 Joël Cuissinat
289 57 Joël Cuissinat
h3. -Gibii-
290 57 Joël Cuissinat
291 39 Lionel Morin
_N'est déjà plus supporté en 2.3_
292 39 Lionel Morin
293 39 Lionel Morin
h2. Compilation en EOLE 2.4
294 39 Lionel Morin
295 39 Lionel Morin
Voir : http://dev-eole.ac-dijon.fr/projects/eole/wiki/PrepareEOLE24
296 42 Lionel Morin
297 1 Lionel Morin
*La nouvelle procédure de compilation de paquet se base sur les noms de tag de la branche master.*
298 42 Lionel Morin
299 42 Lionel Morin
Donc à chaque modification du paquet il faudra taguer cette version avec un numéro supérieur à la précédente.
300 42 Lionel Morin
301 54 Lionel Morin
Pour différencier les versions upstream et les versions modifiées par EOLE, on pourra taguer la branche upstream avec "upstream/x.y.z" (où x.y.z est son numéro de version) et les releases EOLE (branche master) avec "release/x.y.z-eoleX" (où X est le numéro de la version EOLE).
302 54 Lionel Morin
303 1 Lionel Morin
Pour connaitre le dernier tag utilisé afin de l'incrémenter, tapez la commande @git describe@.