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 && \