From 54f2c0e9ab4a0eac6c64f0e274f59ad4abd1f9d7 Mon Sep 17 00:00:00 2001 From: Sam DEPARDIEU Date: Tue, 7 Jul 2026 19:49:23 +0200 Subject: [PATCH] =?UTF-8?q?deploy:=20r=C3=A9cup=C3=A9ration=20git=20robust?= =?UTF-8?q?e=20(fetch=20+=20reset=20--hard)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .gitea/workflows/deploy.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 9eb14dc..a3fcb3a 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -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 && \