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

Concluído

Nesta unidade, vai concluir as seguintes tarefas:

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

Criar a ação de compilação

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

  • Aciona quando uma confirmação é enviada por push para o código-fonte do serviço de cupom ou testes de unidade na main ramificação.
  • Define as variáveis de ambiente específicas dos passos.
  • Tem um trabalho ou 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 acionamento e outros artefactos de GitHub Actions ou fluxos de trabalho dependem das aplicações e dos ambientes. Para facilitar a compreensão, os detalhes são mantidos simples neste exemplo. Os fluxos de trabalho de compilação e implantação têm como escopo as alterações do serviço do 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 compilação de ações do GitHub:

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

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

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

  3. Na página seguinte, 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 seu Registro de Contêiner do Azure pelo nome ACR criado na unidade anterior, por exemplo, acseshop186748394.

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

  5. Commit changes No ecrã, selecione e, em seguida, selecione Commit directly to the main branch Commit changes.

    Concluiu a criação do fluxo de trabalho da compilação para o seu pipeline CI/CD.

  6. No seu terminal, execute este comando para visualizar as versões atuais do serviço do produto armazenadas 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 seu ACR, você verá uma saída semelhante à seguinte:

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

Acionar a compilação

O fluxo de trabalho de compilação é acionado automaticamente assim que você confirma o arquivo de fluxo de trabalho. Você também pode acionar a compilação manualmente.

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

Monitorizar a compilação

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

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

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

  3. Selecione o buildImage trabalho.

    Screenshot showing a GitHub workflow in progress.

  4. Se você esperar alguns minutos, as etapas do trabalho devem ser concluídas com êxito.

  5. No seu terminal, execute este comando novamente para visualizar as versões do serviço do produto armazenadas no ACR.

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

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

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