85 lines
3.2 KiB
YAML
85 lines
3.2 KiB
YAML
name: Deploy React App to Azure Web App
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- int # oder dein Branch
|
|
workflow_dispatch: # Ermöglicht manuelles Triggern
|
|
|
|
jobs:
|
|
build-and-deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Setup Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18'
|
|
cache: 'npm' # Aktiviert Caching für schnellere Builds
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
npm ci
|
|
npm install express
|
|
|
|
- name: Build React app
|
|
run: npm run build
|
|
|
|
- name: Prepare deployment package
|
|
run: |
|
|
# Create deployment package with build files and necessary configs
|
|
mkdir -p deploy
|
|
|
|
# Copy all build files
|
|
cp -r dist/* deploy/
|
|
|
|
# Create server.js file
|
|
echo "const express = require('express');" > deploy/server.js
|
|
echo "const path = require('path');" >> deploy/server.js
|
|
echo "const app = express();" >> deploy/server.js
|
|
echo "" >> deploy/server.js
|
|
echo "// Serve static files" >> deploy/server.js
|
|
echo "app.use(express.static(path.join(__dirname)));" >> deploy/server.js
|
|
echo "" >> deploy/server.js
|
|
echo "// Handle React Router" >> deploy/server.js
|
|
echo "app.get('/*', function(req, res) {" >> deploy/server.js
|
|
echo " res.sendFile(path.join(__dirname, 'index.html'));" >> deploy/server.js
|
|
echo "});" >> deploy/server.js
|
|
echo "" >> deploy/server.js
|
|
echo "// Use environment PORT or default to 8080" >> deploy/server.js
|
|
echo "const port = process.env.PORT || 8080;" >> deploy/server.js
|
|
echo "" >> deploy/server.js
|
|
echo "app.listen(port, '0.0.0.0', () => {" >> deploy/server.js
|
|
echo " console.log(\`Server running on port \${port}\`);" >> deploy/server.js
|
|
echo "});" >> deploy/server.js
|
|
|
|
# Create package.json for deployment
|
|
echo '{' > deploy/package.json
|
|
echo ' "name": "frontend",' >> deploy/package.json
|
|
echo ' "version": "1.0.0",' >> deploy/package.json
|
|
echo ' "private": true,' >> deploy/package.json
|
|
echo ' "scripts": {' >> deploy/package.json
|
|
echo ' "start": "node server.js"' >> deploy/package.json
|
|
echo ' },' >> deploy/package.json
|
|
echo ' "dependencies": {' >> deploy/package.json
|
|
echo ' "express": "^4.18.2"' >> deploy/package.json
|
|
echo ' }' >> deploy/package.json
|
|
echo '}' >> deploy/package.json
|
|
|
|
# Verify files were created
|
|
echo "=== Deployment package contents ==="
|
|
ls -la deploy/
|
|
echo "=== server.js content ==="
|
|
cat deploy/server.js
|
|
echo "=== package.json content ==="
|
|
cat deploy/package.json
|
|
|
|
- name: 'Deploy to Azure Web App'
|
|
uses: azure/webapps-deploy@v3
|
|
with:
|
|
app-name: 'poweron-nyla'
|
|
publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE_D6C9359A57C5448A8C0BFA2D4C4B2068 }}
|
|
package: ./deploy
|