2015-11-17 21:57:03 +01:00
# Packaging d’ applications <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 :
2015-12-21 14:13:10 +01:00
* Un compte sur un serveur git comme [GitHub ](https://github.com/ ) pour pouvoir ensuite publier l’ application ;
2015-06-18 19:59:22 +02:00
* Maîtriser un minimum `git` , le Shell et d’ autres 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.
2013-12-01 14:43:33 +01:00
### Contenu
2015-06-18 19:12:22 +02:00
Un paquet YunoHost est composé :
2013-12-01 14:43:33 +01:00
2015-06-18 19:12:22 +02:00
* d’ un `manifest.json`
* d’ un 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`
* d’ un fichier `LICENSE` contenant la licence du paquet
* d’ une page de présentation du paquet contenu dans un fichier `README.md`
2013-12-01 14:43:33 +01:00
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 > n’ hé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 >
2013-12-01 14:43:33 +01:00
## Les scripts
2016-02-19 12:22:46 +01:00
< a class = "btn btn-lg btn-default" href = "packaging_apps_scripts_fr" > Scripts< / a >
2013-12-01 14:43:33 +01:00
### 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 l’ application, vous devrez les demander aux administrateurs lors de l’ installation (voir la section `arguments` dans le § **Manifeste** ci-dessus).
2013-12-01 14:43:33 +01:00
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 >
2013-12-01 14:43:33 +01:00
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
2016-02-24 21:57:24 +01:00
< a class = "btn btn-lg btn-default" href = "packaging_apps_helpers_fr" > Commandes pratiques< / a >
2015-08-10 01:11:35 +02:00
2015-08-10 17:57:03 +02:00
### Améliorer la qualité du paquet d’ installation
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 d’ installation contient une gestion en cas d’ erreurs du script pour supprimer les fichiers résiduels à l’ aide de `set -e` et de `trap` ;
* Votre script d’ installation utilise une méthode d’ installation en ligne de commande plutôt qu’ un appel curl via un formulaire web d’ installation ;
* Votre script d’ installation enregistre les réponses de l’ utilisateur ;
2015-08-10 17:57:03 +02:00
* Vous avez vérifié les sources de l’ application avec une somme de contrôle (sha256, sha1 ou md5) ou une signature PGP ;
2016-02-20 14:55:55 +01:00
* 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 s’ agit d’ un script Python qui vérifie :
* que le paquet est à jour concernant les dernières spécifications
2016-02-24 21:30:11 +01:00
* que tous les fichiers sont présents
2016-02-24 21:28:39 +01:00
* que le manifeste ne comporte pas d’ erreur de syntaxe
2016-02-24 21:30:11 +01:00
* que les scripts quittent bien avant de modifier le système lors de vérifications.
2016-02-24 21:28:39 +01:00
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 d’ ajout de votre application dans le [dépôt des applications ](https://github.com/YunoHost/apps ) afin qu’ elle soit affichée dans [la liste des apps non officielles ](https://yunohost.org/#/apps_in_progress_en ). Préciser également son état d’ avancement : `notworking` , `inprogress` ou `working`
2014-09-13 15:30:47 +02:00
2015-06-18 19:59:22 +02:00
### Officialisation d’ une application
2016-02-20 14:55:55 +01:00
Pour qu’ une 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.