Projet

Général

Profil

MigrationAppliEnvole4 » Historique » Version 22

Lionel Morin, 08/07/2013 14:28

1 1 Lionel Morin
h1. Migration d'une application Envole vers la version EOLE 2.4 (ébauche)
2 1 Lionel Morin
3 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]].
4 5 Lionel Morin
5 13 Lionel Morin
h2. Nouvelle organisation du dépot git
6 1 Lionel Morin
7 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.
8 13 Lionel Morin
9 13 Lionel Morin
h3. Description des branches
10 13 Lionel Morin
11 8 Lionel Morin
|_.Sources originales |_.Sources modifiées pour Envole |_.Ajouts EOLE  |_.Packaging      |
12 13 Lionel Morin
|/2=.upstream         |/2=.=>  patch                   |/2=.=>  master |=>  packaging 2.3|
13 1 Lionel Morin
|                                                                       =>  packaging 2.4|
14 4 Lionel Morin
15 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
16 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>)
17 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...)
18 14 Lionel Morin
* les branches de *_packaging_*, une par version
19 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*)
20 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.
21 13 Lionel Morin
22 13 Lionel Morin
h3. Étapes de migration d'un dépot
23 13 Lionel Morin
24 14 Lionel Morin
# Créer la branche "patch" à partir de "master" :
25 13 Lionel Morin
<pre>
26 14 Lionel Morin
user:~/depot/monappli (master)$ git checkout -b patch
27 1 Lionel Morin
</pre>
28 1 Lionel Morin
# Supprimer tout le contenu autre que le dossier src :
29 14 Lionel Morin
<pre>
30 16 Lionel Morin
user:~/depot/monappli (patch)$ git rm -r dicos/* sso/* tmpl/* sql/* Makefile eole.mk apps.mk # etc...
31 14 Lionel Morin
</pre>
32 14 Lionel Morin
# Commiter
33 14 Lionel Morin
<pre>
34 14 Lionel Morin
user:~/depot/monappli (patch)$ git commit -m "Suppression de la partie EOLE"
35 14 Lionel Morin
</pre>
36 17 Lionel Morin
# Créer la branche "upstream" à partir de "patch" :
37 17 Lionel Morin
<pre>
38 17 Lionel Morin
user:~/depot/monappli (patch)$ git checkout -b upstream
39 17 Lionel Morin
</pre>
40 17 Lionel Morin
# Supprimer toutes les sources du dossier src :
41 17 Lionel Morin
<pre>
42 17 Lionel Morin
user:~/depot/monappli (upstream)$ git rm -r src/monappli-1.0.0/* src/plugins-1.0.0/* # etc...
43 17 Lionel Morin
</pre>
44 17 Lionel Morin
# Télécharger les sources de l'application depuis le site d'origine (fichier tar.gz)
45 17 Lionel Morin
# Décompresser les sources dans le dossier src et renommer le dossier selon la nomenclature skeletor :
46 17 Lionel Morin
<pre>
47 18 Lionel Morin
user:~/depot/monappli (upstream)/src$ tar -xvzf ~/monappli-1.0.0.tar.gz 
48 18 Lionel Morin
user:~/depot/monappli (upstream)$ mv monappli monappli-1.0.0
49 17 Lionel Morin
</pre>
50 19 Lionel Morin
# Commiter
51 19 Lionel Morin
<pre>
52 19 Lionel Morin
user:~/depot/monappli (upstream)$ git commit -m "Mise en place des sources 1.0.0"
53 19 Lionel Morin
</pre>
54 19 Lionel Morin
# Merge de la branche "upstream" dans "patch" (avec une option pour conserver les fichiers de "patch") :
55 19 Lionel Morin
<pre>
56 19 Lionel Morin
user:~/depot/monappli (upstream)$ git checkout patch
57 19 Lionel Morin
user:~/depot/monappli (patch)$ git merge -s ours upstream
58 19 Lionel Morin
</pre>
59 19 Lionel Morin
# Merge de la branche "patch" dans "master" (avec une option pour conserver les fichiers de "master") :
60 19 Lionel Morin
<pre>
61 19 Lionel Morin
user:~/depot/monappli (patch)$ git checkout master
62 19 Lionel Morin
user:~/depot/monappli (master)$ git merge -s ours patch
63 19 Lionel Morin
</pre>
64 1 Lionel Morin
65 20 Lionel Morin
Les options de merge étant conservées donc les prochains merge pourront se faire avec un simple "@git merge ...@".
66 20 Lionel Morin
Il est important de bien respecter le flux de merge des branches (représenté par "=>" dans le tableau au-dessus).
67 20 Lionel Morin
68 20 Lionel Morin
69 1 Lionel Morin
h2. Modification des dicos
70 1 Lionel Morin
71 1 Lionel Morin
Normalement il n'y a rien à changer.
72 1 Lionel Morin
73 1 Lionel Morin
h2. Modification des templates
74 1 Lionel Morin
75 1 Lionel Morin
Certaines variables souvent utilisées dans Envole ont changé de nom.
76 1 Lionel Morin
77 1 Lionel Morin
|_.Nom en 2.3                  |_.Nouveau nom en 2.4          |
78 1 Lionel Morin
|adresse_ip_annuaire           |container_ip_annuaire         |
79 1 Lionel Morin
|adresse_ip_fichier            |container_ip_fichier          |
80 1 Lionel Morin
|adresse_ip_mail               |container_ip_mail             |
81 1 Lionel Morin
|adresse_ip_mysql              |container_ip_mysql            |
82 1 Lionel Morin
|adresse_ip_web                |container_ip_web              |
83 1 Lionel Morin
84 3 Lionel Morin
*=> Ces variables peuvent être rajoutées en 2.4 pour une rétro-compatibilité*
85 1 Lionel Morin
86 1 Lionel Morin
h2. Modification des scripts shell
87 2 Lionel Morin
88 2 Lionel Morin
h3. CreoleGet
89 2 Lionel Morin
90 2 Lionel Morin
<pre>
91 2 Lionel Morin
.ParseDico
92 2 Lionel Morin
echo $mavariable
93 2 Lionel Morin
</pre>
94 2 Lionel Morin
est remplacé par :
95 2 Lionel Morin
<pre>
96 2 Lionel Morin
echo $(CreoleGet mavariable)
97 2 Lionel Morin
</pre>
98 2 Lionel Morin
99 2 Lionel Morin
ATTENTION : à ce jour, pour accéder à une variable esclave, il faut connaître la variable maître :
100 2 Lionel Morin
<pre>
101 1 Lionel Morin
echo $(CreoleGet lamaster.lesclave)
102 1 Lionel Morin
</pre>
103 2 Lionel Morin
104 12 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*
105 3 Lionel Morin
106 10 Lionel Morin
Code à confirmer :
107 7 Lionel Morin
<pre>
108 10 Lionel Morin
if type -p ParseDico &> /dev/null; then
109 11 Lionel Morin
    .ParseDico
110 11 Lionel Morin
else
111 11 Lionel Morin
    # initialisation des variables utilisées
112 11 Lionel Morin
    adresse_ip_br0=$(CreoleGet adresse_ip_br0)
113 1 Lionel Morin
fi
114 11 Lionel Morin
115 11 Lionel Morin
echo $adresse_ip_br0
116 7 Lionel Morin
</pre>
117 7 Lionel Morin
118 2 Lionel Morin
h3. CreoleRun
119 2 Lionel Morin
120 2 Lionel Morin
<pre>
121 2 Lionel Morin
./usr/share/eole/FonctionsEoleNg
122 2 Lionel Morin
RunCmd "ma -commande" conteneur
123 2 Lionel Morin
</pre>
124 2 Lionel Morin
est remplacé par :
125 1 Lionel Morin
<pre>
126 1 Lionel Morin
CreoleRun "ma -commande" conteneur
127 2 Lionel Morin
</pre>
128 3 Lionel Morin
129 3 Lionel Morin
*=> Il est possible d'émuler la commande RunCmd en 2.4*
130 2 Lionel Morin
131 2 Lionel Morin
h2. Problèmes spécifiques
132 2 Lionel Morin
133 2 Lionel Morin
h3. Problème de connexion aux bases MySQL #5633
134 2 Lionel Morin
135 2 Lionel Morin
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).