https://github.com/mendoc/pontis-hooks
Serveur webhook pour le projet Pontis
https://github.com/mendoc/pontis-hooks
Last synced: 3 months ago
JSON representation
Serveur webhook pour le projet Pontis
- Host: GitHub
- URL: https://github.com/mendoc/pontis-hooks
- Owner: mendoc
- Created: 2026-03-16T12:04:26.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-03-19T17:58:39.000Z (5 months ago)
- Last Synced: 2026-05-11T10:00:04.829Z (3 months ago)
- Language: JavaScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pontis-hooks
Serveur webhook GitHub qui déploie automatiquement des applications Docker Compose à chaque push sur la branche par défaut.
## Fonctionnement
1. GitHub envoie `POST /deploy/:slug` à chaque push
2. La signature HMAC-SHA256 est vérifiée
3. Le fichier `docker-compose.yml` (ou `compose.yml`) est récupéré depuis le dépôt
4. Il est écrit dans le répertoire du projet cible
5. Les commandes `docker compose pull`, `up -d` et `image prune -f` sont exécutées
Un seul déploiement à la fois est autorisé par slug.
## Variables d'environnement
| Variable | Obligatoire | Description |
|---|---|---|
| `GITHUB_WEBHOOK_SECRET` | Oui | Secret HMAC configuré dans GitHub |
| `APPS_DIR` | Oui | Répertoire de base des applications |
| `GITHUB_TOKEN` | Non | Token d'accès pour les dépôts privés |
| `PATHS_CONFIG_FILE` | Non | Chemin vers un fichier JSON de mapping slug → répertoire |
### Format de `PATHS_CONFIG_FILE`
```json
{
"mon-app": "/chemin/absolu/vers/mon-app",
"autre-app": "/opt/apps/autre-app"
}
```
Sans ce fichier, le répertoire utilisé est `APPS_DIR/slug`.
## Démarrage
```bash
# Local
npm start
# Docker Compose
docker-compose up -d
```
## Configuration d'un webhook GitHub
Dans les paramètres du dépôt → **Webhooks** → **Add webhook** :
- **Payload URL** : `https://hooks.pontis.ongoua.pro/deploy/`
- **Content type** : `application/json`
- **Secret** : valeur de `GITHUB_WEBHOOK_SECRET`
- **Events** : `Just the push event`
## Déploiement de l'image
```bash
npm run deploy
```
Nécessite `GHCR_TOKEN` dans l'environnement ou dans `.env`. Publie sur `ghcr.io/mendoc/pontis-hooks`.