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.
Deployer mon API Node avec webhook
By NicoHash
Deployer mon API Node avec webhook
- 44