From c7e81ba3aa5fcf271cc6a9f45f20afee1114057e Mon Sep 17 00:00:00 2001 From: Marco Wende Date: Sat, 20 Jun 2026 17:10:03 +0200 Subject: [PATCH] Add Gitea Actions deployment workflow for witstore.wende.it Co-Authored-By: Claude Sonnet 4.6 --- .gitea/workflows/deploy.yml | 104 ++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 .gitea/workflows/deploy.yml diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..dbdb2d8 --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,104 @@ +name: Deploy to Plesk (witstore.wende.it) + +on: + push: + branches: + - DEV + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + + # ── 1. Code auschecken ─────────────────────────────────────────── + - name: Checkout + uses: actions/checkout@v4 + + # ── 2. PHP + Composer ──────────────────────────────────────────── + - name: PHP einrichten + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: mbstring, pdo, pdo_mysql, xml, curl, zip, gd + coverage: none + + - name: Composer Abhängigkeiten installieren + run: composer install --no-dev --optimize-autoloader --no-interaction + + # ── 3. Node / Assets bauen ─────────────────────────────────────── + - name: Node.js einrichten + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: NPM Abhängigkeiten installieren + run: npm ci + + - name: Assets bauen (Vite) + run: npm run build + + # ── 4. Deployment via SSH auf Plesk ────────────────────────────── + - name: Deployment via SSH + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.DEPLOY_HOST }} + username: ${{ secrets.DEPLOY_USER }} + key: ${{ secrets.DEPLOY_SSH_KEY }} + port: ${{ secrets.DEPLOY_PORT || 22 }} + script: | + set -e + DEPLOY_PATH="/var/www/vhosts/witstore.wende.it/httpdocs" + + echo "==> Wartungsmodus aktivieren" + cd "$DEPLOY_PATH" + php artisan down --render="errors::503" --retry=60 || true + + echo "==> Code aktualisieren" + git pull origin DEV + + echo "==> Composer (Produktion)" + composer install --no-dev --optimize-autoloader --no-interaction + + echo "==> Assets kopieren (vom Runner vorbereitet)" + # Assets wurden oben gebaut und sind jetzt im Repo (public/build) + + echo "==> .env prüfen" + if [ ! -f .env ]; then + cp .env.example .env + php artisan key:generate + fi + + echo "==> Datenbankmigrationen" + php artisan migrate --force + + echo "==> Cache leeren und neu aufbauen" + php artisan config:cache + php artisan route:cache + php artisan view:cache + php artisan event:cache + + echo "==> Storage-Link sicherstellen" + php artisan storage:link || true + + echo "==> Berechtigungen setzen" + chmod -R 755 storage bootstrap/cache + chown -R $(whoami):psaserv storage bootstrap/cache 2>/dev/null || true + + echo "==> Queue Worker neu starten" + php artisan queue:restart || true + + echo "==> Wartungsmodus deaktivieren" + php artisan up + + echo "==> Deployment erfolgreich abgeschlossen" + + # ── 5. Status-Benachrichtigung ──────────────────────────────────── + - name: Deployment-Status melden + if: always() + run: | + if [ "${{ job.status }}" == "success" ]; then + echo "✅ Deployment auf witstore.wende.it erfolgreich" + else + echo "❌ Deployment fehlgeschlagen – bitte Logs prüfen" + fi