Exercício - Implantar um arquivo Bicep a partir de fluxos de trabalho do GitHub

Concluído

As Ações do GitHub são semelhantes aos Pipelines do Azure na natureza. Eles fornecem uma maneira de automatizar o desenvolvimento e as implantações de software. Neste exercício, você aprenderá como implantar um arquivo Bicep usando uma Ação do GitHub.

Pré-requisitos

  • Você precisará de uma conta no GitHub que possa criar gratuitamente aqui.
  • Um repositório GitHub também é necessário para armazenar seu arquivo Bicep e fluxos de trabalho criados anteriormente no Exercício - Criar modelos Bicep. Depois de criar seu repositório GitHub, envie o arquivo Bicep para ele.
  • Para implantação no Azure, é necessário acesso a uma assinatura do Azure, que pode ser criada gratuitamente aqui.

Criando uma entidade de serviço no Azure

Para implantar seus recursos no Azure, você precisará criar uma entidade de serviço que o GitHub possa usar. Portanto, abra um terminal ou use o Cloud Shell no portal do Azure e digite os seguintes comandos:

az login
az ad sp create-for-rbac --name myApp --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/Bicep --sdk-auth

Nota

Não se esqueça de substituir o ID da Subscrição pelo seu.

Quando a operação for bem-sucedida, ela deverá gerar um objeto JSON que contenha suas tenantIdpropriedades , subscriptionId, clientId, clientSecret, e mais algumas, como as seguintes.

{
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
}

Observe este objeto, pois você precisará adicioná-lo aos seus segredos do GitHub.

Criando um segredo do GitHub

No repositório do GitHub, navegue até Settings>Secrets>Actions. Crie um novo segredo chamado AZURE_CREDENTIALS e cole todo o objeto JSON obtido na etapa anterior.

Crie outro segredo para o nome do grupo de recursos com um nome como AZURE_RG e um para a assinatura.

Captura de tela da página de criação e gerenciamento de segredos do GitHub.

Criando uma ação do GitHub

  1. Primeiro, navegue até o repositório e selecione o menu Ações. Em seguida, configure um fluxo de trabalho para criar um fluxo de trabalho vazio no repositório. Você pode renomear o arquivo para um nome diferente, se preferir.

    Captura de tela da criação, edição e visualização de novos arquivos do GitHub.

  2. Substitua o conteúdo do arquivo pelo seguinte trecho:

    on: [push]
    name: Azure ARM
    jobs:
        build-and-deploy:
            runs-on: ubuntu-latest
            steps:
                # Checkout code
                - uses: actions/checkout@main
    
                  # Log into Azure
                - uses: azure/login@v1
                  with:
                      creds: ${{ secrets.AZURE_CREDENTIALS }}
    
                  # Deploy Bicep file
                - name: deploy
                  uses: azure/arm-deploy@v1
                  with:
                      subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
                      resourceGroupName: ${{ secrets.AZURE_RG }}
                      template: ./main.bicep
                      parameters: storagePrefix=stg
                      failOnStdErr: false
    

    Sinta-se à vontade para substituir o prefixo da conta de armazenamento pelo seu.

    Nota

    A primeira parte do fluxo de trabalho define o gatilho e seu nome. O restante define um trabalho e usa algumas tarefas para fazer check-out do código, entrar no Azure e implantar o arquivo Bicep.

  3. Selecione Iniciar confirmação e insira um título e uma descrição na caixa de diálogo pop-up. Em seguida, selecione Confirmar diretamente na ramificação principal, seguido por Confirmar um novo arquivo.

    Captura de tela do GitHub confirma um novo arquivo na ramificação principal.

  4. Navegue até a guia Ações e selecione a ação recém-criada que deve ser executada.

    Captura de tela da ação do GitHub em execução e implantação.

  5. Monitore o status e, quando o trabalho for concluído, verifique o portal do Azure para ver se a conta de armazenamento está sendo criada.

    Captura de tela da ação do GitHub executada com êxito.