Övning – Lägga till en förhandsversionsfas i pipelinen

Slutförd

Du vill lägga till en extra fas i pipelinen så att du kan kontrollera vilka ändringar som kommer att göras i Din Azure-miljö.

Under processen gör du följande:

  • Uppdatera YAML-pipelinefilen för att lägga till en ny förhandsversionsfas.
  • Lägg till en miljö i Azure Pipelines.
  • Konfigurera miljön så att den kräver ett godkännande.
  • Uppdatera YAML-pipelinefilen så att den använder miljön för distributionsfasen.
  • Visa konsekvensanalysresultatet och godkänn en pipelinekörning.

Uppdatera pipelinedefinitionen för att lägga till en förhandsversionsfas

Här lägger du till en ny fas i pipelinen som kör konsekvensåtgärden.

  1. I Visual Studio Code öppnar du filen azure-pipelines.yml i distributionsmappen.

  2. Mellan stegen Verifiera och distribuera lägger du till följande definition för förhandsversionssteget:

    - stage: Preview
      jobs:
      - job: PreviewAzureChanges
        displayName: Preview Azure changes
        steps:
          - task: AzureCLI@2
            name: RunWhatIf
            displayName: Run what-if
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az deployment group what-if \
                  --resource-group $(ResourceGroupName) \
                  --template-file deploy/main.bicep \
                  --parameters environmentType=$(EnvironmentType)
    
  3. Spara ändringarna i filen.

Lägga till en miljö

  1. I webbläsaren går du till Pipelines-miljöer>.

    Skärmbild av Azure DevOps-gränssnittet som visar menyn Pipelines med objektet Miljöer markerat.

  2. Välj Skapa miljö.

    Skärmbild av Azure DevOps-gränssnittet som visar sidan Miljöer med knappen för att skapa en miljö markerad.

  3. Ange Webbplats som miljönamn.

    Lämna beskrivningen tom. För Resurs väljer du Ingen.

    Kommentar

    I Azure Pipelines används miljöer för att aktivera distributionsfunktioner. Vissa av dessa funktioner gäller endast när du distribuerar till Kubernetes eller till virtuella datorer. I den här modulen använder vi inte de här funktionerna och du kan ignorera dem.

  4. Välj Skapa.

    Skärmbild av Sidan Azure DevOps för en ny miljö med informationen slutförd och knappen Skapa markerad.

Lägga till en godkännandekontroll i miljön

  1. Välj fliken Godkännanden och kontroller längst upp till vänster på skärmen.

    Skärmbild av Azure DevOps-gränssnittet som visar webbplatsmiljön med fliken Godkännanden och kontroller markerade.

  2. Välj Godkännanden.

    Skärmbild av Azure DevOps-gränssnittet som visar sidan för att lägga till en kontroll med objektet Godkännanden markerat.

  3. I textrutan Godkännare skriver du ditt eget namn och väljer dig själv.

  4. Välj pilknappen bredvid Avancerat.

    Observera att godkännare som standard får godkänna de körningar som de har utlöst. Eftersom du är den enda som arbetar med den här pipelinen lämnar du kryssrutan markerad.

  5. Välj Skapa.

    Skärmbild av Azure DevOps-gränssnittet som visar sidan för att lägga till en godkännandekontroll, med informationen slutförd och knappen Skapa markerad.

Uppdatera pipelinedefinitionen så att den kräver en miljö och ett godkännande

Här konfigurerar du distributionsfasen så att den körs mot den webbplatsmiljö som du skapade tidigare. Du konverterar distributionssteget för att köra ett distributionsjobb i stället för ett standardjobb och konfigurerar det så att det distribueras till miljön.

  1. I filen azure-pipelines.yml i Visual Studio Code ersätter du definitionen för distributionssteg med följande kod:

    - stage: Deploy
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        environment: Website
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: $(ServiceConnectionName)
                    deploymentName: $(Build.BuildNumber)
                    location: $(deploymentDefaultLocation)
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
    

    Observera att du har definierat ett nytt checkout steg. Till skillnad från vanliga jobb måste distributionsjobb konfigureras för att checka ut (ladda ned) filerna från din Git-lagringsplats. Om du inte gör det här steget kan distributionsjobbet inte läsa Bicep-filen. Du kan i stället överväga att använda pipelineartefakter för att skicka filer mellan pipelinesteg. Vi länkar till mer information om artefakter i sammanfattningen.

  2. Spara filen.

