Exercício - Atualize o gatilho do seu fluxo de trabalho

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 fluxo de trabalho criado para ser executado automaticamente sempre que um arquivo for alterado em sua ramificação principal . Você usará o fluxo de trabalho atualizado para implantar a alteração de configuração solicitada no site.

Durante o processo, você:

  • Atualize seu fluxo de trabalho, 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 fluxo de trabalho é executado automaticamente.

Atualizar o gatilho para ser baseado em ramificação

  1. No Visual Studio Code, abra o arquivo .github/workflows/workflow.yml .

  2. Na parte superior do arquivo, após a linha name: deploy-toy-website , adicione o seguinte código para evitar que vários fluxos de trabalho simultâneos sejam executados:

    name: deploy-toy-website
    concurrency: toy-company
    
  3. Remova o gatilho manual, que é a linha que lê on: [workflow_dispatch]atualmente .

  4. Entre concurrency: e permissions: adicione a seguinte definição de gatilho:

    concurrency: toy-company
    
    on:
      push:
        branches:
          - main
        paths:
          - 'deploy/**'
    
    permissions:
    
  5. Guarde as alterações ao ficheiro.

  6. Confirme suas alterações, mas não as empurre ainda. Você enviará as mudanças 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
    

Verificar se o fluxo de trabalho falha

  1. No navegador, selecione o menu Ações do GitHub e selecione seu fluxo de trabalho.

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

    Screenshot of the GitHub interface showing the failed workflow run.

    O fluxo de trabalho mostra uma implantação com falha.

  3. Para diagnosticar a falha, selecione o trabalho de implantação e selecione a tarefa arm-deploy com falha.

    Observe que ele 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 seu fluxo de trabalho 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 fluxo de trabalho 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 configuração apropriado para o tipo de alwaysOn ambiente:

    resource appServiceApp 'Microsoft.Web/sites@2023-12-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
    

Verificar se o fluxo de trabalho foi bem-sucedido

  1. No GitHub, retorne à lista de fluxos de trabalho. Selecione seu fluxo de trabalho.

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

    A execução do fluxo de trabalho é exibida.

    Screenshot of the GitHub interface showing the successful workflow run.

    O fluxo de trabalho 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