DeployBot : présentation et mise en place de l’outil pour faciliter le déploiement de vos projets !

Présentation et mise en place de l’outil DeployBot pour faciliter le déploiement de vos projets
thomasC.jpg
Thomas CHABOUDMis à jour le 15 Mai 2020
deploybot c'est quoi définition

DeployBot, c’est quoi ?

DeployBot est un outil de déploiement automatisé. Cela signifie qu’il n’y a plus besoin de s’embêter avec les problématiques de déploiement sur les serveurs pour nos différents projets... DeployBot s’occupe de tout ! Il suffit de lui indiquer la marche à suivre et lors d’un push sur votre repository git, DeployBot déploie au bon endroit et de la manière indiquée !

Deploybot : pourquoi c’est un bon outil ?

DeployBot est un outil pratique pour la gestion des déploiements ! Etant graphique, il devient plus facile de mettre en place un projet, d’ajouter des environnements, des serveurs, et de définir toutes les étapes, là où d’autres intégrations continues nécessitent du code. Cela permet également de regrouper tous les déploiements sur une seule plateforme.

Cependant, l’offre gratuite ne permet que de découvrir la solution et non de l’utiliser sur le long terme (10 déploiements étant trop restreint pour cela).

Mettre en place Deploybot, comment ça marche ?

Côté DeployBot

Pour mettre en place le déploiement automatique avec DeployBot sur un de vos projets, il suffit de se connecter sur le site DeployBot (un compte est nécessaire). Une fois connecté, nous avons la possibilité de créer des repositories*. 

creation_nouveau_repo.png

On choisit alors la plateforme sur laquelle est hébergé le Git. 3 options sont proposées : GitHub, BitBucket et Others.

Pour GitHub et BitBucket, on indique le compte avec lequel on souhaite accéder à ce Git. Ce compte doit avoir les droits d’administrateur sur le repository pour que DeployBot puisse s’y connecter. On choisit ensuite dans la liste, le repository souhaité (les repository proposés sont ceux auxquels le compte choisit peut accéder).

Si votre repository Git est hébergé ailleurs, choisissez l’option Others. Vous devrez alors saisir l’url de votre repository Git ainsi que la façon dont vous souhaitez vous connecter (Clé SSH ou Login/Mot de passe).

Enfin, on indique le nom du repository sur DeployBot et une couleur pour le différencier plus facilement des autres.

ndlr : DeployBot est gratuit pour le premier repository avec un maximum de 10 serveurs et 10 déploiements. Au-delà, il sera nécessaire de souscrire à un abonnement payant

Les environnements

Après la création du projet, il faut définir un environnement. Les environnements correspondent par exemple à une recette ou une production.

Lors de la création d’un environnement, vous avez la possibilité de choisir si le déploiement sera automatique ou manuel.

  • Automatic : le déploiement est effectué à chaque push sur la branche souhaitée de votre repository.
  • Manual : Le déploiement est effectué sur action de l’utilisateur (utile pour les environnements de production).

Les serveurs de déploiement

