name: CD - Déploiement continu # Déploiement continu : après un push sur master, une fois la CI passée, # on se connecte en SSH au serveur de production et on met à jour l'application # (git pull, rebuild des conteneurs, migrations, mise en cache). # # Secrets à définir dans Gitea (Settings > Actions > Secrets du dépôt) : # - SSH_HOST : IP ou domaine du serveur # - SSH_USER : utilisateur SSH # - SSH_PRIVATE_KEY : clé privée SSH autorisée sur le serveur # - SSH_PORT : port SSH (optionnel, 22 par défaut) on: push: branches: [ master ] jobs: deploy: runs-on: ubuntu-latest steps: - name: Déploiement sur le serveur via SSH uses: appleboy/ssh-action@v1.2.0 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SSH_PORT }} script: | set -e cd /home/sam/mon-app-laravel # Récupération de la dernière version du code git pull origin master # Reconstruction et redémarrage des conteneurs docker compose up -d --build # Migrations de la base de données (sans interaction) docker exec laravel_php php artisan migrate --force # Mise en cache de la configuration et des routes (performances en prod) docker exec laravel_php php artisan config:cache docker exec laravel_php php artisan route:cache docker exec laravel_php php artisan view:cache # Correction des permissions sur les dossiers écrits par Laravel docker exec -u 0 laravel_php chown -R www-data:www-data \ /var/www/storage /var/www/bootstrap/cache