deploy: récupération git robuste (fetch + reset --hard)
CI - Intégration continue / quality-and-tests (push) Successful in 3m13s
CD - Déploiement continu / deploy (push) Successful in 3m2s

Le "git pull" s'abandonnait dès qu'un fichier suivi avait été modifié
localement sur le serveur ("local changes would be overwritten"). On
répare d'abord les permissions (proprio = déployeur) puis on fait
fetch + reset --hard origin/master : récupération propre, insensible aux
modifs locales parasites. Les fichiers non suivis (cert.pem, .env) sont
préservés.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 19:49:23 +02:00
parent e8c6733b40
commit 54f2c0e9ab
+15 -3
View File
@@ -30,8 +30,21 @@ jobs:
set -e
cd /home/sam/mon-app-laravel
# Récupération de la dernière version du code
git pull origin master
DEPLOY_UID=$(id -u)
# L'utilisateur de déploiement doit posséder storage/ & bootstrap/cache
# AVANT toute opération git (un déploiement précédent a pu les passer à
# www-data, ce qui bloquerait git). chown via le conteneur (= root).
docker exec -u 0 laravel_php chown -R "${DEPLOY_UID}:www-data" \
/var/www/storage /var/www/bootstrap/cache
# Récupération propre de la dernière version : on ÉCRASE toute modif
# locale parasite (le serveur est une copie de déploiement, aucune
# édition manuelle n'est censée y vivre). Évite les abandons du type
# "local changes would be overwritten by merge". Les fichiers non
# suivis (cert.pem, .env…) ne sont PAS touchés par reset --hard.
git fetch origin master
git reset --hard origin/master
# Reconstruction et redémarrage des conteneurs
docker compose up -d --build
@@ -51,7 +64,6 @@ jobs:
# les .gitignore suivis passent à www-data et git échoue).
# => propriétaire = utilisateur de déploiement, groupe = www-data,
# avec écriture de groupe + setgid (héritage du groupe www-data).
DEPLOY_UID=$(id -u)
docker exec -u 0 laravel_php sh -c "\
chown -R ${DEPLOY_UID}:www-data /var/www/storage /var/www/bootstrap/cache && \
chmod -R ug+rwX /var/www/storage /var/www/bootstrap/cache && \