Exercício – criar um fluxo de trabalho para uma solicitação de pull

Concluído

A equipe de desenvolvimento do seu site pediu que você atualizasse o site para ser executado no sistema operacional Linux. Neste exercício, você adicionará um fluxo de trabalho de validação que é executado automaticamente quando uma solicitação de pull é aberta ou atualizada. Em seguida, você criará uma solicitação de pull para a alteração do sistema operacional do seu site.

Durante o processo, você vai:

  • Criar um fluxo de trabalho para validação da solicitação de pull.
  • Adicionar lint do Bicep ao fluxo de trabalho.
  • Criar uma solicitação de pull e observar a execução do fluxo de trabalho.
  • Corrigir erros identificados pelo fluxo de trabalho de validação da solicitação de pull.
  • Executar o fluxo de trabalho novamente e mesclar e fechar a solicitação de pull.

Criar um fluxo de trabalho para ser executado quando solicitações de pull forem criadas e atualizadas

  1. No Visual Studio Code, crie um arquivo chamado pr-validation.yml na pasta .github/workflows.

    Captura de tela do Visual Studio Code que mostra o arquivo YML do ponto de validação PR na pasta de fluxos de trabalho.

  2. Adicione o seguinte código ao arquivo:

    name: pr-validation
    
    on: pull_request
    

    Esse código garante que o fluxo de trabalho seja executado sempre que uma solicitação de pull for criada ou atualizada.

    Observação

    Você está trabalhando diretamente na ramificação principal do repositório. Você normalmente não faria isso, mas neste exercício trabalhará na principal para simplificar as etapas. Em seus próprios projetos, é importante configurar regras de proteção de ramificação para proteger o seu branch principal.

Adicionar um trabalho de lint ao fluxo de trabalho

Quando você abre ou edita uma solicitação de pull, é interessante executar uma etapa de lint em seus arquivos Bicep. Há um fluxo de trabalho de lint reutilizável no repositório que você pode chamar nesse fluxo de trabalho.

  1. No final do conteúdo do arquivo existente, para reutilizar o fluxo de trabalho de lint definido em seu repositório, adicione as seguintes linhas:

    jobs:
      lint:
        uses: ./.github/workflows/lint.yml
    

    Seu repositório tem um arquivo bicepconfig.json que configura o linter para emitir erros em vez de avisos, portanto, as falhas durante o trabalho de lint causarão falha no fluxo de trabalho.

  2. Salve suas alterações.

  3. Faça commit e efetue push das alterações na ramificação principal do seu repositório Git executando os seguintes comandos no terminal do Visual Studio Code:

    git add .
    git commit -m "Add first version of pull request validation workflow"
    git push
    

Atualizar o arquivo Bicep

Depois, modifique o arquivo Bicep do site para atualizar o sistema operacional do site para usar o Linux.

  1. No terminal do Visual Studio Code, crie um branch para suas alterações executando o seguinte comando:

    git checkout -b feature/linux-app
    
  2. Abra o arquivo main.bicep na pasta deploy.

  3. Próximo à parte superior do arquivo, abaixo das definições de variável, defina uma nova variável para a estrutura do aplicativo usar:

    // Define the names for resources.
    var appServiceAppName = 'toy-website-linux-${resourceNameSuffix}'
    var appServicePlanName = 'toy-website-linux'
    var storageAccountName = 'mystorage${resourceNameSuffix}'
    
    var appServiceAppLinuxFrameworkVersion = 'node|14-lts'
    

    Essa configuração informa ao Serviço de Aplicativo do Azure que o aplicativo será compilado usando a versão 14 da estrutura do Node.js.

  4. Atualize a definição de recurso appServicePlan. Adicione a propriedade kind e a propriedade reserved no objeto properties:

    resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
      name: appServicePlanName
      location: location
      sku: environmentConfigurationMap[environmentType].appServicePlan.sku
      kind: 'linux'
      properties: {
        reserved: true
      }
    }
    
  5. Atualize a definição de recurso appServiceApp para configurar a estrutura do aplicativo:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: 'node|14-lts'
        }
      }
    }
    

    Observação

    Você poderá notar que o Bicep avisa que você não está usando a variável appServiceAppLinuxFrameworkVersion. Aqui, você está causando intencionalmente um erro de linter para ver como isso ocorre na solicitação de pull do GitHub.

  6. Salve suas alterações.

  7. Faça commit e efetue push das alterações no repositório Git executando os seguintes comandos no terminal do Visual Studio Code:

    git add .
    git commit -m "Update operating system to Linux"
    git push origin feature/linux-app
    

