Skip to content

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.

bash
# 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.bicepparam

Dette 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

  1. Gå til Azure PortalStatic Web Apps
  2. Klikk på din utrullede Static Web App
  3. Gå til DeploymentManage deployment token
  4. 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:

yaml
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: true

Konfigurasjon etter utrulling

Etter utrulling, konfigurer disse miljøvariablene i Azure PortalStatic Web AppConfigurationApplication settings:

VariabelVerdi
COSMOS_ENDPOINTDitt Cosmos DB-endepunkt
COSMOS_KEYDin Cosmos DB-primærnøkkel
COSMOS_DATABASEchoirtickets
JWT_SECRETEn sterk, tilfeldig hemmelighet
FRONTEND_URLDin Static Web App-URL (f.eks. https://billettsalg.vikingapps.dev)
RESEND_API_KEYDin Resend API-nøkkel
FROM_EMAILBillettsalg <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:

  1. Åpne Application Insights → Overview, og kontroller at forespørsler vises etter at du har brukt applikasjonen.
  2. Åpne Log Analytics workspace → Logs, og kontroller at nylige Function-spor ankommer.
  3. Åpne Azure Monitor → Alerts → Alert rules, og kontroller at fire grunnregler er aktivert.
  4. Å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_SECRET er en sterk, tilfeldig verdi (ikke utviklingsstandarden)
  • [ ] RESEND_API_KEY og FROM_EMAIL konfigurert 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

Built with VitePress