Exercício - Adicione um estágio de visualização ao seu pipeline

Concluído

Você deseja adicionar um estágio extra ao seu pipeline para verificar quais alterações serão feitas em seu ambiente do Azure.

Durante o processo, você:

  • Atualize o arquivo YAML do pipeline para adicionar um novo estágio de visualização.
  • Adicione um ambiente ao Azure Pipelines.
  • Configure o ambiente para exigir uma aprovação.
  • Atualize o arquivo YAML de pipeline para usar o ambiente para o estágio de implantação.
  • Visualize os resultados hipotéticos e aprove uma execução de pipeline.

Atualizar a definição de pipeline para adicionar um estágio de visualização

Aqui, você adicionará um novo estágio ao seu pipeline que executa a operação hipotética.

  1. No Visual Studio Code, abra o arquivo azure-pipelines.yml na pasta deploy .

  2. Entre os estágios Validar e Implantar , adicione a seguinte definição para o estágio Visualização :

    - 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. Guarde as alterações ao ficheiro.

Adicionar um ambiente

  1. No navegador, vá para Ambientes de Pipelines>.

    Captura de tela da interface do Azure DevOps que mostra o menu Pipelines, com o item Ambientes realçado.

  2. Selecione Criar ambiente.

    Captura de ecrã da interface do Azure DevOps que mostra a página Ambientes, com o botão para criar um ambiente realçado.

  3. Digite Website como o nome do ambiente.

    Deixe a descrição em branco. Em Recurso, selecione Nenhum.

    Nota

    No Azure Pipelines, os ambientes são usados para habilitar recursos de implantação. Alguns desses recursos se aplicam somente quando você está implantando no Kubernetes ou em máquinas virtuais. Neste módulo, não usamos esses recursos e você pode ignorá-los.

  4. Selecione Criar.

    Captura de ecrã da página Azure DevOps para um novo ambiente, com os detalhes concluídos e o botão Criar realçado.

Adicionar uma verificação de aprovação ao ambiente

  1. Selecione a guia Aprovações e verificações no canto superior esquerdo da tela.

    Captura de ecrã da interface do Azure DevOps que mostra o ambiente do Website, com o separador Aprovações e verificações realçado.

  2. Selecione Aprovações.

    Captura de tela da interface do Azure DevOps que mostra a página para adicionar uma verificação, com o item Aprovações realçado.

  3. Na caixa de texto Aprovadores , digite seu próprio nome e selecione-se .

  4. Selecione o botão de seta ao lado de Avançado.

    Observe que, por padrão, os aprovadores têm permissão para aprovar as execuções que acionaram. Como você é a única pessoa que trabalhará com esse pipeline, deixe esta caixa de seleção marcada.

  5. Selecione Criar.

    Captura de ecrã da interface do Azure DevOps que mostra a página para adicionar uma verificação de aprovação, com os detalhes concluídos e o botão Criar realçado.

Atualizar a definição de pipeline para exigir um ambiente e aprovação

Aqui, você configurará o estágio Implantar para ser executado no ambiente do site criado anteriormente. Você converterá o estágio Implantar para executar um trabalho de implantação em vez de um trabalho padrão e o configurará para implantar no ambiente.

  1. No arquivo azure-pipelines.yml no Visual Studio Code, substitua a definição de estágio Deploy pelo seguinte código:

    - 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)
    

    Observe que você definiu uma nova checkout etapa. Ao contrário dos trabalhos normais, os trabalhos de implantação precisam ser configurados para fazer check-out (download) dos arquivos do repositório Git. Se você não fizer essa etapa, o trabalho de implantação não poderá ler seu arquivo Bicep. Em vez disso, você pode considerar o uso de artefatos de pipeline para enviar arquivos entre os estágios do pipeline. Temos links para mais informações sobre artefatos no resumo.

  2. Guarde o ficheiro.

Verificar e confirmar sua definição de pipeline

  1. Verifique se o arquivo azure-pipelines.yml se parece com o código a seguir:

    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)
    

    Se isso não acontecer, atualize-o para corresponder a este exemplo e salve-o.

  2. Confirme e envie suas alterações para o repositório Git executando os seguintes comandos no terminal do Visual Studio Code:

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

Execute o pipeline e revise as saídas hipotéticas

  1. No seu navegador, vá para o seu pipeline.

  2. Selecione a execução mais recente do seu pipeline.

    Aguarde até que o pipeline conclua os estágios Lint, Validate e Preview . Embora o Azure Pipelines atualize automaticamente a página com o status mais recente, é uma boa ideia atualizá-la ocasionalmente.

  3. Se lhe for pedido para conceder permissão para aceder a um recurso, selecione Ver e, em seguida, selecione Permitir.

  4. Observe que o Azure Pipelines solicita uma aprovação. Você também recebe um e-mail informando que o pipeline precisa de sua aprovação.

    Captura de tela da interface do Azure DevOps que mostra a execução do pipeline, com o requisito de aprovação realçado.

    Antes de aprovar a continuação do pipeline, você analisará os resultados hipotéticos para garantir que eles correspondam às suas expectativas.

  5. Selecione o estágio de visualização .

  6. Selecione a etapa Executar hipóteses para inspecionar as alterações relatadas pelo comando hipotético.

  7. Observe que o log de pipeline fornece resultados hipotéticos semelhantes ao código a seguir:

    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.
    

    A operação hipotética detetou uma alteração no recurso do site. No entanto, as alterações que detetou são ruído. Eles não representam mudanças reais no seu recurso. Com o tempo, a equipe do Azure trabalha para reduzir o ruído. Enquanto isso, para essas duas propriedades específicas, você pode ignorar as alterações detetadas.

    Você também pode ver um item na saída hipotética para o tipo microsoft.alertsmanagement/smartDetectorAlertRules/Failure Anomalies - toywebsitede recurso . O Application Insights cria esse recurso automaticamente. O comando what-if deteta que nenhuma alteração será feita no recurso.

Aprovar a execução do pipeline

  1. Selecione a seta para a esquerda para retornar aos detalhes da execução do pipeline.

    Captura de tela da interface do Azure DevOps que mostra o menu de log de pipeline, com a seta para trás realçada.

  2. Selecione o botão Revisão no painel de aprovação.

  3. Na caixa Comentário, insira Resultados hipotéticos revisados.

  4. Selecione Aprovar.

    Captura de tela da interface do Azure DevOps que mostra a página de aprovação do pipeline, com o botão Aprovar realçado.

Observe a implantação bem-sucedida

  1. Depois de aprovar a execução do pipeline, observe que o estágio Implantar começa a ser executado.

    Aguarde até que a etapa termine.

  2. Observe que a execução do pipeline é concluída com êxito.