Övning – Lägga till en Bicep-distributionsuppgift i pipelinen

Slutförd

Du har skapat en grundläggande pipeline och du har konfigurerat dina Azure- och Azure Pipelines-miljöer för att ansluta. Nu är du redo att distribuera webbplatsens Bicep-fil till Azure från din pipeline.

I den här övningen kommer du att:

  • Lägg till en Bicep-fil på lagringsplatsen.
  • Lägg till ett pipelinesteg för att distribuera Bicep-filen.
  • Kör pipelinen igen och kontrollera att den har distribuerat webbplatsen.

Lägg till webbplatsens Bicep-fil på Git-lagringsplatsen

Du har redan förberett webbplatsens Bicep-fil. Du kan använda Bicep-filen för att distribuera olika konfigurationer av webbplatsresurserna, beroende på miljö och konfiguration. Här lägger du till Bicep-filen på lagringsplatsen.

  1. Öppna Visual Studio Code Explorer.

  2. Skapa en ny fil med namnet main.bicep i distributionsmappen. Se till att du skapar filen i distributionsmappen och inte i roten på lagringsplatsen:

    Skärmbild av Visual Studio Code Explorer med huvudpunktens bicep-fil markerad och finns i distributionsmappen.

  3. Kopiera följande kod till filen main.bicep :

    @description('The Azure region into which the resources should be deployed.')
    param location string = resourceGroup().location
    
    @description('The type of environment. This must be nonprod or prod.')
    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    
    @description('Indicates whether to deploy the storage account for toy manuals.')
    param deployToyManualsStorageAccount bool
    
    @description('A unique suffix to add to resource names that need to be globally unique.')
    @maxLength(13)
    param resourceNameSuffix string = uniqueString(resourceGroup().id)
    
    var appServiceAppName = 'toy-website-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-plan'
    var toyManualsStorageAccountName = 'toyweb${resourceNameSuffix}'
    
    // Define the SKUs for each component based on the environment type.
    var environmentConfigurationMap = {
      nonprod: {
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
    var toyManualsStorageAccountConnectionString = deployToyManualsStorageAccount ? 'DefaultEndpointsProtocol=https;AccountName=${toyManualsStorageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${toyManualsStorageAccount.listKeys().keys[0].value}' : ''
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
    resource toyManualsStorageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = if (deployToyManualsStorageAccount) {
      name: toyManualsStorageAccountName
      location: location
      kind: 'StorageV2'
      sku: environmentConfigurationMap[environmentType].toyManualsStorageAccount.sku
    }
    
  4. Spara ändringarna i filen.

  5. I Visual Studio Code-terminalen kör du den här koden för att mellanlagra ändringarna, checka in ändringarna och skicka ändringarna till lagringsplatsen:

    git add deploy/main.bicep
    git commit -m 'Add Bicep file'
    git push
    

Ersätt pipelinestegen

Uppdatera sedan pipelinedefinitionen för att distribuera Bicep-filen till Azure med hjälp av tjänstanslutningen.

  1. Öppna filen deploy/azure-pipelines.yml i Visual Studio Code.

  2. Före raden jobs: lägger du till variables: för att definiera en variabel med namnet deploymentDefaultLocation:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    
  3. Ta bort script steget från pipelinedefinitionen genom att ta bort de två nedersta raderna i filen.

    Dricks

    När du arbetar i Visual Studio Code och har installerat Azure Pipelines-tillägget kan du prova att använda tangentkombinationen Ctrl+Space . Den visar en snabbmeny med föreslagna element att lägga till vid din aktuella markörposition.

  4. Längst ned i filen lägger du till en uppgift som använder AzureResourceManagerTemplateDeployment uppgiften för att distribuera Bicep-filen:

    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    

    Kommentar

    Det är en bra idé att skriva den här koden själv i stället för att kopiera och klistra in den från den här modulen. Var uppmärksam på filens indrag. Om indraget inte är korrekt är YAML-filen inte giltig. Visual Studio Code anger fel genom att visa vågiga rader.

    Det här steget använder en systemvariabel, $(Build.BuildNumber), för att namnge distributionen. Variabeln kan hjälpa dig att enkelt se vilken pipelinekörning en distribution motsvarar.

    Aktivitetsegenskapen location krävs av AzureResourceManagerTemplateDeployment aktiviteten. Den anger i vilken Azure-region en resursgrupp ska skapas. I den här övningen har du redan skapat en resursgrupp, så platsen du anger här spelar ingen roll. Men du måste ange värdet ändå. Här anger du värdet för variabeln deploymentDefaultLocation som du angav i ett tidigare steg.

  5. Spara ändringarna i filen. Filen bör se ut som i detta exempel:

    trigger: none
    
    pool:
      vmImage: ubuntu-latest
    
    variables:
    - name: deploymentDefaultLocation
      value: westus3
    
    jobs:
    - job:
      steps:
    
      - task: AzureResourceManagerTemplateDeployment@3
        inputs:
          connectedServiceName: $(ServiceConnectionName)
          deploymentName: $(Build.BuildNumber)
          location: $(deploymentDefaultLocation)
          resourceGroupName: $(ResourceGroupName)
          csmFile: deploy/main.bicep
          overrideParameters: >
            -environmentType $(EnvironmentType)
            -deployToyManualsStorageAccount $(DeployToyManualsStorageAccount)
    
  6. I Visual Studio Code-terminalen mellanlagra du ändringarna, checkar in dem på lagringsplatsen och push-överför dem till Azure Repos:

    git add deploy/azure-pipelines.yml
    git commit -m 'Add deployment task to pipeline'
    git push
    

Lägga till pipelinevariabler

  1. Välj Pipelines i webbläsaren.

    Skärmbild av Azure DevOps som visar menyn med Pipelines markerat.

  2. Välj din pipeline.

    Skärmbild av Azure DevOps som visar listan över pipelines med pipelinen för leksakswebbplatsen markerad.

  3. Välj Redigera.

    Skärmbild av Azure DevOps som visar pipelinen med Redigera markerat.

  4. Välj variabler.

    Skärmbild av Azure DevOps som visar pipelineredigeraren med knappen Variabler markerad.

  5. Välj Ny variabel.

    Skärmbild av Azure DevOps som visar pipelinevariabelredigeraren med knappen

  6. I Namn anger du ServiceConnectionName. I Värde anger du ToyWebsite.

    Låt kryssrutorna vara avmarkerade och välj OK.

    Skärmbild av Azure DevOps som visar pipelinevariabelredigeraren med ok-knappen markerad.

  7. Om du vill skapa fler variabler väljer du +.

    Skärmbild av Azure DevOps som visar listan över pipelinevariabler med plusknappen markerad.

    Skapa följande variabler på samma sätt som du skapade variabeln ServiceConnectionName :

    Variabelnamn Värde
    ResourceGroupName ToyWebsite
    EnvironmentType nonprod
  8. Slutför stegen igen för att skapa en variabel med namnet DeployToyManualsStorageAccount med värdet true. För den här variabeln väljer du kryssrutan Låt användare åsidosätta det här värdet när de kör den här pipelinen .

    Skärmbild av Azure DevOps som visar pipelinevariabelredigeraren.

  9. När du har skapat alla fyra variablerna väljer du Spara.

    Skärmbild av Azure DevOps som visar pipelinevariabelredigeraren med knappen Spara markerad.

Kör din pipeline

Nu är du redo att köra pipelinen!

Mallen innehåller ett lagringskonto som ditt webbplatsteam använder för att lagra instruktionsböcker för leksaker. Eftersom du fortfarande testar din miljö behöver du inte distribuera lagringskontot varje gång du distribuerar webbplatsen. Därför skapade du en Bicep-parameter för att kontrollera om lagringskontot har distribuerats. Här kör du pipelinen och åsidosätter distributionen så att den inte distribuerar lagringskontot den här gången.

  1. Markera Kör.

    Skärmbild av Azure DevOps som visar pipelinen med knappen Kör markerad.

    Fönstret Kör pipeline visas. I det här fönstret kan du konfigurera inställningar för den här specifika körningen av pipelinen.

  2. Välj variabler.

    Skärmbild av Azure DevOps som visar sidan Kör pipeline med menyalternativet Variabler markerat.

  3. Välj variabeln DeployToyManualsStorageAccount och ändra värdet till false. Välj sedan Uppdatera.

    Skärmbild av Azure DevOps som visar variabelredigeraren

  4. Välj bakåtpilen.

    Skärmbild av Azure DevOps som visar sidan

  5. Om du vill starta en ny pipelinekörning väljer du Kör. Det kan ta några minuter att starta pipelinen. När pipelinen har startat kan det ta några minuter att slutföra distributionen.

  6. Öppna jobbet genom att välja Jobb i avsnittet Jobb. Du kan övervaka jobbet när det körs, eller så kan du vänta tills jobbet har slutförts för att granska dess historik.

    Vänta tills jobbet har slutförts.

  7. Välj Jobb.

    Skärmbild av Azure DevOps som visar jobbsidan med menyalternativet Jobb markerat.

  8. Välj en kötidsvariabel som används.

    Skärmbild av Azure DevOps som visar pipelineloggen med objektet

    Det åsidosatta värdet för den här pipelinekörningen visas. Variabelns DeployToyManualsStorageAccount värde är falskt eftersom du överskrör det ursprungliga värdet.

  9. Granska resten av pipelinens utdata.

    Pipelinen visar en lyckad distribution.

Verifiera distributionen

  1. Gå till Azure-portalen.

  2. Välj Resursgrupper på den vänstra menyn.

  3. Välj ToyWebsite.

  4. I Översikt visar du distributionsstatus. Du kan se att en distribution lyckades.

    Skärmbild av Azure Portal som visar resursgruppen med en lyckad distribution.

  5. Välj 1 lyckades för att visa information om distributionen.

    Skärmbild av Azure Portal som visar resursgruppens distributionshistorik med distributionen markerad.

    Distributionsnamnet är samma som namnet på pipelinekörningen.

  6. Om du vill se vilka resurser som har distribuerats väljer du distributionen. Om du vill expandera distributionen för att se mer information väljer du Distributionsinformation. I det här fallet finns det en Azure App Service-plan och en app.

    Skärmbild av Azure Portal som visar information om resursgruppens distribution med App Service-resurserna markerade.