A la création d’un projet DeployBot, vous aurez la possibilité de définir un ou plusieurs serveurs sur lesquels seront déployés vos projets. Ces serveurs sont spécifiques à votre environnement (RecetteUn environnement de test ayant les mêmes conditions que l'environnement de prod, qui permet aux utilisateurs de tester les développements., Production,...). Lors d’un déploiement, DeployBot lancera celui-ci sur chaque serveur actif. Si vous ne souhaitez pas déployer sur un serveur, il est possible de le mettre en pause, on aura alors un message indiquant que le serveur est en pause avec l’identifiant du dernier commit déployé sur celui-ci. 

serveur_running.png
 
serveur_paused.png

Les types de déploiement

DeployBot propose plusieurs types de déploiement, allant du SFTP au déploiement sur des instances AWS, tout en laissant la possibilité de faire son déploiement spécifique. 

deploiement_possible.png

DeployBot propose également un type de déploiement appelé "Atomic SFTP" qui permet de garder les X dernières versions déployées (X étant défini par vous) et de jouer avec des liens symboliques pour pointer sur la dernière version. L’architecture est la suivante :

  • current: Il s’agit d’un lien symbolique vers la version actuelle de votre application (il s’agit du dernier déploiement effectué avec succès).

  • releases: C’est un dossier contenant les X derniers déploiements, chaque sous-dossier contient un déploiement et porte le nom du timestamp correspond à la date du déploiement.

  • deploy_cache: Dossier contenant les derniers éléments déployés.

  • shared: Dossier contenant les ressources partagées par les releases (dans chaque release se trouvera un lien symbolique vers ce dossier)

Les scripts

Pour vos besoins spécifiques, DeployBot vous permet de définir des scripts shell à exécuter avant et/ou après le déploiement. 

pre-and-post-launch-commands.png

Les fichiers de configuration

DeployBot vous permet de définir des fichiers de configuration qui seront ajoutés lors du déploiement. Cela permet de définir des fichiers avec des informations spécifiques à l’environnement de production, de recette, de développement,... sans avoir à les gérer directement dans le projet ! Ces fichiers sont en général le .env en php, le wp-config.php pour des projets Wordpress ou encore le environment.ts pour des projets Angular. On peut donc déployer un même projet sur des environnements différents.

Côté Git

Sur la plateforme sur laquelle est hébergé votre repository Git, il est nécessaire d’ajouter la clé de déploiement de DeployBot. Celle-ci vous est indiquée lors de la création d’un projet DeployBot. Pour cela, rendez-vous dans les paramètres de votre gestionnaire Git pour y ajouter la clé, en y indiquant le nom que vous souhaitez lui donner : 

new_deploy_key.png

Il faut ensuite effectuer un premier commit sur votre repository, cela permettra de configurer la branche avec laquelle vous souhaitez déclencher un déploiement lors d’un push.

Enfin, une fois que la configuration est faite sur DeployBot, il ne vous reste plus qu’à ajouter le WebHook sur votre repository Git. Cela permet à Git de notifier DeployBot lors d’un commit sur la branche souhaitée, pour que celui-ci déclenche le déploiement. Pour cela, rendez-vous dans également dans les paramètres dans le menu pour ajouter un WebHook. Il vous sera demandé de renseigner l’URLUniform Ressource Locator que vous aurez récupérer sur DeployBot ainsi que le type d’event pour déclencher la notification (ici push sur une branche). Il est également possible de lancer le déploiement uniquement lors de push comprenant un tag. 

new_webhook.png

Et le tour est joué, vous n’avez plus qu’à coder :)

Astuces pour l’utilisation de Deploybot

Vérifier les droits de l’utilisateur

Vérifiez bien que l’utilisateur avec lequel DeployBot se connecte ait les droits nécessaires sur le serveur. Cela comprend les droits d’écriture, de modification et de suppression sur les dossiers du projet à déployer ; mais aussi, le droit d’exécuter des scripts shell si vous souhaitez en écrire.

La liste des IP est fournie

Pour les serveurs avec des filtres sur les ip, DeployBot met à disposition la liste de toutes les adresses ip, récupérable ici, qu’il peut utiliser.

Scripts shell

Dans le cas d’utilisation de scripts shell, faites attention à ne pas utiliser de code qui demande des entrées utilisateurs, cela bloquera le déploiement car DeployBot ne pourra pas y répondre.

Rollbacks

Il est possible de faire des rollbacks vers une version plus ancienne dans le cas où un déploiement ne se serait pas bien passé. A noter que pour les déploiements Aomic SFTP, DeployBot met à jour le dossier current (donc la version actuelle de votre application) uniquement si toutes les étapes du déploiement ont été réalisées avec succès, y compris les scripts que vous avez écrit !

Deploybot : avantages et inconvénients

Après avoir testé Deploybot sur plusieurs contextes, voilà un tableau récapitulatif des principaux avantages et inconvénients de l’outil.

Les avantages Les inconvénients
Interface facile d’utilisation Déploiement sur Azure pas encore disponible
Permet de déployer de nombreux types de projets Seulement 1 projet et 10 déploiements pour la version gratuite
Pas de mise en maintenance requise pour les déploiements type Atomic SFTP Les serveurs de DeployBot sont parfois surchargés, ce qui peut faire que des déploiements restent en attente

Pour aller plus loin

C’est déjà la fin de cet article ! Il existe pourtant encore de nombreux points que nous n’avons pas abordé ici. Si vous souhaitez plus d’informations sur le sujet, je vous invite à consulter le site officiel de DeployBot à l’adresse suivante : https://deploybot.com/