Vendredi 23 novembre 2018

ynh-dev - Yunohost dev environnement manager

https://build.yunohost.org/
https://github.com/yunohost/vagrantfile

ynh-dev est un outil CLI pour gérer votre environnement de développement local pour YunoHost. Ceci vous permet de développer sur les différents contenus du projet YunoHost.

En particulier, il permet de :

  • Créer un répertoire avec un clone de chaque dépôt du projet YunoHost;
  • Remplacer les paquets debian yunohost déjà installés par des liens symboliques vers ces clones git;
  • Gérer les instances yunohost sur votre machine hôte avec Vagrant par:
    • la création d’un VM Vagrant avec un système Yunohost préinstallé
    • le partage de l’environnement dev avec celui du VM de votre hôte (vous pouvez donc développer directement sur votre hôte)
    • trouver l’adresse IP de votre yunohost vagrant vm

yhn-dev peut être utilisé:

  • sur votre machine locale avec VMs (plus confortable)
  • sur une machine distante dédiée au développement (par exemple si vous avez besoin que le VM soit exposé sur internet: test let’s crypt, pile de courriels…)

Développez sur votre machine locale

Voici le flux de développement:

  • [Première fois] Setup ynh-dev et l’environnement de développement
  • Créer ou exécuter une instance yunohost vagrant
  • Mise à niveau, post-installation et déploiement de la version de développement à partir des référentiels (repositories)
  • Développez sur votre hôte
  • Test via le CLI ou webadmin
  • Suspendre ou tuer votre vm

1. [Première fois] Setup ynh-dev et l’environnement de développement

Ces opérations doivent être effectuées sur la machine hôte.

Dépendances d’installation

Debian, Ubuntu, Mint

sudo apt-get install vagrant virtualbox git

Fedora

sudo dnf install vagrant git

Installer Virtualbox 5.1.x

Archlinux, Manjaro
sudo pacman -S vagrant virtualbox git
sudo pacman -S linux44-virtualbox-host-modules
sudo modprobe vboxdrv
sudo modprobe vboxnetadp
sudo insmod /lib/modules/4.4.33-1-MANJARO/extramodules/vboxnetflt.ko.gz 
sudo insmod /lib/modules/4.4.33-1-MANJARO/extramodules/vboxnetadp.ko.gz

Si git, virtualbox et ses modules sont installés

sudo pacman -S vagrant

Installer ynh-dev

cloner le repo ynh-dev

git clone https://github.com/YunoHost/ynh-dev
cd ynh-dev

Créer l’environnement

Cette commande crée un clone de tous les principaux dépôts git de Yunohost

./ynh-dev create-env ./

2. Créer ou exécuter une instance vagrant yunohost

Cette commande est une aide pour exécuter une machine virtuelle Vagrant au bon endroit avec YunoHost préinstallé.

./ynh-dev run yolo.test unstable

La commande run prend 2 arguments: domain et la version YunoHost.

Après avoir lancé le conteneur, vous serez automatiquement connecté à l’intérieur d’une nouvelle VM yunohost ou à l’intérieur de la VM précédemment suspendue. Dossier partagé entre l’hôte et les machines virtuelles

Une fois connecté à la VM, vous pouvez aller dans /vagrant et trouver tous les fichiers de votre environnement de développement, y compris le script ynh-dev lui-même.

3. Mettre à jour et configurer votre instance dev

Selon ce que vous avez l’intention de développer ou de tester, il se peut que vous deviez procéder à une mise à niveau avant une post-installation.

Par exemple, si vous voulez:

  • tester une application => mise à niveau et post-installation (upgrade and postinstall)
  • tester un code commun => mettre à niveau, installer et déployer votre code (upgrade, postinstall and deploy your code)
  • tester l’impact d’un code source sur post-installation => mettre à niveau, déployer votre code, post-installation (upgrade, deploy your code, postinstall)

Mise à niveau (Upgrade)

Si le conteneur n’est pas à jour, vous pouvez exécuter la commande suivante pour mettre à jour les paquets debian, y compris ceux de YunoHost.

/vagrant/ynh-dev upgrade

Utilisez vos dépôts git à la place du paquet debian

Lors de la commande create-env, chaque paquet YunoHost a été cloné dans le chemin d’accès correspondant. Vous pouvez lier votre VM pour utiliser ces clones git de telle sorte que les modifications que vous apportez au code sont directement utilisées dans la VM:

