Exercício – Criar uma ação do GitHub para criar uma imagem de contêiner
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:
Vá para o repositório copiado 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 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.
Substitua o nome do arquivo padrão de fluxo de trabalho main.yml por azure-kubernetes-service.yml, e então selecione Commit changes.
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.
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 tableSubstituindo 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.
- No repositório, selecione a guia Actions.
- À 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:
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 confirmação usada na etapa anterior.
Selecione o trabalho buildImage.
Se você aguardar alguns minutos, as etapas no trabalho deverão ser concluídas com êxito.
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 tableVocê 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

