This commit is contained in:
idittrich-valueon 2025-06-04 21:22:51 +02:00
commit ba766c675d

View file

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