name: Deploy React App to Azure Web App on: push: branches: - int # oder dein Branch workflow_dispatch: # Ermöglicht manuelles Triggern jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' # Aktiviert Caching für schnellere Builds - name: Install dependencies run: | npm ci npm install express - name: Build React app run: npm run build - name: Prepare deployment package run: | # Create deployment package with build files and necessary configs mkdir -p deploy # Copy all build files cp -r dist/* deploy/ # Create server.js with proper content cat > deploy/server.js << 'EOF' const express = require('express'); const path = require('path'); const app = express(); // Serve static files app.use(express.static(path.join(__dirname))); // Handle React Router app.get('/*', function(req, res) { res.sendFile(path.join(__dirname, 'index.html')); }); // Use environment PORT or default to 8080 const port = process.env.PORT || 8080; app.listen(port, '0.0.0.0', () => { console.log(`Server running on port ${port}`); }); EOF # Create package.json for deployment cat > deploy/package.json << 'EOF' { "name": "frontend", "version": "1.0.0", "private": true, "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.18.2" } } EOF # Verify files were created echo "=== Deployment package contents ===" ls -la deploy/ echo "=== server.js content ===" cat deploy/server.js echo "=== package.json content ===" cat deploy/package.json - name: 'Deploy to Azure Web App' uses: azure/webapps-deploy@v3 with: app-name: 'poweron-nyla' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }} package: ./deploy