Azure DevOps tips og triks | Automatiser bygg, test og deploy

14.02.2025

Forord

Vi vet at du ofte møter stramme tidsfrister, endringer fra interessenter og press om høy kvalitet. I denne guiden deler vi Azure DevOps-tips og triks som hjelper deg å automatisere, sikre og skalere arbeidsflyten. Du vil finne eksterne lenker til offisiell Microsoft-dokumentasjon, praktiske eksempler og klare steg-for-steg-instruksjoner.

"Ved å implementere rådene fra dette innholdet, reduserte vi bygge- og deploy-tiden med over 50 prosent."
– Anonymisert Tech Lead

1. Forbered prosjektet med en ryddig struktur

Organiser koden slik at teamet kan samarbeide effektivt:

  • Opprett et nytt prosjekt i Azure DevOps og velg Git som kildekontroll.

  • Plasser hver mikrotjeneste eller komponent i sitt eget repository.

  • Dokumenter bygg- og kjøreinstruksjoner i README.md.

Se mer om prosjektstruktur i den offisielle dokumentasjonen:
Azure DevOps documentation | Microsoft Learn

2. Opprett og optimaliser pipelines

Pipelines fjerner manuelt arbeid, gir rask feilsøking og høyere kvalitet. Følg disse trinnene:

2.1 Definer trigger og stages

Forklar først hva som skal trigge pipeline:

trigger: 

  branches: 

    include: 

      - main 

        - release/*

Deretter setter du opp bygg og distribusjon som separate stages:

stages: 

  - stage: Build 

      displayName: 'Bygg og test' 

      jobs: 

          - job: CompileAndTest 

              pool: 

                  vmImage: 'ubuntu-latest' 

              steps: 

                  - task: 

                      DotNetCoreCLI@2 displayName: 'Bygg .NET-prosjekt' 

                      inputs: command: 'build' projects: '**/*.csproj' - task:            

                           SonarQubePrepare@4 displayName: 'Forbered SonarQube-analyse' 

                           inputs: SonarQube: 'SonarQubeServiceConnection' 

                           scannerMode: 'CLI' 

                  - task: DotNetCoreCLI@2 

                     displayName: 'Kjør enhetstester' 

                      inputs: 

                      command: 'test' 

                      projects: '**/*Tests/*.csproj' 

                 - task: SonarQubeAnalyze@4 

                 - task: SonarQubePublish@4 

 - stage: Deploy 

     displayName: 'Deploy til produksjon' 

     dependsOn: Build 

     jobs: 

        - deployment: WebAppDeploy 

            environment: 'production' 

            pool: 

                 vmImage: 'ubuntu-latest' 

            strategy: 

                runOnce: 

                    preDeploy: 

                       steps: 

                             -script: echo "Starter sanity-sjekk før  deploy"

                    deploy: 

                        steps: 

                             - task: AzureWebApp@1 

                                 displayName: 'Distribuer til App Service' 

                                  inputs: 

                                      appName: 'my-webapp' 

                                      package: '$(Pipeline.Workspace)/**/*.zip' 

                    routeTraffic: 

                         steps: 

                             - script: echo "Ruter trafikk til nye instanser"

Les mer om YAML-pipeline-schema:
Azure Pipelines – YAML schema | Microsoft Learn

2.2 Avanserte deploy-mønstre og rollback

  • Blue/Green-release for null nedetid og rask rollback.

  • Canary-utrulling med matrise for gradvis trafikkøkning:

strategy: 

matrix: 

       CanarySmall: { trafficPercent: 10 } 

        CanaryLarge: { trafficPercent: 50 } 

 maxParallel: 2 

steps: 

   - script: echo "Ruter ${{ matrix.trafficPercent }}% av trafikken"

For automatisk rollback, bruk Azure Pipelines' restorePoints eller inkluder et rollback-stage.

3. Automatiserte tester, godkjenninger og hemmeligheter

Å bygge inn kvalitetssikring tidlig reduserer produksjonsfeil:

  1. Kodekvalitet og sikkerhetsskanning
    – SonarQube-task i Build-stage (SAST).
    – DAST-skanning i egen testjobb.

  2. Godkjenninger (approvals)
    – Konfigurer manuelle sjekker før produksjonsdeploy via environment approvals.

  3. Håndtering av hemmeligheter
    – Definer Variable Groups.
    – Integrer Azure Key Vault: 

variables: 

  - group: MySecretsGroup 

steps: 

    - task: AzureKeyVault@2 

        displayName: 'Hent hemmeligheter fra Key Vault' 

        inputs: 

            azureSubscription: 'Contoso-Subscription' 

             keyVaultName: 'Contoso-KV' 

             secretsFilter: 'DbConnectionString,ApiKey'

Marker variabler som secret for å maskere dem i loggene. Les mer om Key Vault-integrasjon:
Azure Pipelines – Integrate secrets from Azure Key Vault | Microsoft Learn

4. Integrasjon med Azure Boards, Artifacts og IaC

Sømløse arbeidsflyter og infrastruktur som kode:

  • Azure Boards: Knytt commits og PR-er til work items for full sporbarhet.

  • Azure Artifacts: Publiser interne pakker med NuGet, npm eller Maven.

  • Terraform/Bicep som IaC:

    - task: TerraformCLI@0 displayName: 'Deploy IaC med Terraform' inputs: command: 'apply' workingDirectory: 'infrastructure/'

Utforsk dokumentasjonen for mer:

  • Azure Boards | Microsoft Learn

  • Azure Artifacts | Microsoft Learn

  • Terraform task for Azure DevOps | Microsoft Learn

Oppfordring til handling

Nå er det din tur:

  1. Sett opp din første pipeline i Azure DevOps i dag – du vil merke forskjellen umiddelbart.

  2. Del erfaringer med oss.

For enda mer innsikt, se offisiell dokumentasjon:

Lykke til med DevOps-reisen! Vi står klare for rådgivning og workshops.

Les også