diff --git a/.github/workflows/int_poweron-nyla-int.yml b/.github/workflows/int_poweron-nyla-int.yml index b9f446d..3fd01c6 100644 --- a/.github/workflows/int_poweron-nyla-int.yml +++ b/.github/workflows/int_poweron-nyla-int.yml @@ -1,4 +1,4 @@ -name: Build and deploy Node.js app to Azure Web App - poweron-nyla-int +name: Deploy React App to Azure Web App on: push: @@ -9,6 +9,8 @@ on: jobs: build: runs-on: ubuntu-latest + permissions: + contents: read #This is required for actions/checkout steps: - uses: actions/checkout@v4 @@ -17,51 +19,47 @@ jobs: uses: actions/setup-node@v3 with: node-version: '18' - cache: 'npm' + cache: 'npm' # Aktiviert Caching für schnellere Builds - - name: npm install, build + - name: Install dependencies run: | npm ci - npm run build --if-present + npm install express - - name: Zip artifact for deployment - run: zip release.zip ./* -r + - name: Build React app + run: npm run build - - name: Upload artifact for deployment job - uses: actions/upload-artifact@v3 - with: - name: node-app - path: release.zip - - deploy: - runs-on: ubuntu-latest - needs: build - environment: - name: 'Production' - url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} - permissions: - id-token: write #This is required for requesting the JWT - - steps: - - name: Download artifact from build job - uses: actions/download-artifact@v3 - with: - name: node-app - - - name: Unzip artifact for deployment - run: unzip release.zip - - - name: Login to Azure - uses: azure/login@v1 - with: - client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_XXXXXXXXXXXXXXXX }} - tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_XXXXXXXXXXXXXXXX }} - subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_XXXXXXXXXXXXXXXX }} + - name: Create server.js for Azure + run: | + # Create ES module compatible server.js directly in root + echo "import express from 'express';" > server.js + echo "import path from 'path';" >> server.js + echo "import { fileURLToPath } from 'url';" >> server.js + echo "" >> server.js + echo "const __filename = fileURLToPath(import.meta.url);" >> server.js + echo "const __dirname = path.dirname(__filename);" >> server.js + echo "" >> server.js + echo "const app = express();" >> server.js + echo "" >> server.js + echo "app.use(express.static(path.join(__dirname, 'dist')));" >> server.js + echo "" >> server.js + echo "app.get('/*', function(req, res) {" >> server.js + echo " res.sendFile(path.join(__dirname, 'dist', 'index.html'));" >> server.js + echo "});" >> server.js + echo "" >> server.js + echo "const port = process.env.PORT || 8080;" >> server.js + echo "app.listen(port, '0.0.0.0', () => {" >> server.js + echo " console.log(\`Server running on port \${port}\`);" >> server.js + echo " console.log(\`Serving from: \${__dirname}/dist\`);" >> server.js + echo "});" >> server.js + + # Verify the file was created + echo "=== server.js content ===" + cat server.js - name: 'Deploy to Azure Web App' - id: deploy-to-webapp - uses: azure/webapps-deploy@v2 + uses: azure/webapps-deploy@v3 with: - app-name: 'poweron-nyla-int' - slot-name: 'Production' - package: . \ No newline at end of file + app-name: 'poweron-nyla' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }} + clean: true