Transformer le projet courant en projet spawn (GitHub + déploiement automatique sur VPS kdrezo via webhook). Crée le repo GitHub, pousse le code, configure le webhook, et vérifie le déploiement.
Transforme le projet du répertoire courant en projet déployé automatiquement via spawn+docker sur un VPS kdrezo.
spawn (https://github.com/kdrezo/spawn) crée automatiquement pour chaque branche :
https://[branche].[instance].[projet].[vps] avec SSL Let's Encrypt[projet]_[instance]_[branche]VPS = 1er argument, ou venusa.kdrezo.net par défautINSTANCE = 2ème argument, ou dvl par défaut (c'est une commande de développement, pas de production)PROJET = nom du dossier courant (le dossier git racine)ORG = kdrezo (organisation GitHub)Attention : ne pas confondre l'instance par défaut de cette commande (dvl) avec l'instance par défaut de spawn lui-même (prod). Ici on déploie depuis l'environnement de développement, donc dvl est le bon défaut.
Exécuter ces vérifications et stopper immédiatement si l'une échoue :
# 1. gh CLI authentifié ?
gh auth status
# 2. Le dossier est-il un repo git ? Sinon, initialiser
git rev-parse --is-inside-work-tree 2>/dev/null || git init
# 3. Y a-t-il au moins un commit ? Sinon, commit initial
git log --oneline -1 2>/dev/null || (git add -A && git commit -m "Initial commit")
# 4. Vérifier l'accès SSH au VPS
ssh -o ConnectTimeout=5 -o BatchMode=yes dvl@[VPS] echo "SSH OK"
Si le SSH échoue, demander à l'utilisateur de vérifier sa configuration SSH.
Vérifier d'abord si le repo existe déjà :
gh repo view kdrezo/[PROJET] 2>/dev/null
Si le repo n'existe PAS :
gh repo create kdrezo/[PROJET] --private --source=. --remote=origin --push
Si le repo EXISTE déjà :
# Vérifier si 'origin' pointe déjà vers le bon repo
git remote get-url origin 2>/dev/null
# Si pas de remote origin, l'ajouter
git remote add origin [email protected]:kdrezo/[PROJET].git 2>/dev/null || true
# Pousser
git push -u origin $(git branch --show-current)
Confirmer avec l'utilisateur avant de créer un repo ou de pousser.
Vérifier si un webhook spawn existe déjà :
gh api repos/kdrezo/[PROJET]/hooks --jq '.[].config.url'
Si aucun webhook ne pointe vers le VPS :
Récupérer le webhook secret depuis le VPS :
ssh dvl@[VPS] "grep GITHUB_WEBHOOK_SECRET /home/dvl/spawn/.env | cut -d= -f2"
Si ça échoue, demander le secret à l'utilisateur.
Puis créer le webhook :
gh api repos/kdrezo/[PROJET]/hooks \
--method POST \
--field "name=web" \
--field "active=true" \
--field "events[]=push" \
--field "events[]=create" \
--field "events[]=delete" \
--field "config[url]=http://[VPS]:5000/" \
--field "config[content_type]=json" \
--field "config[secret]=[WEBHOOK_SECRET]" \
--field "config[insecure_ssl]=0"
Le webhook réagit aux push. Pour forcer le déploiement initial de l'instance dvl (ou l'instance choisie), on peut aussi lancer manuellement spawn sur le VPS :
ssh dvl@[VPS] "cd /home/dvl/spawn && python3 spawn.py create --repo [email protected]:kdrezo/[PROJET].git --branch $(git branch --show-current) --instance [INSTANCE]"
Puis vérifier :
# Vérifier les logs spawn
ssh dvl@[VPS] "tail -20 /var/log/spawn.log" 2>/dev/null
# Vérifier que le conteneur tourne
ssh dvl@[VPS] "docker ps --filter name=[PROJET]-[INSTANCE] --format '{{.Names}} {{.Status}}'"
Attendre quelques secondes puis vérifier que le site répond :
BRANCHE=$(git branch --show-current)
URL="https://${BRANCHE}.[INSTANCE].[PROJET].[VPS]"
# Tester l'accès (peut prendre ~30s pour le certificat SSL)
sleep 10
curl -sL -o /dev/null -w "%{http_code}" "$URL"
Afficher un récapitulatif :
Projet : [PROJET]
GitHub : https://github.com/kdrezo/[PROJET]
VPS : [VPS]
Instance : [INSTANCE]
URL : https://[BRANCHE].[INSTANCE].[PROJET].[VPS]
Webhook : Configuré (push, create, delete)
Comportement automatique :
- Push sur une branche → déploiement automatique
- Nouvelle branche → nouveau conteneur + sous-domaine + BDD
- Suppression branche → nettoyage automatique
Variables d'environnement injectées dans le conteneur :
DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD
PROJECT, BRANCH, INSTANCE, VIRTUAL_HOST