Azure-utrulling
Forutsetninger
- Azure CLI installert og autentisert
- Et Azure-abonnement (gratisnivå er tilstrekkelig)
- Et GitHub-repositorium for CI/CD
Rull ut infrastruktur
Prosjektet bruker Bicep-maler i infra/-mappen.
# Logg inn på Azure
az login
# Opprett ressursgruppe
az group create --name rg-choir-tickets --location westeurope
# Rull ut infrastruktur
az deployment group create \
--resource-group rg-choir-tickets \
--template-file infra/main.bicep \
--parameters infra/main.bicepparamDette oppretter:
- Azure Static Web App — hoster Vue 3-frontenden og Azure Functions API
- Azure Cosmos DB — NoSQL-database (gratisnivå: 1000 RU/s)
- Log Analytics-arbeidsområde: lagrer produksjonslogger i 31 dager
- Arbeidsområdebasert Application Insights: sender Azure Functions-telemetri til det tilknyttede arbeidsområdet, der den effektive oppbevaringstiden er 31 dager
- Grunnleggende Azure Monitor-varsler: følger mislykkede forespørsler, unntak, mislykkede avhengigheter og daglig inntak
Rull ut applikasjon (GitHub Actions)
Den anbefalte tilnærmingen er CI/CD via GitHub Actions.
1. Hent deployment-token
- Gå til Azure Portal → Static Web Apps
- Klikk på din utrullede Static Web App
- Gå til Deployment → Manage deployment token
- Kopier tokenet
2. Legg til GitHub-hemmeligheten
Legg til tokenet som en GitHub repository secret med navnet AZURE_STATIC_WEB_APPS_API_TOKEN.
3. Opprett arbeidsflyten
Opprett .github/workflows/deploy.yml:
name: Deploy to Azure Static Web Apps
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
- name: Install and build API
run: |
cd api
npm ci
npm run build
- name: Install and build frontend
run: |
cd frontend
npm ci
npm run build
- name: Deploy
uses: Azure/static-web-apps-deploy@v1
with:
azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN }}
repo_token: ${{ secrets.GITHUB_TOKEN }}
action: "upload"
app_location: "/frontend/dist"
api_location: "/api"
output_location: ""
skip_app_build: true
skip_api_build: trueKonfigurasjon etter utrulling
Etter utrulling, konfigurer disse miljøvariablene i Azure Portal → Static Web App → Configuration → Application settings:
| Variabel | Verdi |
|---|---|
COSMOS_ENDPOINT | Ditt Cosmos DB-endepunkt |
COSMOS_KEY | Din Cosmos DB-primærnøkkel |
COSMOS_DATABASE | choirtickets |
JWT_SECRET | En sterk, tilfeldig hemmelighet |
FRONTEND_URL | Din Static Web App-URL (f.eks. https://billettsalg.vikingapps.dev) |
RESEND_API_KEY | Din Resend API-nøkkel |
FROM_EMAIL | Billettsalg <noreply@yourdomain.com> |
Se Miljøvariabler for alle detaljer.
Bicep-utrullingen kobler Static Web App-API-et til Application Insights. Ikke kopier tilkoblingsinnstillingen for overvåking til dokumentasjon, utrullingsutdata, saker eller støttemeldinger.
Kontroller produksjonsovervåkingen
Etter utrulling:
- Åpne Application Insights → Overview, og kontroller at forespørsler vises etter at du har brukt applikasjonen.
- Åpne Log Analytics workspace → Logs, og kontroller at nylige Function-spor ankommer.
- Åpne Azure Monitor → Alerts → Alert rules, og kontroller at fire grunnregler er aktivert.
- Åpne Application Insights → Usage and estimated costs, og kontroller grensen på 0,1 GB per dag og varselterskelen på 80 prosent.
Varslene vises bare i portalen. De har ingen handlingsgrupper, så Azure sender ikke e-post, SMS eller webhook-varsler. Kontroller Azure Monitor-visningen under driftsgjennomganger.
Sjekkliste for produksjon
- [ ] Infrastruktur utrullet via Bicep
- [ ] GitHub Actions-arbeidsflyt konfigurert
- [ ] Alle miljøvariabler satt i Azure Portal
- [ ]
JWT_SECRETer en sterk, tilfeldig verdi (ikke utviklingsstandarden) - [ ]
RESEND_API_KEYogFROM_EMAILkonfigurert for e-postlevering - [ ] Cosmos DB-brannmuren tillater Azure-tjenester
- [ ] Application Insights mottar nylige API-forespørsler
- [ ] Log Analytics mottar nylige Function-spor
- [ ] Fire varsler som bare vises i portalen, er aktivert
- [ ] Daglig grense for Application Insights er 0,1 GB med varsel ved 80 prosent
- [ ] Egendefinert domene konfigurert (valgfritt)
Neste: Hosting og kostnader · Se også: Lokal utvikling · Feilsøking