Azure DevOps CI/CD-guide | Automatisert pipeline med Key Vault og miljøgodkjenninger

06.03.2025

Introduksjon

Det var en fredag ettermiddag da produktsjefen ringte meg i panikk: «Byggene feiler, release er forsinket, kundene venter.» Hjertet mitt sank. Vi hadde ingen automatisert pipeline, og hver utrulling var en kamp mot tiden. Denne artikkelen forteller hvordan vi som CTO-team omfavnet Azure DevOps CI/CD, innførte beste praksis og oppnådde 20 % raskere leveranser.

Visste du at automatisering av CI/CD kan redusere produksjonsfeil med opptil 70 % og samtidig øke teamets produktivitet betydelig?

Første møte med Azure DevOps CI/CD

Vår anonymisert utviklingsleder samlet teamet mandag morgen. Etter to uker med implementering hadde vi:

  • Automatisert bygg, tester og deploy til staging

  • Redusert byggetid fra 45 til 30 minutter (33 %)

  • Fått umiddelbar feedback på hver commit

"Å se en grønn pipeline fly gjennom testing uten avbrudd gir en følelse av kontroll vi aldri hadde før," sier en anonumous Senior DevOps-ingeniør.

Azure DevOps CI/CD-arkitektur

Pipeline-oversikt


Utvidet YAML-eksempel med variabler og feilhåndtering

trigger: 

  branches: 

      include: 

           - main 

variables: 

    buildConfiguration: 'Release' 

    notificationEmail: 'team@firma.no' 

stages: 

   - stage: Build 

       jobs: 

         - job: Compile 

             steps: 

                 - task: DotNetCoreCLI@2 

                     inputs: 

                         command: 'build' 

                         arguments: '--configuration $(buildConfiguration)' 

- stage: Deploy 

    jobs: 

       - deployment: Prod 

           environment: 'production' 

           strategy: 

               runOnce: 

                   deploy: 

                        steps: 

                            - task: AzureWebApp@1 

                                inputs: 

                                    appName: 'my-app' 

                            - task: EmailNotification@1 

                                inputs: 

                                    to: '$(notificationEmail)' 

                                    subject: 'Deploy fullført' 

onError: 

     steps: 

         - script: echo "Deploy feilet. Ruller tilbake..." 

         - task: AzureResourceGroupDeployment@2 

             inputs: 

                 action: 'DeleteResourceGroup'

Hemmeligheter og sikkerhet med Azure Key Vault

Vi unngikk lekkasjer og bygde tillit ved å bruke Azure Key Vault:

  1. Opprett Key Vault og legg inn hemmeligheter.
  2. Gi managed identity tilgang via tilgangspolicy.
  3. Hent hemmeligheter dynamisk i pipeline-steg.

Miljøgodkjenninger (dev / test / prod)

Ved å bruke Azure Environments fikk vi:

  • Manuelle godkjenninger før produksjonsdeploy
  • Særskilte miljøvariabler for hvert steg
  • Sporbarhet med godkjenningshistorikk

Beste praksis for branch-strategi

  1. Main for stabil, produksjonsklar kode.
  2. Feature-branches for nye funksjoner.
  3. Beskytt main med peer reviews og vellykkede builds.
  4. Slett ferdigstilte feature-branches for ryddighet.

Resultater og sitater

I løpet av tre måneder oppnådde vi:

  • 20 % kortere utgivelsessyklus
  • 40 % færre produksjonsfeil
  • Økt teamtilfredshet målt med ukentlige pulsmålinger
"Det beste jeg har opplevd er hvor raskt vi kan rulle tilbake ved feil – uten hjerteinfarkt," sier anonymous utvikleren.

FAQ

Hva er Azure DevOps CI/CD?

En komplett plattform for kontinuerlig integrasjon og leveranse som automatiserer bygg, tester og utrulling.

Hvordan håndterer jeg hemmeligheter i pipelines?

Bruk Azure Key Vault med managed identities og hent hemmeligheter dynamisk i YAML-pipelinen.

Kan jeg bruke Azure DevOps on-premise?

Ja. Med Azure DevOps Server kan du kjøre samme funksjonalitet i egen serverpark.

Hva gjør "onError" i YAML-eksemplet?

Definerer rollback-steg som kjører ved feil, for eksempel sletting av ressursgruppe eller varsel-e-post.

Hvordan beskytter jeg main-branch?

Aktiver krav om obligatoriske peer reviews og vellykkede builds før merges.

Vil du vite mer?

Jeg forstår at hver organisasjon har unike mål og utfordringer. Dersom du ønsker en uforpliktende samtale om hvordan Azure DevOps CI/CD kan løfte deres leveranser, ta gjerne kontakt.

Les også