Exercício - Atualize o gatilho do seu pipeline

Concluído

Um colega pede que você ative o recurso Serviço de Aplicativo Sempre Ativado no site da empresa, para que o aplicativo do site esteja sempre em execução.

Neste exercício, você atualizará o pipeline criado para ser executado automaticamente sempre que um arquivo for alterado em sua ramificação principal . Você usará o pipeline atualizado para implantar a alteração de configuração solicitada no site.

Durante o processo, você:

  • Atualize seu pipeline, para que ele seja acionado automaticamente sempre que um arquivo for alterado na pasta de implantação na ramificação principal .
  • Faça uma alteração no arquivo Bicep.
  • Verifique se o pipeline é executado automaticamente.

Atualizar o gatilho para ser baseado em ramificação

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

  2. Remova o gatilho manual na primeira linha.

  3. Adicione a seguinte definição de gatilho na primeira linha:

    trigger:
      batch: true
      branches:
        include:
        - main
    

    Observe que você também habilita o controle de simultaneidade, para evitar que seu pipeline seja executado várias vezes simultaneamente.

  4. Guarde as alterações ao ficheiro.

  5. Confirme suas alterações, mas não as envie ainda. Você vai empurrá-los em breve.

    git add .
    git commit -m 'Add branch trigger'
    

Atualize seu arquivo Bicep

  1. No Visual Studio Code, abra o arquivo main.bicep .

  2. appServiceApp Na propriedade da definição de siteConfig recurso, adicione a alwaysOn propriedade, com um valor de true:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: true
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Guarde as alterações ao ficheiro.

  4. No terminal de código do Visual Studio, execute o seguinte código para confirmar suas alterações e enviar ambas as confirmações:

    git add .
    git commit -m 'Configure app Always On setting'
    git push
    

Verifique se o pipeline falha

  1. No navegador, selecione Pipelines e, em seguida, selecione o pipeline.

  2. Selecione a execução mais recente para ver se o pipeline foi executado automaticamente. O pipeline foi executado porque você empurrou suas alterações para uma ramificação que o gatilho de ramificação monitora. Se o pipeline ainda estiver em execução, aguarde um minuto e atualize a página.

    Captura de tela do Azure DevOps que mostra a falha na execução do pipeline.

    O pipeline mostra uma implantação com falha.

  3. Para diagnosticar a falha, em Trabalhos, selecione o trabalho e, em seguida, selecione a tarefa AzureResourceManagerTemplateDeployment com falha. Desloque-se para ver a mensagem de erro completa. A mensagem de erro inclui o seguinte texto:

    There was a conflict. AlwaysOn cannot be set for this site as the plan does not allow it. For more information on pricing and features, please see: https://aka.ms/appservicepricingdetails

    Essa mensagem de erro indica que a implantação falhou porque o aplicativo do Serviço de Aplicativo foi implantado usando a camada gratuita F1, que não oferece suporte ao recurso Always On.

    Importante

    Este exemplo ilustra como é importante testar seus arquivos Bicep, incluindo todos os valores de parâmetro que você usa. É fácil adicionar erros sutis à sua configuração de recursos ou outro código. Você pode não descobrir um problema até que o pipeline implante o código e ele falhe. Em um módulo futuro, você aprenderá algumas estratégias que você pode usar para verificar e testar seu código Bicep.

Corrija o arquivo Bicep e veja o pipeline acionado novamente

Você fala com seu colega sobre a implantação falhada. Juntos, vocês decidem que a configuração Always On precisa ser aplicada apenas ao seu ambiente de produção. Aqui, você corrige o problema que causou a falha de implantação aplicando a nova regra que você decide usar.

  1. No Visual Studio Code, adicione novas propriedades para cada tipo de ambiente à environmentConfigurationMap variável:

    var environmentConfigurationMap = {
      nonprod: {
        appServiceApp: {
          alwaysOn: false
        }
        appServicePlan: {
          sku: {
            name: 'F1'
            capacity: 1
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_LRS'
          }
        }
      }
      prod: {
        appServiceApp: {
          alwaysOn: true
        }
        appServicePlan: {
          sku: {
            name: 'S1'
            capacity: 2
          }
        }
        toyManualsStorageAccount: {
          sku: {
            name: 'Standard_ZRS'
          }
        }
      }
    }
    
  2. Altere a configuração do aplicativo para usar o valor do mapa de alwaysOn configuração apropriado para o tipo de ambiente:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          alwaysOn: environmentConfigurationMap[environmentType].appServiceApp.alwaysOn
          appSettings: [
            {
              name: 'ToyManualsStorageAccountConnectionString'
              value: toyManualsStorageAccountConnectionString
            }
          ]
        }
      }
    }
    
  3. Guarde as alterações ao ficheiro.

  4. No terminal do Visual Studio Code, confirme suas alterações e envie-as por push:

    git add .
    git commit -m 'Enable App Service Always On for production environments only'
    git push
    

Verifique se o pipeline foi bem-sucedido

  1. No Azure DevOps, retorne à lista Pipelines e selecione seu pipeline.

  2. Selecione a execução mais recente. Se o pipeline ainda estiver em execução, aguarde um minuto e atualize a página.

    Captura de tela do Azure DevOps que mostra a execução bem-sucedida do pipeline.

    O pipeline mostra uma implantação bem-sucedida. Desta vez, foi bem-sucedido porque você usou um arquivo Bicep válido.

Limpar os recursos

Agora que concluiu o exercício, pode remover os recursos para não ser cobrado por eles.

No Terminal de código do Visual Studio, execute o seguinte comando:

az group delete --resource-group ToyWebsite --yes --no-wait

O grupo de recursos é excluído em segundo plano.

Remove-AzResourceGroup -Name ToyWebsite -Force