test
This commit is contained in:
parent
f67c5202c9
commit
0c8d15b268
1 changed files with 46 additions and 43 deletions
87
.github/workflows/int_poweron-nyla-int.yml
vendored
87
.github/workflows/int_poweron-nyla-int.yml
vendored
|
|
@ -1,64 +1,67 @@
|
||||||
name: Deploy React App to Azure Web App
|
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
|
||||||
|
|
||||||
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'
|
||||||
cache: 'npm' # Aktiviert Caching für schnellere Builds
|
cache: 'npm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: npm install, build
|
||||||
run: |
|
run: |
|
||||||
npm ci
|
npm ci
|
||||||
npm install express
|
npm run build --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@v3
|
||||||
# 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
|
||||||
|
|
||||||
|
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: 'Deploy to Azure Web App'
|
- name: 'Deploy to Azure Web App'
|
||||||
uses: azure/webapps-deploy@v3
|
id: deploy-to-webapp
|
||||||
|
uses: azure/webapps-deploy@v2
|
||||||
with:
|
with:
|
||||||
app-name: 'poweron-nyla'
|
app-name: 'poweron-nyla-int'
|
||||||
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }}
|
slot-name: 'Production'
|
||||||
clean: true
|
package: .
|
||||||
Loading…
Reference in a new issue