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

Concluído

Nesta unidade, você concluirá as seguintes tarefas:

  • Criar uma ação do GitHub para implementar um pipeline de build.
  • Modificar o código do serviço de cupom para disparar o fluxo de trabalho de build.
  • Monitorar 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 cupom ou a testes de unidade no branch main.
  • Define as 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, denominado 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. Neste exemplo é mantida a simplicidade dos detalhes para facilitar a compreensão. Os fluxos de trabalho de build e implantação têm como escopo as mudanças de serviço do produto, pois 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.

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

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

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

    Screenshot that shows the Actions tab in the GitHub repository, highlighting the workflow creation link.

  3. Na próxima página, cole o código YAML a seguir 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'
    
    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 seu Registro de Contêiner do Azure pelo nome do ACR criado na unidade anterior, por exemplo, acseshop186748394.

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

  5. Na tela Commit changes, selecione Commit directly to the main branch e, em seguida, 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 do produto armazenado no ACR:

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

    Ao substituir 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 de 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 fluxo de trabalho Build and deploy an app to AKS e, em seguida, selecione Run workflow.

Monitorar o build

Para ver o andamento do build em tempo real:

  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 commit que você usou na etapa anterior.

  3. Selecione o trabalho buildImage.

    Screenshot showing a GitHub workflow in progress.

  4. As etapas no trabalho deverão ser concluídas com êxito após alguns minutos.

  5. No terminal, execute este comando novamente para exibir as versões do serviço do 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