Início Rápido: Implantar arquivos Bicep usando GitHub Actions

O GitHub Actions é um conjunto de recursos do GitHub para automatizar seus fluxos de trabalho de desenvolvimento de software. Neste início rápido, use o GitHub Actions de implantação do Azure Resource Manager para automatizar a implantação de um arquivo Bicep no Azure.

Ele fornece uma breve introdução a ações do GitHub e arquivos Bicep. Se você quiser etapas mais detalhadas sobre como configurar as ações do GitHub e o projeto, confira Implantar recursos do Azure usando o Bicep e o GitHub Actions.

Pré-requisitos

Criar grupo de recursos

Crie um grupos de recursos. Posteriormente, neste início rápido, você implantará seu arquivo Bicep nesse grupo de recursos.

az group create -n exampleRG -l westus

Gerar as credenciais de implantação

O GitHub Actions é executado sob uma identidade. Use o comando az ad sp create-for-rbac para criar uma entidade de serviço para a identidade. Conceda à entidade de serviço a função de colaborador para o grupo de recursos criado na sessão anterior para que a ação do GitHub com a identidade possa criar recursos neste grupo de recursos. É recomendável que você conceda acesso mínimo necessário.

az ad sp create-for-rbac --name {app-name} --role contributor --scopes /subscriptions/{subscription-id}/resourceGroups/exampleRG --json-auth

Substitua o espaço reservado {app-name} pelo nome do aplicativo. Substitua {subscription-id} por sua ID da assinatura.

A saída é um objeto JSON com as credenciais de atribuição de função que fornecem acesso ao aplicativo do Serviço de Aplicativo semelhante ao mostrado abaixo.

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

Copie esse objeto JSON para uso posterior. Você só precisará das seções com os valores clientId, clientSecret, subscriptionId e tenantId. Certifique-se de que você não tenha uma vírgula extra no final da última linha, por exemplo, a linha tenantId no exemplo anterior; caso contrário, isso resultará em um arquivo JSON inválido. Você receberá um erro durante a implantação dizendo "Falha no logon com o Erro: o conteúdo não é um objeto JSON válido. Certifique-se de que o "tipo de autenticação" esteja correto."

Configurar os segredos do GitHub

Crie segredos para suas credenciais, seu grupo de recursos e suas assinaturas do Azure. Você usará esses segredos na seção Criar fluxo de trabalho.

  1. Navegar até o repositório no GitHub.

  2. Selecione Configurações > Segredos e variáveis > Ações > Novo segredo do repositório.

  3. Cole toda a saída JSON do comando da CLI do Azure no campo valor do segredo. Nomeie o segredo como AZURE_CREDENTIALS.

  4. Crie outro segredo chamado AZURE_RG. Adicione o nome do grupo de recursos ao campo de valor do segredo (exampleRG).

  5. Crie outro segredo chamado AZURE_SUBSCRIPTION. Adicione sua ID de assinatura ao campo de valor do segredo (exemplo: 90fd3f9d-4c61-432d-99ba-1273f236afa2).

Adicionar um arquivo Bicep

Adicione um arquivo Bicep ao seu repositório do GitHub. O arquivo Bicep a seguir cria uma conta de armazenamento:

@minLength(3)
@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Standard_ZRS'
  'Premium_LRS'
  'Premium_ZRS'
  'Standard_GZRS'
  'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'

resource stg 'Microsoft.Storage/storageAccounts@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

O arquivo Bicep exige um parâmetro chamado storagePrefix com 3 a 11 caracteres.

Você pode colocar o arquivo em qualquer lugar do repositório. O exemplo de fluxo de trabalho na próxima seção considera que o arquivo Bicep é denominado main.bicep e está armazenado na raiz do repositório.

Criar fluxo de trabalho

Um fluxo de trabalho define as etapas a serem executadas quando disparadas. É um arquivo YAML (.yml) no caminho .github/workflows/do do seu repositório. A extensão do arquivo do fluxo de trabalho pode ser .yml ou .yaml.

Para criar um fluxo de trabalho, tome as seguintes etapas:

  1. No repositório GitHub, selecione Actions no menu superior.

  2. Selecione Novo fluxo de trabalho.

  3. Selecione Configurar fluxo de trabalho por conta própria.

  4. Renomeie o arquivo do fluxo de trabalho se preferir usar um nome diferente de main.yml. Por exemplo: deployBicepFile.yml.

  5. Substitua o conteúdo do arquivo yml pelo seguinte código:

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

    Substitua mystore pelo seu prefixo de nome da conta de armazenamento.

    Observação

    Em vez disso, você pode especificar um arquivo de parâmetros de formato JSON na ação De implantação do ARM (exemplo: .azuredeploy.parameters.json).

    A primeira seção do arquivo de fluxo de trabalho inclui:

    • nome: Nome do fluxo de trabalho.
    • Ativado: o nome dos eventos do GitHub que acionam o fluxo de trabalho. O fluxo de trabalho é acionado quando há um evento de push na ramificação principal.
  6. Selecione Confirmar alterações.

  7. Selecione Confirmar diretamente na ramificação principal.

  8. Selecione Confirmar novo arquivo (ou Confirmar alterações).

A atualização do arquivo de fluxo de trabalho ou do arquivo Bicep dispara o fluxo de trabalho. O fluxo de trabalho é iniciado logo após o commit das alterações.

Verificar status do fluxo de trabalho

  1. Selecione a guia Actions. Você verá um fluxo de trabalho Criar deployBicepFile.yml listado. O fluxo de trabalho leva de um a dois minutos para ser executado.
  2. Selecione o fluxo de trabalho para abri-lo e verifique se o Status é Success.

Limpar os recursos

Quando seu grupo de recursos e repositório não forem mais necessários, limpe os recursos implantados excluindo o grupo de recursos e o repositório GitHub.

az group delete --name exampleRG

Próximas etapas