Les bonnes pratiques du développement d'applications spécifiques

Automatisation des tests et des déploiements en ligne de commande (CLI)

Posted by JÉRÔME AUGÉ on 19 sept. 2016 13:00:00
Find me on:

Le CLI "wiff" fournit à présent une palette complète de commandes pour automatiser vos déploiements et vos tests.

En développement, il peut être utile de s'assurer que son application se déploie correctement sur un contexte vierge.

Pour automatiser la création d'un contexte il faut que le service de base de données associé porte le même nom. Pour un contexte nommé "dev" nous devons donc au préalable créer un service postgresql nommé lui aussi "dev" :

vi /etc/postgresql-common/pg_service.conf
[dev]
host=127.0.0.1
port=5432
user=dynacase
password=secret
dbname=dev

Créer ensuite la base de donnée de ce service.

Créer un contexte vierge nommé "dev" dans le répertoire "/var/www/dev":

/var/www/dynacase-control/wiff create context dev /var/www/dev

Brancher le contexte "dev" sur le dépôt de paquet "dynacase" :

/var/www/dynacase-control/wiff context dev repository enable dynacase

Installer automatiquement "dynacase-core" et "dynacase-admin-uis" dans le contexte "dev" :

/var/www/dynacase-control/wiff context dev module install --unattended dynacase-core
Will (i)nstall, (u)pgrade, or (r)eplace the following modules:
- dynacase-core-3.2.20-0 (i)
- dynacase-jquery-installer-1.7.2-1 (i)
- dynacase-jquery-ui-installer-1.8.21-6 (i)
- dynacase-tipsy-installer-1.0.0-1 (i)
- dynacase-json2-1.0.1-0 (i)
- dynacase-datajs-3.2.7-0 (i)
- dynacase-jquery-dataTables-installer-1.9.1-2 (i)
- dynacase-ckeditor-3-installer-3.6.3-3 (i)
- dynacase-ckeditor-4-installer-4.5.3-0 (i)
Proceed with installation ? [Y/n] Y
[...]

/var/www/dynacase-control/wiff context dev module install --unattended dynacase-admin-uis [...]

L'option "--unattended" de la sous-commande "module install", et "module upgrade", permet d'indiquer à dynacase-control d'utiliser automatiquement les choix proposés par défaut pour toutes les demandes de confirmation des modules.

Comme le CLI "wiff" respecte le standard Unix qui veut que le process retourne un exitcode différent de 0 en cas d'erreurs, il vous est alors possible de mettre toutes ces commandes dans un script bash et d'utiliser l'option "set -e" pour terminer le script bash lors de la première erreur rencontrée.

Exemple de script bash pour la création d'un contexte nommé "dev" et l'installation de "dynacase-core" et de votre module spécifique "mon-projet" dans ce contexte en automatique :

#!/bin/bash

set -e
set -x
set -o pipefail

# -- Supprimer le contexte "dev" s'il existe déjà
/var/www/dynacase-control/wiff list context | grep '^dev$' && /var/www/dynacase-control/wiff delete context dev

# -- Créer un nouveau contexte "dev"
/var/www/dynacase-control/wiff create context dev /var/www/dev

# -- Brancher le contexte "dev" sur le dépôt de paquet "dynacase"
/var/www/dynacase-control/wiff context dev repository enable dynacase

# -- Installer "dynacase-core" dans le contexte "dev"
/var/www/dynacase-control/wiff context dev module install --unattended dynacase-core

# -- Installer ensuite le module "mon-projet" à partir d'un fichier
/var/www/dynacase-control/wiff context dev module install --unattended /path/to/mon-projet-1.0.0.webinst

De la même manière, vous pouvez utiliser les commandes de création et de restauration d'archives de contexte pour implémenter des fonctions de "snapshot" et "rollback" pour tester vos mise à jour sur votre machine de développement.

Chez anakeen, nous utilisons tous les jours ces commandes pour lancer des tests unitaires et tester l'installation de nos modules avec la dernière version de dynacase-core.

Pour aller plus loin :

Topics: PHP, Développement PHP, Insider