Deployer mon API Node avec webhook

Prérequis

Nous avons besoin de docker ainsi que docker compose sur notre machine dans un premier temps sinon rien ne sera possible...

 

Suivez ce lien pour effectuer l'installation de docker :

https://slides.com/nicohash/install-docker

Suivez ce lien pour effectuer l'installation de docker compose :

https://slides.com/nicohash/install-docker-debian-9

 

Goal

Le but de ce cours est d'automatiser la mise en production de notre API

Notre API est accompagnée d'une base de données MongoDB et le tout est géré via docker-compose

Mise en route

step 1 : se connecter au serveur en ssh

step 2 : se rendre dans le dossier webhooks

step 3 : créer un fichier .sh pour déployer l'API

step 4 : ajouter ce script dans le fichier hooks.json

Mise en route

Connexion au serveur via ssh

Connexion au serveur réussie

Cloner le projet

cd /home/debian

maintenant que nous sommes dans le bon répertoire

git clone https://github.com/nicolashedoire/walkingfeet-api.git

Mise en route

Se rendre dans le dossier webhooks

Créer un nouveau script pour notre API

chmod +x ~/webhooks/deploy-api.sh

Appliquer les droits sur ce fichier

Mise en route

Edition de notre script deploy-api.sh

sudo nano ~/webhooks/deploy-api.sh

Que vas-t-on écrire dans ce fichiers ?

Testons notre script

Ici, on constate que la commande docker-compose down stoppe et supprime les conteneurs. Comme il n'y a pas de modifications dans mon code, la commande git pull m'affiche "Already up-to-date" et enfin la commande docker-compose up -d --force-recreate recrée les conteneurs.

Voir les logs de notre API

docker logs -f walkingfeetApi

Voir les logs de notre base de données

docker logs -f mongodb

Voir les logs de notre API

On peut voir que notre API est disponible sur le port 5004 et la connexion à la base de données est établie. Attention http et pas https  ou http://151.80.60.139:5004/

Voir les logs de notre base

Test de connexion avec Robo 3T

On indique l'IP de la machine ainsi que le port de la base par défaut (27017)

Test de connexion avec Robo 3T

On constate ici que notre test est un succès

Test de connexion avec Robo 3T

On voit bien que l'on a ici accès au données dans la base. Nous avons la collection users.

Ajouter notre hook

sudo nano ~/webhooks/hooks.json

Editer le fichier hooks.json

[
  {
    "id": "deploy-api",
    "execute-command": "/home/debian/webhooks/deploy-api.sh",
    "command-working-directory": "/home/debian/webhooks",
    "response-message": "Executing deploy-api script..."
  }
]

Note : ne pas utiliser ~/ pour le chemin des fichiers

Le fichier hooks.json

Nous pouvons chainer les hooks étant donné que nous avons un tableau d'objets. Nous avons donc un hook pour déployer l'api ainsi que la base de données et un hook permettant de déployer le front.

Test du hook

On peut constater que l'appel au hook ne fonctionne pas correctement. La cause est tout simplement parce que nous passons par le nom de domaine en HTTPS.

Test du hook

Nous allons essayer avec l'adresse IP de la machine sur le protocole http

Et la miracle ! Cela fonctionne parfaitement.

Cabler notre webhook à Github

Nous ajoutons l'url permettant de déclencher le hook.

Made with Slides.com