Add or update the Azure App Service build and deployment workflow config

This commit is contained in:
idittrich-valueon 2025-06-04 21:07:57 +02:00
parent f67c5202c9
commit c18e8b357b

View file

@ -1,64 +1,74 @@
name: Deploy React App to Azure Web App # Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy Node.js app to Azure Web App - poweron-nyla-int
on: on:
push: push:
branches: branches:
- int # oder dein Branch - int
workflow_dispatch: # Ermöglicht manuelles Triggern workflow_dispatch:
jobs: jobs:
build-and-deploy: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read #This is required for actions/checkout
steps: steps:
- name: Checkout Code - uses: actions/checkout@v4
uses: actions/checkout@v3
- name: Setup Node.js - name: Set up Node.js version
uses: actions/setup-node@v3 uses: actions/setup-node@v3
with: with:
node-version: '18' node-version: '18.x'
cache: 'npm' # Aktiviert Caching für schnellere Builds
- name: Install dependencies - name: npm install, build, and test
run: | run: |
npm ci npm install
npm install express npm run build --if-present
npm run test --if-present
- name: Build React app - name: Zip artifact for deployment
run: npm run build run: zip release.zip ./* -r
- name: Create server.js for Azure - name: Upload artifact for deployment job
run: | uses: actions/upload-artifact@v4
# Create ES module compatible server.js directly in root with:
echo "import express from 'express';" > server.js name: node-app
echo "import path from 'path';" >> server.js path: release.zip
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 deploy:
echo "=== server.js content ===" runs-on: ubuntu-latest
cat server.js needs: build
environment:
name: 'Production'
url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}
permissions:
id-token: write #This is required for requesting the JWT
contents: read #This is required for actions/checkout
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: node-app
- name: Unzip artifact for deployment
run: unzip release.zip
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_F22B84BEF16242F48E913761794EFA64 }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_91A621FECC4E4239B35E8842FAD714A4 }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_89F1F8736D6D4566AF238A83525E0BD5 }}
- 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@v3
with: with:
app-name: 'poweron-nyla' app-name: 'poweron-nyla-int'
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }} slot-name: 'Production'
clean: true package: .