Exercício – criar um fluxo de trabalho para uma solicitação de pull
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
No Visual Studio Code, crie um arquivo chamado pr-validation.yml na pasta .github/workflows.
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.
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.
Salve suas alterações.
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.
No terminal do Visual Studio Code, crie um branch para suas alterações executando o seguinte comando:
git checkout -b feature/linux-app
Abra o arquivo main.bicep na pasta deploy.
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.
Atualize a definição de recurso
appServicePlan
. Adicione a propriedadekind
e a propriedadereserved
no objetoproperties
:resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { name: appServicePlanName location: location sku: environmentConfigurationMap[environmentType].appServicePlan.sku kind: 'linux' properties: { reserved: true } }
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.Salve suas alterações.
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.
No navegador, selecione Código.
Selecione 2 branches para abrir a lista de branches em seu repositório do GitHub.
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.
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.
Selecione Criar solicitação de pull.
A página de detalhes da solicitação de pull é exibida.
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.
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
Na página de verificação de status, selecione Detalhes para inspecionar o log do fluxo de trabalho.
O log inclui esta mensagem do linter do Bicep:
Error no-unused-vars: Variable "appServiceAppLinuxFrameworkVersion" is declared but never used.
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.Na definição do recurso
appServiceApp
, atualize a propriedadelinuxFxVersion
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 } } }
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
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.
Selecione Mesclar solicitação de pull para fechar a solicitação de pull e mesclar as alterações na ramificação principal.
Selecione Confirmar mesclagem.