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 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 um commit é efetuado no código-fonte do serviço de cupom ou nos testes de unidade na ramificação
main
. - Define variáveis de ambiente específicas da etapa.
- Tem um trabalhoou 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 ativação e outros artefatos das GitHub Actions ou workflows dependem das apps e 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.
Complete as seguintes etapas para criar a ação de build do GitHub Actions:
Vá para o repositório bifurcado no GitHub, selecione na guia Actions.
Na página Get started with GitHub Actions, selecione o link set up a workflow yourself.
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 de Registro de Contêiner do Azure pelo nome ACR criado na unidade anterior; por exemplo, acseshop186748394.
Substitua o fluxo de trabalho padrão main.yml nome do arquivo por azure-kubernetes-service.ymle selecione Commit changes.
No ecrã Commit changes, selecione Commit directly to the main branch e, em seguida, selecione Commit changes.
Você terminou de criar o fluxo de trabalho de build para o seu pipeline de CI/CD.
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.
- No repositório, selecione o separador Actions.
- À esquerda, em All workflows, selecione o fluxo de trabalho Build and deploy an app to AKS e, em seguida, selecione Run workflow.
Monitorizar a compilação
Para visualizar o progresso em tempo real da compilação:
No seu repositório, selecione a guia Actions.
Selecione a execução 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ê esperar alguns minutos, as etapas do trabalho devem ser concluídas com êxito.
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