Header

Koffi Sani on Code

Permettez que je parle ici de ma vie de concepteur de logiciels

Déployer ses applications avec Envoy et Gitlab ou Github

· Code · Development, Deployment

Attention !!! Je vous encourage fortement à mettre en oeuvre des environnements de tests, d’intégration et de déploiement continus.

Vous pourrez tomber sur un projet où le besoin nait d’automatiser certaines actions. C’est ce qui m’est arrivé tout dernièrement avec un projet déjà avancé pour lequel les configurations d’intégration continue nécessitent beaucoup de précautions pour ne pas engendrer des conséquences collatérales.

J’ai donc pensé à utiliser Envoy, une librairie de Laravel qui peut s’utiliser pour n’importe quel projet PHP.

Envoy, que sa quo ?

Envoy est une librairie du framework populaire Laravel de PHP. Il fournit une syntaxe propre et minimaliste pour exécuter des tâches sur des serveurs distants.

Installation

Bien que Envoy soit développé par la communauté Laravel, il ne fonctionne pas que sur ce framework. Tout projet PHP, utilisant le gestionnaire de dépendances composer peut l’utiliser. Il suffit à cet effet d’exécuter la commande suivante en ligne de commande :

composer require laravel/envoy --dev

ou plus globalement :

composer global require laravel/envoy

Dans le second cas, il faut s’assurer que le dossier des exécutables de composer (~/.composer/vendor/bin) soit dans le PATH.

Automatisation des tâches

Les tâches à automatiser doivent se trouver dans un fichier Envoy.blade.php à la racine du projet. Nous créons donc ce fichier en y ajoutant le contenu suivant:

@servers(['test' => 'user@test.example.com'])

@task('test_ls', ['on' => 'test'])
    ls -la
@endtask

Un petit tour d’horizon :

Exécution de la tâche

Pour exécuter la tâche, il faut en invite de commande lancer :

vendor/bin/envoy run test_ls

Ceci exécute la tâche test_ls. Dans l’ordre :

Tâche de déploiement

Généralités

Autrefois, le déploiement se faisait via des connexions FTP. Puis, du SFTP, rsync ou scp. Mais lorsqu’on veut une fluidité et délicatesse dans le déploiement, il s’avère nécessaire de revoir le scénario.

L’utilisation des outils de versionnement est d’une grande utilité pour le développeur. Ceci lui permet beaucoup de choses qu’il n’aurait pu faire sans eux. Lorsqu’on a son code en ligne sur un serveur Gitlab ou Github, on peut utiliser des clés de déploiement pour déploier ses projets.

Les clés de déploiement sont des clés SSH que l’on génère sur le serveur de destination et dont la partie publique est fournie à Gitlab ou Github. Cette clé renseignée dispose d’un accès en lecture (par défaut) au projet et l’on peut initier un clone ou un pull en se connectant avec la clé, donc depuis le serveur.

Clé de déploiement

Pour générer une clé SSH, il faut se connecter au serveur et exécuter la commande suivante :

ssh-keygen -t ed25519 -C "votre adresse email"

Une série de questions vous seront posées auxquelles vous répondez. Vous pouvez avoir des détails ici.

Il faut alors ajouter cette clé à votre serveur de gestion de version.

Adaptation de la tâche

Nous adaptons notre tâche ici afin de bien atteindre nos objectifs. Nous convenons d’effectuer un premier déploiement manuel avant d’automatiser le reste. Ceci consiste à clone le projet pour une première fois sur le serveur à l’aide de Git. Et le reste des tâches consiste à faire un pull de la branche adéquate ou du tag adéquat.

Ainsi, nous obtenons le script suivant :

@servers(['test' => 'user@test.example.com'])

@task('test_ls', ['on' => 'test'])
    git pull origin master
    composer update
    # Exécution d'éventuelles migrations
@endtask

Voilà. Dans un prochain article, j’aborderai comment utiliser une clé SSH en local au lieu de l’authentification à l’aide du mot de passe.

LINKEDIN

© 2021. Tout droit réservé.