Verifiera och checka in din pipelinedefinition

  1. Kontrollera att filen azure-pipelines.yml ser ut som följande kod:

    trigger:
      batch: true
      branches:
        include:
        - main
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
      - name: deploymentDefaultLocation
        value: westus3
    
    stages:
    
    - stage: Lint
      jobs:
      - job: LintCode
        displayName: Lint code
        steps:
          - script: |
              az bicep build --file deploy/main.bicep
            name: LintBicepCode
            displayName: Run Bicep linter
    
    - stage: Validate
      jobs:
      - job: ValidateBicepCode
        displayName: Validate Bicep code
        steps:
          - task: AzureResourceManagerTemplateDeployment@3
            name: RunPreflightValidation
            displayName: Run preflight validation
            inputs:
              connectedServiceName: $(ServiceConnectionName)
              location: $(deploymentDefaultLocation)
              deploymentMode: Validation
              resourceGroupName: $(ResourceGroupName)
              csmFile: deploy/main.bicep
              overrideParameters: >
                -environmentType $(EnvironmentType)
    
    - stage: Preview
      jobs:
      - job: PreviewAzureChanges
        displayName: Preview Azure changes
        steps:
          - task: AzureCLI@2
            name: RunWhatIf
            displayName: Run what-if
            inputs:
              azureSubscription: $(ServiceConnectionName)
              scriptType: 'bash'
              scriptLocation: 'inlineScript'
              inlineScript: |
                az deployment group what-if \
                  --resource-group $(ResourceGroupName) \
                  --template-file deploy/main.bicep \
                  --parameters environmentType=$(EnvironmentType)
    
    - stage: Deploy
      jobs:
      - deployment: DeployWebsite
        displayName: Deploy website
        environment: Website
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
    
                - task: AzureResourceManagerTemplateDeployment@3
                  name: DeployBicepFile
                  displayName: Deploy Bicep file
                  inputs:
                    connectedServiceName: $(ServiceConnectionName)
                    deploymentName: $(Build.BuildNumber)
                    location: $(deploymentDefaultLocation)
                    resourceGroupName: $(ResourceGroupName)
                    csmFile: deploy/main.bicep
                    overrideParameters: >
                      -environmentType $(EnvironmentType)
    

    Om den inte gör det uppdaterar du den så att den matchar det här exemplet och sparar det.

  2. Checka in och skicka ändringarna till Git-lagringsplatsen genom att köra följande kommandon i Visual Studio Code-terminalen:

    git add .
    git commit -m "Add preview stage"
    git push
    

Kör pipelinen och granska konsekvensutdata

  1. Gå till din pipeline i webbläsaren.

  2. Välj den senaste körningen av din pipeline.

    Vänta tills pipelinen har slutfört faserna Lint, Validate och Preview . Även om Azure Pipelines automatiskt uppdaterar sidan med den senaste statusen är det en bra idé att uppdatera sidan ibland.

  3. Om du uppmanas att bevilja behörighet att komma åt en resurs väljer du Visa och sedan Tillåt.

  4. Observera att Azure Pipelines ber dig om ett godkännande. Du får också ett e-postmeddelande som informerar dig om att pipelinen behöver ditt godkännande.

    Skärmbild av Azure DevOps-gränssnittet som visar pipelinekörningen med godkännandekravet markerat.

    Innan du godkänner fortsättningen av pipelinen granskar du konsekvensresultatet för att säkerställa att de matchar dina förväntningar.

  5. Välj förhandsgranskningssteget.

  6. Välj steget Kör vad händer om för att granska de ändringar som what-if-kommandot rapporterar om.

  7. Observera att pipelineloggen innehåller konsekvensanalysresultat som liknar följande kod:

    Resource and property changes are indicated with these symbols:
      + Create
      ~ Modify
      = Nochange
    
    The deployment will update the following scope:
    
    Scope: /subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/ToyWebsiteTest
    
      ~ Microsoft.Web/sites/toy-website-nbfnedv766snk [2021-01-15]
        + properties.siteConfig.localMySqlEnabled:   false
        + properties.siteConfig.netFrameworkVersion: "v4.6"
    
      = Microsoft.Insights/components/toywebsite [2020-02-02]
      = Microsoft.Storage/storageAccounts/mystoragenbfnedv766snk [2021-04-01]
      = Microsoft.Web/serverfarms/toy-website [2021-01-15]
    
    Resource changes: 1 to modify, 3 no change.
    

    Konsekvensåtgärden har identifierat en ändring av webbplatsresursen. De ändringar som har identifierats är dock brus. De representerar inte verkliga ändringar i din resurs. Med tiden arbetar Azure-teamet för att minska bruset. Under tiden kan du ignorera de identifierade ändringarna för dessa två specifika egenskaper.

    Du kan också se ett objekt i konsekvensutdata för resurstypen microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsite. Application Insights skapar den här resursen automatiskt. Konsekvenskommandot identifierar att resursen inte kommer att ändras.

Godkänn pipelinekörningen

  1. Välj den vänstra pilen för att återgå till informationen för pipelinekörningen.

    Skärmbild av Azure DevOps-gränssnittet som visar pipelineloggmenyn med bakåtpilen markerad.

  2. Välj knappen Granska på godkännandepanelen.

  3. I rutan Kommentar anger du Granskat konsekvensresultat.

  4. Välj godkänn.

    Skärmbild av Azure DevOps-gränssnittet som visar sidan för godkännande av pipeline med knappen Godkänn markerad.

Observera den lyckade distributionen

  1. När du har godkänt pipelinekörningen ser du att distributionssteget börjar köras.

    Vänta tills fasen är klar.

  2. Observera att pipelinekörningen har slutförts.