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