/vagrant/ynh-dev use-git PACKAGE

PACKAGE peut être ssowat, yunohost, moulinette ou yunohost-admin. Vous pouvez exécuter use-git plusieurs fois en fonction de ce que vous voulez développer précisément.

Remarque: L’opération use-git ne peut pas être annulée maintenant. NE FAITES PAS ÇA EN PRODUCTION!

Postinstall

Si vous avez besoin d’un YunoHost correctement installé pour développer et tester, vous voulez probablement lancer le postinstall maintenant:

(sudo) yunohost tools postinstall -d yolo.test

4. Développez sur votre hôte

A ce stade, vous pouvez coder sur votre machine hôte, avec l’EDI de votre choix.
Tout changement sera disponible sur le conteneur à l’intérieur du dossier partagé /vagrant.

5. Tester les modifications via le CLI ou l’interface web

Tests en CLI

Si vous avez exécuté use-git, toutes les modifications sur les clones git locaux sont automatiquement disponibles dans votre VM, de sorte que vous pouvez exécuter n’importe quelle commande yunohost foo bar.

Teste l’interface web

Vous devriez pouvoir accéder à l’interface web via l’adresse IP du conteneur vagrant. L’IP peut être connu de l’intérieur du conteneur avec:

/vagrant/ynh-dev ip

Si vous voulez accéder à l’interface en utilisant le nom de domaine, vous devez modifier votre /etc/hosts et ajouter une ligne telle que:

111.222.333.444 yolo.test

6. Suspendre ou tuer votre vm

Lorsque vous avez terminé ou si vous voulez éteindre votre ordinateur, vous devez éteindre ou suspendre le VM.
Pour tuer le VM, il suffit de le faire sur votre hôte:

cd /path/to/dev/env
vagrant destroy unstable
# or
./ynh-dev kill

Pour suspendre la VM:

cd /path/to/dev/env
vagrant suspend unstable

Développer sur un serveur distant

Tout d’abord, vous devez comprendre qu’il s’agit d’un outil de développement: vous ne devez pas l’exécuter sur un environnement de production!

Ce cas vous permet d’utiliser ynh-dev sur un vm exposé sur Internet. Cela peut être utile lorsque vous testez des fonctionnalités pour lesquelles le serveur doit être accessible à partir de l’ensemble d’Internet (p. ex. installation du certificat Let’s Encrypt, ou des fonctionnalités liées au courrier électronique). Une alternative est d’utiliser un VPN (vpnclient_ynh) avec un IPv4.

Le flux de développement est assez similaire à la première méthode:

  • [première fois] Configurez ynh-dev et installez une copie de chaque dépôt git
  • Mise à niveau, post-installation et déploiement de la version de développement à partir des référentiels (repositories)
  • Code sur votre hôte
  • Test par cli sur l’instance ou test sur votre navigateur hôte

1. Configuration

Il est possible de configurer ynh-dev dans une instance existante de YunoHost plutôt que de créer un vm vagrant avec ynh-dev. Dans ce cas particulier, vous devez configurer votre env à l’intérieur d’un répertoire /vagrant/ même si vous n’utilisez pas vagrant.

sudo apt-get install git
git clone https://github.com/YunoHost/ynh-dev /vagrant/
cd /vagrant/

2. Mise à niveau, post-installation et utilisation des dépôts git

Identique à “3. Mettre à jour et configurer votre instance dev”, mais attention de ne pas postinstaller sur un yunohost déjà postinstallé!

Important, lorsque vous utilisez les dépôts git, vous ne pouvez pas faire l’opération inverse simplement… (Pour le faire, vous devez attendre une mise à jour du package concerné)

3. Code sur l’instance directement

Contrairement à la première méthode, vous n’avez pas de dossier de partage, donc vous devez développer dans l’instance. Alternativement, vous pouvez explorer la possibilité de configurer sshfs ou ce type de solution.

4. Test

Identique à “5. Tester les modifications via le CLI ou l’interface web”, mais ynh-dev ip ne fonctionne pas. Vous devriez préférer cette commande pour trouver votre adresse IP:

ip addr

Gardez à l’esprit que si vous utilisez votre fichier /etc/hosts, let’s encrypt ou un autre service pourrait ne pas accéder à la VM. Vous devez donc probablement configurer un domaine correct.