doc/packaging_apps_fr.md

156 lines
7.9 KiB
Markdown
Raw Normal View History

2015-11-17 21:57:03 +01:00
# Packaging dapplications <img src="https://yunohost.org/images/yunohost_package.png" width=100/>
2013-11-27 13:19:13 +01:00
2015-06-18 19:12:22 +02:00
Ce document a pour but de vous apprendre à packager une application pour YunoHost.
### Prérequis
Pour packager une application, voici les prérequis :
* Un compte sur un serveur git comme [GitHub](https://github.com/) pour pouvoir ensuite publier lapplication ;
2015-06-18 19:59:22 +02:00
* Maîtriser un minimum `git`, le Shell et dautres notions de programmation ;
2015-06-18 19:12:22 +02:00
* Une [machine virtuelle ou sur un serveur distant](/install_fr) pour packager et tester son paquet.
### Contenu
2015-06-18 19:12:22 +02:00
Un paquet YunoHost est composé :
2015-06-18 19:12:22 +02:00
* dun `manifest.json`
* dun dossier `scripts`, composé de cinq scripts Shell `install`, `remove`, `upgrade`, `backup` et `restore`
2015-06-18 19:59:22 +02:00
* de dossiers optionnels, contenant les `sources` ou de la `conf`
* dun fichier `LICENSE` contenant la licence du paquet
* dune page de présentation du paquet contenu dans un fichier `README.md`
2016-02-19 12:11:39 +01:00
<a class="btn btn-lg btn-default" href="https://github.com/YunoHost/example_ynh">Paquet de base</a> nhésitez pas à vous en servir comme base de travail.
2014-11-04 09:37:21 +01:00
2016-01-26 17:29:42 +01:00
## Manifeste
<a class="btn btn-lg btn-default" href="packaging_apps_manifest_fr">Manifeste</a>
## Les scripts
2016-02-19 12:22:46 +01:00
<a class="btn btn-lg btn-default" href="packaging_apps_scripts_fr">Scripts</a>
### Architecture et arguments
2016-01-30 22:00:44 +01:00
Comme les instances de YunoHost possèdent une architecture unifiée, vous serez capable de deviner la plupart des réglages nécessaires. Mais si vous avez besoin de réglages spécifiques, comme le nom de domaine ou un chemin web pour configurer lapplication, vous devrez les demander aux administrateurs lors de linstallation (voir la section `arguments` dans le § **Manifeste** ci-dessus).
2016-01-26 20:27:17 +01:00
<a class="btn btn-lg btn-default" href="packaging_apps_arguments_management_fr">Gestion des arguments</a>
2016-01-30 19:09:53 +01:00
### Configuration Nginx
<a class="btn btn-lg btn-default" href="packaging_apps_nginx_conf_fr">Configuration Nginx</a>
2013-12-01 15:20:40 +01:00
### Commandes pratiques
2015-06-18 19:12:22 +02:00
La CLI [moulinette](/moulinette) fournit quelques outils pour faciliter le packaging :
<br>
```bash
sudo yunohost app checkport <port>
```
<blockquote>
2015-06-18 14:16:39 +02:00
Cette commande vérifie le port et retourne une erreur si le port est déjà utilisé.
</blockquote>
<br>
```bash
sudo yunohost app setting <id> <key> [ -v <value> ]
```
<blockquote>
2016-01-30 22:00:44 +01:00
C'est la commande la plus importante. Elle vous permet de stocker des réglages dune application spécifique, afin de les réutiliser plus tard (typiquement dans le script ```upgrade```) ou pour que YunoHost puisse se configurer automatiquement (par exemple pour le SSO).
<br><br>
2014-01-23 10:46:19 +01:00
La commande définit la valeur si vous ajoutez ```-v <valeur>```, sinon la récupère.
2014-06-21 16:08:47 +02:00
<br><br>
** Quelques paramètres pratiques **<br><br>
```skipped_uris```<br><br>
2016-01-30 22:00:44 +01:00
Indique à SSOwat de ne pas soccuper de la liste duris fournies séparées par des virgules. Celles-ci ne seront donc pas protégées et ne pourront pas utiliser le mécanisme dauthentification centralisée.<br><br>
2014-06-21 16:08:47 +02:00
```protected_uris```<br><br>
2016-01-30 22:00:44 +01:00
Protège la liste duris fournies séparées par des virgules. Seul un utilisateur connecté y aura accès.<br><br>
2014-06-21 16:08:47 +02:00
2015-11-07 00:03:11 +01:00
```unprotected_uris```<br><br>
2016-01-30 22:00:44 +01:00
Indique à SSOwat de ne pas soccuper de la liste duris fournies séparées par des virgules que si lutilisateur est connecté. Ces uris sont donc publiquement accessibles mais peuvent utiliser le mécanisme dauthentification centralisée.<br><br>
2015-11-07 00:03:11 +01:00
2014-06-21 16:08:47 +02:00
Il existe aussi `skipped_regex`, `protected_regex`, `unprotected_uris`, `unprotected_regex`.<br><br>
**Attention** : il est nécessaire de lancer `yunohost app ssowatconf` pour appliquer les effets. Les uris seront alors converties en urls et écrites dans le fichier /etc/ssowat/conf.json.<br><br>
2015-06-18 19:12:22 +02:00
Exemple :<br>
```yunohost app setting myapp unprotected_urls -v "/"```<br>
```yunohost app ssowatconf```<br>
2016-01-30 22:00:44 +01:00
Ces commandes vont désactiver le SSO sur la racine de laplication soit domain.tld/myapp, ceci est utile pour une application publique.
</blockquote>
<br>
```bash
sudo yunohost app checkurl <domain><path> -a <id>
```
<blockquote>
2016-01-30 22:00:44 +01:00
Cette commande est utile pour les applications web et vous permet dêtre sûr que le chemin nest pas utilisé par une autre application. Si le chemin est inutilisé, elle le « réserve ».
<br><br>
2014-07-23 17:44:24 +02:00
**Remarque** : ne pas préfixer par `http://` ou par `https://` dans le `<domain><path>`.
</blockquote>
<br>
```bash
2014-01-23 10:46:19 +01:00
sudo yunohost app initdb [ -d <db_name> ] [ -s <SQL_file> ] [ -p <db_pwd> ] user
<db_user> [ -p <db_pwd> ] [ -s <SQL_file> ]
```
<blockquote>
2014-01-23 10:46:19 +01:00
Cette commande crée une base de donnée `db_name` et un utilisateur `user` associé à cette base, possédant les permissions nécessaires à manipuler la base de donnée.
<br>
Si vous ne définissez pas de nom de base de donnée avec `-d <db_name>`, `user` est utilisé comme nom de base de donnée.
<br>
Si vous ne définissez pas de mot de passe avec `-p`, la commande en génère un et le retourne.
<br>
Si vous ajoutez un fichier SQL avec `-s`, la commande initialise la base de donnée avec les commandes SQL du fichier.
</blockquote>
<br>
```bash
sudo yunohost app ssowatconf
```
<blockquote>
2016-01-30 22:00:44 +01:00
Cette commande régénère la configuration du SSO. Vous devez lappeler à la fin des scripts lorsque vous packagez une application Web.
</blockquote>
2015-06-18 19:12:22 +02:00
### Tests
2016-01-30 22:00:44 +01:00
Afin de tester votre paquet, vous pouvez exécuter votre script en tant qu`admin` (n'oubliez pas dajouter les arguments requis) :
```bash
2014-07-23 17:44:24 +02:00
su - admin -c "/bin/bash /répertoire/de/mon/script my_arg1 my_arg2"
```
2013-12-01 15:20:40 +01:00
Ou vous pouvez utiliser la moulinette :
```bash
2014-07-23 17:44:24 +02:00
yunohost app install /répertoire/de/mon/paquet
```
Remarque : ça fonctionne aussi avec une URL Git :
```bash
2014-07-23 17:44:24 +02:00
yunohost app install https://github.com/auteur/mon_paquet.git
```
2015-08-10 01:11:35 +02:00
2015-08-10 17:57:03 +02:00
### Améliorer la qualité du paquet dinstallation
Vous trouverez ci-dessous une liste des point à vérifier concernant la qualité de vos scripts :
* Vos scripts utilisent bien `sudo cp -a ../sources/. $final_path` plutôt que `sudo cp -a ../sources/* $final_path` ;
2016-01-30 22:00:44 +01:00
* Votre script dinstallation contient une gestion en cas derreurs du script pour supprimer les fichiers résiduels à laide de `set -e` et de `trap` ;
* Votre script dinstallation utilise une méthode dinstallation en ligne de commande plutôt quun appel curl via un formulaire web dinstallation ;
* Votre script dinstallation enregistre les réponses de lutilisateur ;
2015-08-10 17:57:03 +02:00
* Vous avez vérifié les sources de lapplication avec une somme de contrôle (sha256, sha1 ou md5) ou une signature PGP ;
* Vos scripts ont été testé sur Debian Jessie ainsi que sur les architectures 32 bits, 64 bits et ARM ;
2015-08-10 17:57:03 +02:00
* Les scripts backup et restore sont présents et fonctionnels.
2015-08-10 01:11:35 +02:00
2016-02-24 21:28:39 +01:00
### Script de vérification du paquet
<a class="btn btn-lg btn-default" href="https://github.com/YunoHost/package_checker">Vérificateur de paquets</a>
Il sagit dun script Python qui vérifie :
* que le paquet est à jour concernant les dernières spécifications
* que tous les fichiers sont présent
* que le manifeste ne comporte pas derreur de syntaxe
* que les scripts quittent avant de modifier le système.
2015-06-18 19:12:22 +02:00
### Publiez et demandez des tests de votre application
2015-10-06 00:24:18 +02:00
* Demandez des tests et des retours sur votre application en publiant un [post sur le Forum](https://forum.yunohost.org/) dans la [catégorie `App integration`](https://forum.yunohost.org/c/app-integration).
2015-06-18 19:12:22 +02:00
2015-12-03 11:56:29 +01:00
* Faire une demande dajout de votre application dans le [dépôt des applications](https://github.com/YunoHost/apps) afin quelle soit affichée dans [la liste des apps non officielles](https://yunohost.org/#/apps_in_progress_en). Préciser également son état davancement : `notworking`, `inprogress` ou `working`
2014-09-13 15:30:47 +02:00
2015-06-18 19:59:22 +02:00
### Officialisation dune application
Pour quune application devienne officielle, elle doit être suffisamment testée, stable et fonctionner sous les architectures 64 bits, 32 bits et ARM sur Debian Jessie. Si ces conditions vous paraissent réunies, demandez l[intégration officielle](https://github.com/YunoHost/apps) de votre application.