Déployer son site depuis Github
Goal
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.
Solution
Qu'est ce qu'un webhook ?
Prérequis
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
Step 1
sudo apt-get install webhook
Installation de webhook
Step 2
mkdir ~/webhooks
Créer un dossier webhooks
Créer un fichier hooks.json
touch ~/webhooks/hooks.json
Step 3
touch ~/webhooks/deploy.sh
Créer un script .sh
Appliquer les bons droits au script
chmod +x ~/webhooks/deploy.sh
Step 4
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
Step 4
ctrl + x pour sauvegarder le fichier

Step 5
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
Step 5
#!/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
Step 5

Step 6
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
Step 6

On peut voir que notre hook deploy est prêt
Step 7
On va tester notre hook dans le navigateur


Nous avons bien une réponse dans les logs
Step 8

Cabler notre hook sur github
Step 8
Création du hook avec url du serveur

Step 8
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.
Annexes

Les options de webhook
Déployer son site depuis Github
By NicoHash
Déployer son site depuis Github
- 56