Criar uma solicitação de pull

Agora que o fluxo de trabalho está configurado e o arquivo do Bicep foi atualizado, crie uma solicitação de pull.

  1. No navegador, selecione Código.

  2. Selecione 2 branches para abrir a lista de branches em seu repositório do GitHub.

    Captura de tela do GitHub que mostra a lista de branchs do repositório.

    O aviso Comparar e criar pull request aparece por um curto período quando você envia alterações por push para um branch que ainda não tem uma solicitação de pull aberta. É um atalho para a página Abrir uma solicitação de pull.

  3. Próximo ao branch feature/linux-app, selecione Nova solicitação de pull. Talvez seja necessário selecionar o ícone Mais (...) para exibir a opção Novo pull request.

    Captura de tela do GitHub que mostra o link para criar uma solicitação de pull para o branch de aplicativo linux de barra de recursos.

  4. Selecione Criar solicitação de pull.

    Captura de tela do painel

    A página de detalhes da solicitação de pull é exibida.

  5. Veja a seção Verificações dos detalhes da solicitação de pull.

    Após um momento, observe que uma verificação automática é disparada. A verificação executa o fluxo de trabalho de validação da solicitação de pull.

    O fluxo de trabalho pode levar algum tempo para iniciar a execução. Atualize a janela do navegador até ver as verificações de status.

    Quando a verificação for concluída, você poderá ver que ela falhou.

    Captura de tela do GitHub que mostra a verificação de status com falha na página de detalhes da solicitação de pull.

    Observação

    O GitHub permite mesclar a solicitação de pull mesmo que as verificações de status tenham falhado. Em uma solução real, você deve configurar uma regra de proteção de branch para impedir que um pull request seja mesclado até que suas verificações de status tenham sido bem-sucedidas.

Corrigir os erros da validação da solicitação de pull

  1. Na página de verificação de status, selecione Detalhes para inspecionar o log do fluxo de trabalho.

    Captura de tela do GitHub que mostra o log de fluxo de trabalho, incluindo o erro de validação.

    O log inclui esta mensagem do linter do Bicep:

    Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
    
  2. No Visual Studio Code, abra o arquivo deploy/main.bicep.

    Na linha 20, há uma variável chamada appServiceAppLinuxFrameworkVersion. A variável não é usada. Em seguida, você corrigirá esse erro.

  3. Na definição do recurso appServiceApp, atualize a propriedade linuxFxVersion para usar a variável em vez de definir a propriedade com o valor embutido em código:

    resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
        siteConfig: {
          linuxFxVersion: appServiceAppLinuxFrameworkVersion
        }
      }
    }
    
  4. No terminal do Visual Studio Code, faça commit das alterações e efetue push para o repositório.

    git add .
    git commit -m "Fix Bicep file"
    git push origin feature/linux-app
    

Monitorar e mesclar a solicitação de pull

  1. Reabra o navegador na página de detalhes da solicitação de pull.

    A validação da solicitação de pull é executada novamente. Se a verificação de status não estiver em execução, atualize sua página.

    Aguarde a conclusão da verificação. Desta vez, ela é bem-sucedida. Não há erros de sintaxe nem de linter no arquivo do Bicep, portanto, você está pronto para mesclar a solicitação de pull.

  2. Selecione Mesclar solicitação de pull para fechar a solicitação de pull e mesclar as alterações na ramificação principal.

    Captura de tela do GitHub que mostra o botão

  3. Selecione Confirmar mesclagem.