Skip to content

lenoirpatrick/githubwebhook

Repository files navigation

githubwebhook

Gestion du webhook Github pour déploiement CI/CD sur vos environnements.

version Python 3.11 Python 3.14 FastAPI

Bugs Code Smells Reliability Rating Security Rating Quality Gate Status

GitHub stars GitHub license

Prérequis — Configurer le webhook GitHub

Sur chaque dépôt à déployer, un webhook doit être configuré dans GitHub pour notifier cette application à chaque push.

  1. Aller dans Settings → Webhooks → Add webhook du dépôt concerné
  2. Renseigner les champs suivants :
Champ Valeur
Payload URL http://<adresse-du-serveur>:5000/webhook
Content type application/json
Secret La valeur de webhook_secret définie dans config.json (si configurée)
Which events? Just the push event
  1. Cocher Active et valider.

GitHub enverra alors un événement POST /webhook à chaque push. Seuls les pushs sur la branche main déclenchent un git pull.

Installation

git clone https://github.com/lenoirpatrick/githubwebhook.git
cd githubwebhook
pip install -r requirements.txt --break-system-packages
chmod +x run.sh

Configuration

Si le fichier config/config.json est absent au démarrage, il est créé automatiquement avec les valeurs par défaut (ip: 127.0.0.1). L'application ne plante pas.

Le fichier peut être édité manuellement ou via l'interface web de la page d'accueil (boutons Ajouter / Modifier / Supprimer).

Structure du fichier :

{
    "ip": "0.0.0.0",
    "webhook_secret": "votre_secret_github",
    "lenoirpatrick/githubwebhook": {
        "path": "/home/pi/app/githubwebhook"
    },
    "lenoirpatrick/autreprojet": {
        "path": "/home/pi/app/autreprojet"
    }
}
Clé Description
ip Adresse d'écoute : 0.0.0.0 pour toutes les interfaces, 127.0.0.1 pour local uniquement
webhook_secret Secret partagé avec GitHub pour valider la signature HMAC-SHA256 (optionnel mais recommandé)
"owner/repo" Chemin absolu local du dépôt à mettre à jour lors d'un push sur main

Plusieurs dépôts peuvent être configurés simultanément. Toute modification via l'interface web est immédiatement persistée dans config.json.

Lancement

Manuel

./run.sh

Le script installe les dépendances, puis lance l'application en arrière-plan via nohup. Les logs sont disponibles dans nohup.out.

Démarrage automatique avec systemd (recommandé)

Pour que le serveur se lance automatiquement au démarrage de Linux, créer un service systemd.

1. Créer le fichier de service (adapter les chemins et l'utilisateur) :

sudo nano /etc/systemd/system/githubwebhook.service
[Unit]
Description=GitHub Webhook Server
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/app/githubwebhook
ExecStart=/usr/bin/python3 /home/pi/app/githubwebhook/gitpull.py
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

2. Activer et démarrer le service :

sudo systemctl daemon-reload
sudo systemctl enable githubwebhook
sudo systemctl start githubwebhook

3. Vérifier que le service tourne :

sudo systemctl status githubwebhook

Commandes utiles :

sudo systemctl stop githubwebhook      # arrêter
sudo systemctl restart githubwebhook   # redémarrer
journalctl -u githubwebhook -f         # suivre les logs en temps réel

About

Gestion du webhook github

Resources

License

Stars

Watchers

Forks

Contributors