diff --git a/.github/workflows/int_poweron-nyla-int.yml b/.github/workflows/int_poweron-nyla-int.yml index 80af57a..8b61534 100644 --- a/.github/workflows/int_poweron-nyla-int.yml +++ b/.github/workflows/int_poweron-nyla-int.yml @@ -1,75 +1,62 @@ -# 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 +name: Deploy React App to Azure Web App on: push: branches: - - int - workflow_dispatch: + - main # oder dein Branch + workflow_dispatch: # Ermöglicht manuelles Triggern jobs: - build: + build-and-deploy: runs-on: ubuntu-latest - permissions: - contents: read #This is required for actions/checkout steps: - - uses: actions/checkout@v4 + - name: Checkout Code + uses: actions/checkout@v3 - - name: Set up Node.js version + - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: '18.x' + node-version: '18' + cache: 'npm' # Aktiviert Caching für schnellere Builds - - name: npm install, build, and test + - name: Install dependencies run: | - npm install - npm run build --if-present - npm run test --if-present + npm ci + npm install express - - name: Zip build output for deployment - run: zip -r release.zip dist + - name: Build React app + run: npm run build - - - name: Upload artifact for deployment job - uses: actions/upload-artifact@v4 - 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 - 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_6DD84FBFF4714B219CFB34DCFFCD5AB8 }} - tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_F971FF000D07422C8DE63D80087B1699 }} - subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_B5B74D4E312E4B0AB251704F387F2166 }} + - name: Prepare deployment package + run: | + # Create deployment package with build files and necessary configs + mkdir deploy + cp -r dist/* deploy/ + # Create a simple server.js for serving the app + echo "const express = require('express');" > deploy/server.js + echo "const path = require('path');" >> deploy/server.js + echo "const app = express();" >> deploy/server.js + echo "app.use(express.static(path.join(__dirname)));" >> deploy/server.js + echo "app.get('/*', function(req, res) { res.sendFile(path.join(__dirname, 'index.html')); });" >> deploy/server.js + echo "const port = process.env.PORT || 8080;" >> deploy/server.js + echo "app.listen(port, () => console.log('Server running on port', port));" >> deploy/server.js + # Create a new package.json for deployment + echo '{ + "name": "frontend", + "version": "1.0.0", + "private": true, + "scripts": { + "start": "node server.js" + }, + "dependencies": { + "express": "^4.18.2" + } + }' > deploy/package.json - name: 'Deploy to Azure Web App' - id: deploy-to-webapp uses: azure/webapps-deploy@v3 with: - app-name: 'poweron-nyla-int' - slot-name: 'Production' - package: . - + app-name: 'poweron-nyla' + publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }} + package: ./deploy