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 file echo "const express = require('express');" > deploy/server.js echo "const path = require('path');" >> deploy/server.js echo "const app = express();" >> deploy/server.js echo "" >> deploy/server.js echo "// Serve static files" >> deploy/server.js echo "app.use(express.static(path.join(__dirname)));" >> deploy/server.js echo "" >> deploy/server.js echo "// Handle React Router" >> deploy/server.js echo "app.get('/*', function(req, res) {" >> deploy/server.js echo " res.sendFile(path.join(__dirname, 'index.html'));" >> deploy/server.js echo "});" >> deploy/server.js echo "" >> deploy/server.js echo "// Use environment PORT or default to 8080" >> deploy/server.js echo "const port = process.env.PORT || 8080;" >> deploy/server.js echo "" >> deploy/server.js echo "app.listen(port, '0.0.0.0', () => {" >> deploy/server.js echo " console.log(\`Server running on port \${port}\`);" >> deploy/server.js echo "});" >> deploy/server.js # Create package.json for deployment echo '{' > deploy/package.json echo ' "name": "frontend",' >> deploy/package.json echo ' "version": "1.0.0",' >> deploy/package.json echo ' "private": true,' >> deploy/package.json echo ' "scripts": {' >> deploy/package.json echo ' "start": "node server.js"' >> deploy/package.json echo ' },' >> deploy/package.json echo ' "dependencies": {' >> deploy/package.json echo ' "express": "^4.18.2"' >> deploy/package.json echo ' }' >> deploy/package.json echo '}' >> deploy/package.json # 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