Exercício – Criar uma ação do GitHub para compilar uma imagem de contêiner
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:
Vá para o repositório bifurcado no GitHub e selecione a guia Actions.
Na página Get started with GitHub Actions, selecione o link set up a workflow yourself.
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.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 do ACR criado na unidade anterior, por exemplo, acseshop186748394.
Substitua o nome do arquivo de fluxo de trabalho padrão main.yml por azure-kubernetes-service.yml e, em seguida, selecione Commit changes.
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.
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.
- No repositório, selecione a guia Actions.
- À 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:
No repositório, selecione a guia Actions.
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.
Selecione o trabalho buildImage.
As etapas no trabalho deverão ser concluídas com êxito após alguns minutos.
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