Doc-geting-started » Historique » Version 4
Version 3 (Philippe Caseiro, 19/09/2012 11:28) → Version 4/35 (Philippe Caseiro, 19/09/2012 11:56)
h1. Premiers pas
Dans ce documents vous trouverez toutes les étapes pour utiliser le dépôt standard Eole pour le packaging.
L'idée de départ de ce dépôt est de fournir un outil qui vous permet de disposer d'un environement prêt a l'emplois
pour construire un paquet "Eole".
Il suffit de mettre les fichiers dans les bons répertoires.
h2. Le dépôt
Voici l'arboréscence type d'un dépôts "standardisé"
* */src/*
** *<appli>-<version>/*
** *plugins-<version>/nom/*
** *lang-<version>/nom/*
* */tmpl/*
* */dicos/*
* */pretemplate/*
* */posttemplate/*
* */postservice/*
* */sql/*
** *gen/*
** *updates/*
** *conf/*
*** *gen/*
*** *updates/*
*** *pwd/*
* */sso/*
** *filtres/*
** *user-info/*
* */ldap/*
** *pwd/*
* */sharenvole/*
* _Makefile_
* _eole.mk_
* _apps.mk_
Commentaires :
table{border:1px solid black}.
| */src/* | _Répertoire a destination des sources de l'application_ |
| */src/<appli>-<version>/* | _Code source de l'application avec la possibilité de faire cohabiter plusieurs versions lors des mises à jour_ |
| */src/plugins-<version>/* | _Répertoire contenant les plugins externes et ceux développés en interne pour cette version de l'application (un sous-répertoire par plugin)_ |
| */src/lang-<version>/* | _Répertoire des traductions pour cette version (un sous-répertoire par langue)_ |
| */tmpl/* | _Répertoire des templates eole_ |
| */dicos/* | _Répertoire des dictionnaires eole (XX_<appli>.xml)_ |
| */pretemplate/* | _Répertoire des scripts (shell ou python) de pretemplate_ |
| */posttemplate/* | _Répertoire des scripts (shell ou python) de posttemplate_ |
| */postservice/* | _Répertoire des scripts (shell ou python) de postservice_ |
| */sql/* | _Répertoire des configurations pour la génération et la gestion des mise à jours des bases de données_ |
| */sql/gen/* | _Répertoire des scripts sql a exécuter lors de la génération de la base de données_ |
| */sql/updates* | _Répertoire des scripts sql a éxécuter lors de mise à jour de la base de données_ |
| */sql/conf/* | _Répertoire des configurations pour la gestion de la bases de données_ |
| */sql/conf/gen* | _Répertoire du fichier de configuration de génération de la base de données_ |
| */sql/conf/updates* | _Répertoire du fichier de configuration des mise à jour de la base de données_ |
| */sql/conf/passwords* | _Répertoire du fichier de configuration pour la gestion de mots de passes d'accès à la base de données_ |
| */sso/* | _Répertoire des configurations pour la gestion du SSO_ |
| */sso/filtres/* | _Répertoire des filtres sso (<appli>.ini, <appli>_apps.ini)_ |
| */sso/user-info/* | _Répertoire du profil sso (profil_<appli>.py)_ |
| */ldap/* | _Répertoire des configurations pour la gestion des mots de passe d'accès au serveur ldap_ |
| */ldap/passwords/* | _Répertoire du fichier de configuration du mot de passe ldap (<appli>.ini)_ |
| */sharenvole/* | _Répertoire des scripts historiques d'aide à l'installation des applictions envole (à éviter si possible)_ |
| Makefile | _Fichier de règles de "compilation"_ |
| eole.mk | _Règles standard Eole ! ne pas changer ce fichier_ |
| apps.mk | _Règles pour l'installation de l'application web._ |
h2. Etape 1 : Cloner le dépôt
@git clone http://dev-eole.ac-dijon.fr/git/eole-skeletor@
<pre>
Cloning into 'eole-skeletor'...
remote: Counting objects: 83, done.
remote: Compressing objects: 100% (71/71), done.
remote: Total 83 (delta 26), reused 0 (delta 0)
Unpacking objects: 100% (83/83), done.
</pre>
Vous disposez désormais d'un répertoire _eole-skeletor_.
Ce répertoire contiens un exemple type de dépôt standard.
h2. Etape 2: Créer votre propre dépôt
Lancer les commandes suivantes :
@mkdir eole-monappli@
@cd eole-monappli@
@git init .@
@cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .@
@git add .@
@git commit -am "Premier commit : Ajout des fichiers Makefile standard"@
<pre>
user@host:code $ mkdir eole-monappli
user@host:code $ cd eole-monappli
user@host:code/eole-monappli $ git init .
Initialized empty Git repository in /tmp/eole-monappli/.git/
user@host:code/eole-monappli $ cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .
user@host:code/eole-monappli $ git add .
user@host:code/eole-monappli $ git commit -am "Premier commit : Ajout des fichiers Makefile standard"
[master (root-commit) 1be6951] Premier commit : Ajout des fichiers Makefile standard
3 files changed, 195 insertions(+)
create mode 100644 Makefile
create mode 100644 apps.mk
create mode 100644 eole.mk
user@host:code/eole-monappli $
</pre>
h2. Etape 3: Mise en place des fichiers (dico,templates,sources,configurations ...)
Le principe est simple pour que le "Makefile" installe votre fichier au bon endroit, il suffit de créer le répertoire et
de mettre votre fichier dans le dit répertoire.
h3. Exemple d'ajout diconnaire "Eole" :
Il suffit de lancer les commandes suivantes :
@mkdir dicos@
@cp XX_nom_appli.xml dicos@
<pre>
user@host:code/eole-monappli $ mkdir dicos
user@host:code/eole-monappli $ ls
apps.mk dicos/ eole.mk Makefile
user@host:code/eole-monappli $ cp /emplacement/de/mon/dico/XX_nom_appli.xml dicos
user@host:code/eole-monappli $ ls dicos
XX_nom_appli.xml
</pre>
Pour l'ajout d'un template la procédure est la même avec le répertoire tmpl
h3. Exemple d'ajout de la génération d'une base de données
h4. Création de l'arborescence:
<pre>
├── sql
│ ├── conf
│ │ ├── gen
│ │ │ └── mon_appi.py
│ │ └── passwords
│ │ └── monappli.ini
│ └── gen
│ ├── premier_script.sql
│ └── second_script.sql
</pre>
@mkdir -p sql/conf/gen sql/conf/passwords sql/gen@
<pre>
user@host:code/eole-monappli $ mkdir -p sql/conf/gen sql/conf/passwords sql/gen
user@host:code/eole-monappli $ ls -R sql
sql:
conf/ gen/
sql/conf:
gen/ passwords/
sql/conf/gen:
sql/conf/passwords:
sql/gen:
user@host:code/eole-monappli $ tree
sql
├── conf
│ ├── gen
│ └── passwords
└── gen
</pre>
h4. Création des fichiers de configurations
Pour créer une base de données il faut plusieurs fichiers.
* Un fichier de configuration pour la génération
* Un fichier de configuration pour la gestion des mots de passe d'accès à la base
* Les scripts SQL pour la création et l'initialisation de la base de donéés
h5. Fichier de Configuration pour la génération :
Ce fichier contiens les instructions nécessaire à la génération de la bases en voici un exemple :
<pre><code class="python">
#-*-coding:utf-8-*-
###########################################################################
# Eole NG - 2011
# Copyright Pole de Competence Eole (Ministere Education - Academie Dijon)
# Licence CeCill cf /root/LicenceEole.txt
# eole@ac-dijon.fr
#
# gepi.py
#
# Création de la base de données mysql de gepi
#
###########################################################################
"""
Config pour gepi
"""
from eolesql.db_test import db_exists, test_var
GEPI_TABLEFILENAMES = ['/usr/share/eole/mysql/gepi/gen/gepi-create-0-initeole.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-1-structure.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-2-data.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-3-ajouteole.sql']
def test():
"""
test l'existence de la base gepi
"""
return test_var('activer_gepi') and not db_exists('gepi')
conf_dict = dict(filenames=GEPI_TABLEFILENAMES,
test=test)
</code></pre>
Dans ce documents vous trouverez toutes les étapes pour utiliser le dépôt standard Eole pour le packaging.
L'idée de départ de ce dépôt est de fournir un outil qui vous permet de disposer d'un environement prêt a l'emplois
pour construire un paquet "Eole".
Il suffit de mettre les fichiers dans les bons répertoires.
h2. Le dépôt
Voici l'arboréscence type d'un dépôts "standardisé"
* */src/*
** *<appli>-<version>/*
** *plugins-<version>/nom/*
** *lang-<version>/nom/*
* */tmpl/*
* */dicos/*
* */pretemplate/*
* */posttemplate/*
* */postservice/*
* */sql/*
** *gen/*
** *updates/*
** *conf/*
*** *gen/*
*** *updates/*
*** *pwd/*
* */sso/*
** *filtres/*
** *user-info/*
* */ldap/*
** *pwd/*
* */sharenvole/*
* _Makefile_
* _eole.mk_
* _apps.mk_
Commentaires :
table{border:1px solid black}.
| */src/* | _Répertoire a destination des sources de l'application_ |
| */src/<appli>-<version>/* | _Code source de l'application avec la possibilité de faire cohabiter plusieurs versions lors des mises à jour_ |
| */src/plugins-<version>/* | _Répertoire contenant les plugins externes et ceux développés en interne pour cette version de l'application (un sous-répertoire par plugin)_ |
| */src/lang-<version>/* | _Répertoire des traductions pour cette version (un sous-répertoire par langue)_ |
| */tmpl/* | _Répertoire des templates eole_ |
| */dicos/* | _Répertoire des dictionnaires eole (XX_<appli>.xml)_ |
| */pretemplate/* | _Répertoire des scripts (shell ou python) de pretemplate_ |
| */posttemplate/* | _Répertoire des scripts (shell ou python) de posttemplate_ |
| */postservice/* | _Répertoire des scripts (shell ou python) de postservice_ |
| */sql/* | _Répertoire des configurations pour la génération et la gestion des mise à jours des bases de données_ |
| */sql/gen/* | _Répertoire des scripts sql a exécuter lors de la génération de la base de données_ |
| */sql/updates* | _Répertoire des scripts sql a éxécuter lors de mise à jour de la base de données_ |
| */sql/conf/* | _Répertoire des configurations pour la gestion de la bases de données_ |
| */sql/conf/gen* | _Répertoire du fichier de configuration de génération de la base de données_ |
| */sql/conf/updates* | _Répertoire du fichier de configuration des mise à jour de la base de données_ |
| */sql/conf/passwords* | _Répertoire du fichier de configuration pour la gestion de mots de passes d'accès à la base de données_ |
| */sso/* | _Répertoire des configurations pour la gestion du SSO_ |
| */sso/filtres/* | _Répertoire des filtres sso (<appli>.ini, <appli>_apps.ini)_ |
| */sso/user-info/* | _Répertoire du profil sso (profil_<appli>.py)_ |
| */ldap/* | _Répertoire des configurations pour la gestion des mots de passe d'accès au serveur ldap_ |
| */ldap/passwords/* | _Répertoire du fichier de configuration du mot de passe ldap (<appli>.ini)_ |
| */sharenvole/* | _Répertoire des scripts historiques d'aide à l'installation des applictions envole (à éviter si possible)_ |
| Makefile | _Fichier de règles de "compilation"_ |
| eole.mk | _Règles standard Eole ! ne pas changer ce fichier_ |
| apps.mk | _Règles pour l'installation de l'application web._ |
h2. Etape 1 : Cloner le dépôt
@git clone http://dev-eole.ac-dijon.fr/git/eole-skeletor@
<pre>
Cloning into 'eole-skeletor'...
remote: Counting objects: 83, done.
remote: Compressing objects: 100% (71/71), done.
remote: Total 83 (delta 26), reused 0 (delta 0)
Unpacking objects: 100% (83/83), done.
</pre>
Vous disposez désormais d'un répertoire _eole-skeletor_.
Ce répertoire contiens un exemple type de dépôt standard.
h2. Etape 2: Créer votre propre dépôt
Lancer les commandes suivantes :
@mkdir eole-monappli@
@cd eole-monappli@
@git init .@
@cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .@
@git add .@
@git commit -am "Premier commit : Ajout des fichiers Makefile standard"@
<pre>
user@host:code $ mkdir eole-monappli
user@host:code $ cd eole-monappli
user@host:code/eole-monappli $ git init .
Initialized empty Git repository in /tmp/eole-monappli/.git/
user@host:code/eole-monappli $ cp ../eole-skeletor/*.mk ../eole-skeletor/Makefile .
user@host:code/eole-monappli $ git add .
user@host:code/eole-monappli $ git commit -am "Premier commit : Ajout des fichiers Makefile standard"
[master (root-commit) 1be6951] Premier commit : Ajout des fichiers Makefile standard
3 files changed, 195 insertions(+)
create mode 100644 Makefile
create mode 100644 apps.mk
create mode 100644 eole.mk
user@host:code/eole-monappli $
</pre>
h2. Etape 3: Mise en place des fichiers (dico,templates,sources,configurations ...)
Le principe est simple pour que le "Makefile" installe votre fichier au bon endroit, il suffit de créer le répertoire et
de mettre votre fichier dans le dit répertoire.
h3. Exemple d'ajout diconnaire "Eole" :
Il suffit de lancer les commandes suivantes :
@mkdir dicos@
@cp XX_nom_appli.xml dicos@
<pre>
user@host:code/eole-monappli $ mkdir dicos
user@host:code/eole-monappli $ ls
apps.mk dicos/ eole.mk Makefile
user@host:code/eole-monappli $ cp /emplacement/de/mon/dico/XX_nom_appli.xml dicos
user@host:code/eole-monappli $ ls dicos
XX_nom_appli.xml
</pre>
Pour l'ajout d'un template la procédure est la même avec le répertoire tmpl
h3. Exemple d'ajout de la génération d'une base de données
h4. Création de l'arborescence:
<pre>
├── sql
│ ├── conf
│ │ ├── gen
│ │ │ └── mon_appi.py
│ │ └── passwords
│ │ └── monappli.ini
│ └── gen
│ ├── premier_script.sql
│ └── second_script.sql
</pre>
@mkdir -p sql/conf/gen sql/conf/passwords sql/gen@
<pre>
user@host:code/eole-monappli $ mkdir -p sql/conf/gen sql/conf/passwords sql/gen
user@host:code/eole-monappli $ ls -R sql
sql:
conf/ gen/
sql/conf:
gen/ passwords/
sql/conf/gen:
sql/conf/passwords:
sql/gen:
user@host:code/eole-monappli $ tree
sql
├── conf
│ ├── gen
│ └── passwords
└── gen
</pre>
h4. Création des fichiers de configurations
Pour créer une base de données il faut plusieurs fichiers.
* Un fichier de configuration pour la génération
* Un fichier de configuration pour la gestion des mots de passe d'accès à la base
* Les scripts SQL pour la création et l'initialisation de la base de donéés
h5. Fichier de Configuration pour la génération :
Ce fichier contiens les instructions nécessaire à la génération de la bases en voici un exemple :
<pre><code class="python">
#-*-coding:utf-8-*-
###########################################################################
# Eole NG - 2011
# Copyright Pole de Competence Eole (Ministere Education - Academie Dijon)
# Licence CeCill cf /root/LicenceEole.txt
# eole@ac-dijon.fr
#
# gepi.py
#
# Création de la base de données mysql de gepi
#
###########################################################################
"""
Config pour gepi
"""
from eolesql.db_test import db_exists, test_var
GEPI_TABLEFILENAMES = ['/usr/share/eole/mysql/gepi/gen/gepi-create-0-initeole.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-1-structure.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-2-data.sql',
'/usr/share/eole/mysql/gepi/gen/gepi-create-3-ajouteole.sql']
def test():
"""
test l'existence de la base gepi
"""
return test_var('activer_gepi') and not db_exists('gepi')
conf_dict = dict(filenames=GEPI_TABLEFILENAMES,
test=test)
</code></pre>