Exercício – Criar uma ação do GitHub para criar uma imagem de contêiner

Concluído

Nesta unidade, você concluirá as seguintes tarefas:

  • Crie uma ação do GitHub para implementar um pipeline de build.
  • Modifique o código do serviço de cupom para disparar o processo de build.
  • Monitore o progresso do fluxo de trabalho de build em tempo real.

Criar a ação de build

O código YAML neste procedimento define uma ação do GitHub que:

  • Dispara quando um commit é enviado ao código-fonte do serviço de cupons ou a testes de unidade no branch main.
  • Define variáveis de ambiente específicas da etapa.
  • Tem um trabalho ou um conjunto de etapas que são executadas no mesmo executor de fluxo de trabalho, chamado Build and push image to ACR.

Importante

As condições de gatilho e outros artefatos de fluxos de trabalho ou do GitHub Actions dependem dos aplicativos e ambientes. Para facilitar a compreensão, os detalhes são mantidos simples neste exemplo. Tanto o build quanto os fluxos de trabalho de implantação têm como escopo as alterações do serviço de produto porque todos os microsserviços são mantidos em um único repositório. Em um cenário de produção real, cada microsserviço seria mantido em seu próprio repositório separado.

Conclua as seguintes etapas para criar a ação de build do GitHub Actions:

  1. Vá para o repositório copiado no GitHub e selecione a guia Actions.

  2. Na página Get started with GitHub Actions, selecione o link set up a workflow yourself.

    Captura de tela que mostra a guia Ações no repositório GitHub, realçando o link de criação do fluxo de trabalho.

  3. Na próxima página, cole o seguinte código YAML no editor.

    name: Build and deploy an app to AKS
    
    on:
      push:
        branches: ["main"]
      workflow_dispatch:
    
    env:
      # Local environment variables used later in the workflow
      AZURE_CONTAINER_REGISTRY: 'name of your Azure Container Registry'
      CONTAINER_NAME: 'productservice'
      RESOURCE_GROUP: 'rg-eshop'
      CLUSTER_NAME: 'aks-eshop'
      DEPLOYMENT_MANIFEST_PATH: './product.yml'
      DOCKER_PATH: './DockerfileProducts.acr'
    
    jobs:
      buildImage:
        permissions:
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials stored in GitHub secrets
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Builds and pushes an image up to your Azure Container Registry
          - name: Build and push image to ACR
            run: |
              az acr build --file ${{ env.DOCKER_PATH }} --image ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }} --registry ${{ env.AZURE_CONTAINER_REGISTRY }} -g ${{ env.RESOURCE_GROUP }} .
    
    

    Substitua o nome do Registro de Contêiner do Azure pelo nome do ACR criado na unidade anterior; por exemplo, acseshop186748394.

  4. Substitua o nome do arquivo padrão de fluxo de trabalho main.yml por azure-kubernetes-service.yml, e então selecione Commit changes.

  5. Commit changes Na tela, selecione Commit directly to the main branche selecione Commit changes.

    Você concluiu a criação do fluxo de trabalho de build para seu pipeline de CI/CD.

  6. No terminal, execute este comando para exibir as versões atuais do serviço de produto armazenado no ACR:

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Substituindo o AZURE_CONTAINER_REGISTRY pelo nome do ACR, você deverá ver uma saída semelhante à seguinte:

    Result
    ----------------------------------------
    v1
    

Disparar o build

O fluxo de trabalho de build é disparado automaticamente assim que você fizer commit do arquivo do fluxo de trabalho. Você também pode disparar o build manualmente.

  1. No repositório, selecione a guia Actions.
  2. À esquerda, em All workflows, selecione o Build and deploy an app to AKS fluxo de trabalho e selecione Run workflow.

Monitorar o build

Para visualizar o progresso em tempo real da construção:

  1. No repositório, selecione a guia Actions.

  2. Selecione a execução do fluxo de trabalho mais recente listada para o fluxo de trabalho Build and deploy an app to AKS. O nome da execução é a mensagem de confirmação usada na etapa anterior.

  3. Selecione o trabalho buildImage.

    Captura de tela mostrando um fluxo de trabalho do GitHub em andamento.

  4. Se você aguardar alguns minutos, as etapas no trabalho deverão ser concluídas com êxito.

  5. No terminal, execute este comando novamente para exibir as versões do serviço de produto armazenado no ACR.

    az acr repository show-tags -n AZURE_CONTAINER_REGISTRY --repository productservice --orderby time_desc --output table
    

    Você deverá ver uma saída semelhante à seguinte que mostra que uma nova versão da imagem foi adicionada ao ACR do fluxo de trabalho do GitHub:

    Result
    ----------------------------------------
    8c75edb7a349ec570bd4eac397015bc3c547186e
    v1