Le but de ce cours est d'automatiser la mise en production de notre site à chaque fois que l'on pousse des modifications sur Github.
Qu'est ce qu'un webhook ?
Ce cours fonctionne sur Debian 9
- installer git sur la machine
sudo apt install git -y
- installer nodejs
sudo apt-get update
sudo apt install curl -y
cd ~
curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs
nodejs -v
sudo apt-get install webhook
Installation de webhook
mkdir ~/webhooks
Créer un dossier webhooks
Créer un fichier hooks.json
touch ~/webhooks/hooks.json
touch ~/webhooks/deploy.sh
Créer un script .sh
Appliquer les bons droits au script
chmod +x ~/webhooks/deploy.sh
sudo nano ~/webhooks/hooks.json
Editer le fichier hooks.json
[ { "id": "deploy", "execute-command": "/home/debian/webhooks/deploy.sh", "command-working-directory": "/home/debian/webhooks",
"response-message": "Executing deploy script..." } ]
Note : ne pas utiliser ~/ pour le chemin des fichiers
ctrl + x pour sauvegarder le fichier
commande linux pour connaitre le chemin du bash
which bash
Editer le fichier deploy.sh
#!/bin/bash
---> Script in next slide <---
sudo nano ~/webhooks/deploy.sh
#!/bin/sh
sudo rm -rf /home/debian/walkingfeet
sudo rm -rf /var/www/html/*
cd /home/debian
git clone https://github.com/nicolashedoire/walkingfeet.git
cd /home/debian/walkingfeet
npm install
npm run build
sudo cp -r /home/debian/walkingfeet/build/* /var/www/html
sudo rm -rf /home/debian/walkingfeet
Lancer notre webhook
webhook -hooks /home/debian/webhooks/hooks.json -verbose -hotreload -port 9001
On lance la commande webhook en ciblant notre fichier hooks.json avec le flag -verbose afin d'avoir des logs, on active aussi le hotreload en cas de changement dans notre fichier hooks.json et on lance le processus sur le port 9001
Note : le port 9000 peut être déjà occupé alors un switch sur le 9001 est nécessaire
On peut voir que notre hook deploy est prêt
On va tester notre hook dans le navigateur
Nous avons bien une réponse dans les logs
Cabler notre hook sur github
Création du hook avec url du serveur
Le hook a bien été créé !
Automatiser webhook
A chaque fois que l'on se déconnecte du serveur, webhook cesse de fonctionner... C'est un peu embêtant étant donné que l'on souhaite automatiser au maximum les choses.
Solution
Créer un service
Automatiser webhook
Rendons nous dans systemd
et créons notre service
Automatiser webhook
Nous allons éditer le fichier webhook.service
Et écrire ces lignes
Automatiser webhook
On sauvegarde nos modifications
ctrl x puis y et entrée
Automatiser webhook
Activer notre nouveau service
Maintenant on souhaite démarrer le service
Notons que cela ne fonctionne pas
Automatiser webhook
Nous allons aller voir les logs pour voir ce qui ne va pas
tail -f /var/log/syslog
Automatiser webhook
Comment corriger cela ?
Nous devons localiser le path de webhook
Automatiser webhook
Et maintenant ?
il ne reste plus qu'à modifier le script dans notre service en ajoutant le bon chemin
Automatiser webhook
On démarre le service
On regarde le status de notre service
Automatiser webhook
si cela ne fonctionne pas
sudo systemctl stop webhook.service
sudo systemctl enable webhook.service
sudo systemctl start webhook.service
Vérifiez à nouveau le status et essayer d'accéder à l'url de déploiement.
Les options de webhook