Compartilhar via


Tutorial: implantar executores e agentes de CI/CD auto-hospedados com trabalhos dos Aplicativos de Contêiner do Azure

GitHub Actions e Azure Pipelines permitem que você execute fluxos de trabalho de CI/CD com executores e agentes auto-hospedados. Você pode executar executores e agentes auto-hospedados usando Aplicativos de Contêiner do Azure orientados a eventos trabalhos.

Os executores auto-hospedados são úteis quando você precisa executar fluxos de trabalho que exigem acesso a recursos ou ferramentas locais que não estão disponíveis para um executor hospedado na nuvem. Por exemplo, um executor auto-hospedado em um trabalho de Aplicativos de Contêiner do Azure permite que seu fluxo de trabalho acesse recursos dentro da rede virtual do trabalho que não são acessíveis a um executor hospedado na nuvem.

A execução de executores auto-hospedados como trabalhos orientados a eventos permite que você aproveite a natureza sem servidor dos Aplicativos de Contêiner do Azure. Os trabalhos são executados automaticamente quando um fluxo de trabalho é acionado e encerrados quando o trabalho é concluído.

Você paga apenas pelo tempo de execução do trabalho.

Nesse tutorial, você aprende como executar executores do GitHub Actions como um trabalho de Aplicativos de Contêiner do Azure orientado a eventos.

  • Crie um ambiente de Aplicativos de Contêiner do Azure para implantar seu executor auto-hospedado
  • Crie um repositório GitHub para executar um fluxo de trabalho que usa um executor auto-hospedado
  • Crie uma imagem de contêiner que execute um executor do GitHub Actions
  • Implantar o executor como um trabalho no ambiente Aplicativos de Contêiner do Azure
  • Crie um fluxo de trabalho que use o executor auto-hospedado e verifique se ele é executado

Importante

Os executores auto-hospedados são recomendados apenas para repositórios privados. Usá-los com repositórios públicos pode permitir a execução de códigos perigosos em seu executor auto-hospedado. Para obter mais informações, veja Segurança do executor auto-hospedado.

Neste tutorial, você aprende a executar agentes do Azure Pipelines como um trabalho de aplicativos de contêiner orientado a eventos.

  • Crie um ambiente de Aplicativos de Contêiner do Azure para implantar seu agente auto-hospedado
  • Criar uma organização e um projeto do Azure DevOps
  • Crie uma imagem de contêiner que execute um agente do Azure Pipelines
  • Use um trabalho manual para criar um agente de espaço reservado no ambiente Aplicativos de Contêiner do Azure
  • Implantar o agente como um trabalho no ambiente Aplicativos de Contêiner do Azure
  • Crie um pipeline que use o agente auto-hospedado e verifique se ele é executado

Importante

Agentes auto-hospedados são recomendados apenas para projetos privados. Usá-los com projetos públicos pode permitir a execução de códigos perigosos em seu agente auto-hospedado. Para obter mais informações, veja Segurança do agente auto-hospedado.

Observação

Os aplicativos e trabalhos de contêiner não oferecem suporte à execução do Docker em contêineres. Quaisquer etapas em seus fluxos de trabalho que usam comandos do Docker falharão quando executadas em um executor ou agente auto-hospedado em um trabalho de Aplicativos de Contêiner do Azure.

Pré-requisitos

Consulte restrições de trabalhos para obter uma lista de limitações.

Instalação

Para entrar no Azure usando a CLIl, execute o comando a seguir e siga os prompts para concluir o processo de autenticação.

az login

Para garantir que você esteja executando a versão mais recente da CLI, execute o comando “upgrade”.

az upgrade

Em seguida, instale ou atualize a extensão dos Aplicativos de Contêiner do Azure para a CLI.

Se você receber erros sobre parâmetros ausentes ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no Azure PowerShell, verifique se está com a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.

az extension add --name containerapp --upgrade

Observação

A partir de maio de 2024, as extensões da CLI do Azure já não permitem funcionalidades de versão prévia do recurso por padrão. Para acessar as versões prévias dos recursos dos Aplicativos de Contêiner, instale a extensão Aplicativos de Contêiner com --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Agora que a extensão ou módulo atual está instalado, registre os namespaces Microsoft.App e Microsoft.OperationalInsights.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Criar variáveis de ambiente

Agora que a configuração da CLI do Azure foi concluída, você pode definir as variáveis de ambiente que são usadas ao longo deste artigo.

RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="github-actions-runner-job"
RESOURCE_GROUP="jobs-sample"
LOCATION="northcentralus"
ENVIRONMENT="env-jobs-sample"
JOB_NAME="azure-pipelines-agent-job"
PLACEHOLDER_JOB_NAME="placeholder-agent-job"

Criar um ambiente dos Aplicativos de Contêiner

O ambiente dos Aplicativos de Contêiner do Azure funciona como um limite seguro em torno de aplicativos e trabalhos de contêiner, de modo que eles possam compartilhar a rede e se comunicar entre si.

Observação

Para criar um ambiente de Aplicativos de Contêiner do Azure integrado a uma rede virtual existente, veja Fornecer uma rede virtual para um ambiente interno de Azure Container Apps.

  1. Crie um grupo de recursos usando o comando a seguir.

    az group create \
        --name "$RESOURCE_GROUP" \
        --location "$LOCATION"
    
  2. Crie o ambiente dos Aplicativos de Contêiner usando o comando a seguir.

    az containerapp env create \
        --name "$ENVIRONMENT" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION"
    

Crie um repositório GitHub para executar um fluxo de trabalho

Para executar um fluxo de trabalho, você precisa criar um repositório GitHub que contenha a definição do fluxo de trabalho.

  1. Acesse o GitHub e faça logon.

  2. Crie um novo repositório inserindo os valores a seguir.

    Configuração Valor
    Proprietário Selecione seu nome de usuário do GitHub.
    Nome do repositório Insira um nome para o seu repositório.
    Visibilidade Selecionar Privada.
    Inicialize este repositório com Selecione Adicionar um arquivo LEIAME.

    Deixe o restante dos valores como seleção padrão.

  3. Selecione Criar repositório.

  4. Em seu novo repositório, selecione Ações.

  5. Procure o modelo Fluxo de trabalho simples e selecione Configurar.

  6. Selecione Confirmar alterações para adicionar o fluxo de trabalho ao seu repositório.

O fluxo de trabalho é executado no executor ubuntu-latest hospedado no GitHub e imprime uma mensagem no console. Posteriormente, você substituirá o executor hospedado no GitHub por um executor auto-hospedado.

Obtenha um token de acesso pessoal do GitHub

Para executar um executor auto-hospedado, você precisa criar um token de acesso pessoal (PAT) no GitHub. Cada vez que um executor é iniciado, o PAT é usado para gerar um token para registrar o executor no GitHub. O PAT também é usado pela regra de escala do executor GitHub Actions para monitorar a fila de fluxo de trabalho do repositório e iniciar executores conforme necessário.

Observação

Os PATs (tokens de acesso pessoal) têm uma data de validade. Gire regularmente seus tokens para garantir que eles permaneçam válidos (não expirados) para manter o serviço de maneira ininterrupta.

  1. No GitHub, selecione sua foto de perfil no canto superior direito e selecione Configurações.

  2. Selecione Configurações do desenvolvedor.

  3. Em Tokens de acesso pessoal, selecione Tokens refinados.

  4. Selecione Gerar novo token.

  5. Na tela Novo token de acesso pessoal refinado, insira os seguintes valores.

    Configuração Valor
    Nome do Token Insira um nome para o seu token.
    Expiração Selecione 30 dias.
    Acesso ao repositório Selecione Selecione apenas repositórios e selecione o repositório que você criou.

    Insira os seguintes valores para Permissões do repositório.

    Configuração Valor
    Ações Selecione Somente leitura.
    Administração Selecione Ler e escrever.
    Metadados Selecione Somente leitura.
  6. Selecione Gerar token.

  7. Copie o valor do token.

  8. Defina variáveis que serão usadas para configurar o executor e a regra de escala posteriormente.

    GITHUB_PAT="<GITHUB_PAT>"
    REPO_OWNER="<REPO_OWNER>"
    REPO_NAME="<REPO_NAME>"
    

    Substitua os espaços reservados pelos seguintes valores:

    Espaço reservado Valor
    <GITHUB_PAT> O GitHub PAT que você gerou.
    <REPO_OWNER> O proprietário do repositório que você criou anteriormente. Esse valor geralmente é seu nome de usuário do GitHub.
    <REPO_NAME> O nome do repositório que você criou anteriormente. Esse valor é o mesmo nome que você digitou no campo Nome do repositório.

Crie a imagem do contêiner do executor do GitHub Actions

Para criar um executor auto-hospedado, você precisa criar uma imagem de contêiner que execute o executor. Nessa seção, você criará a imagem do contêiner e a enviará por push para um registro de contêiner.

Observação

A imagem que você cria nesse tutorial contém um executor auto-hospedado básico adequado para execução como um trabalho de Aplicativos de Contêiner do Azure. Você pode personalizá-lo para incluir ferramentas ou dependências adicionais exigidas por seus fluxos de trabalho.

  1. Defina um nome para sua imagem de contêiner e registro.

    CONTAINER_IMAGE_NAME="github-actions-runner:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Substitua <CONTAINER_REGISTRY_NAME> por um nome exclusivo para criar um registro de contêiner. Os nomes de conta de armazenamento precisam ser exclusivos no Azure, ter de 5 a 50 caracteres de comprimento e ter apenas números e letras minúsculas.

  2. Crie um registro de contêiner.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. O Dockerfile para criar a imagem do runner está disponível em GitHub. Execute o comando a seguir para clonar o repositório e compilar a imagem de contêiner na nuvem usando o az acr build comando .

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.github" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    A imagem agora está disponível no registro de contêiner.

Implantar um executor auto-hospedado como um trabalho

Agora você pode criar um trabalho que use a imagem do contêiner. Nessa seção, você cria um trabalho que executa o executor auto-hospedado e se autentica no GitHub usando o PAT gerado anteriormente. O trabalho usa a github-runner regra de escala para criar execuções de trabalho com base no número de execuções de fluxo de trabalho pendentes.

  1. Crie um trabalho no ambiente de Aplicativos de Contêiner.

    az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Event \
        --replica-timeout 1800 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --min-executions 0 \
        --max-executions 10 \
        --polling-interval 30 \
        --scale-rule-name "github-runner" \
        --scale-rule-type "github-runner" \
        --scale-rule-metadata "githubAPIURL=https://api.github.com" "owner=$REPO_OWNER" "runnerScope=repo" "repos=$REPO_NAME" "targetWorkflowQueueLength=1" \
        --scale-rule-auth "personalAccessToken=personal-access-token" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$GITHUB_PAT" \
        --env-vars "GITHUB_PAT=secretref:personal-access-token" "GH_URL=https://github.com/$REPO_OWNER/$REPO_NAME" "REGISTRATION_TOKEN_API_URL=https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/actions/runners/registration-token" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    A tabela a seguir descreve os parâmetros usados no comando.

    Parâmetro Descrição
    --replica-timeout A duração máxima que um réplica pode executar.
    --replica-retry-limit O número de vezes para tentar novamente uma réplica com falha.
    --replica-completion-count O número de réplicas a serem concluídas com êxito antes que uma execução de trabalho seja considerada bem-sucedida.
    --parallelism O número de réplicas a serem iniciadas por execução de trabalho.
    --min-executions O número mínimo de execuções de trabalho a serem executadas por intervalo de sondagem.
    --max-executions O número máximo de execuções de trabalho a serem executadas por intervalo de sondagem.
    --polling-interval O intervalo de sondagem no qual avaliar a regra de escala.
    --scale-rule-name O nome da regra de escala.
    --scale-rule-type O tipo de regra de escala a ser usada. Para saber mais sobre o escalador de execuções do GitHub, consulte a documentação do KEDA.
    --scale-rule-metadata Os metadados da regra de escala. Se você estiver usando GitHub Enterprise, atualize githubAPIURL com o URL da API.
    --scale-rule-auth A autenticação para a regra de escala.
    --secrets Os segredos a serem usados para o trabalho.
    --env-vars As variáveis de ambiente a serem usadas para o trabalho.
    --registry-server O servidor do registro de contêiner a ser usado para o trabalho. Para um Registro de Contêiner do Azure, o comando configura automaticamente a autenticação.

    A configuração da regra de escala define a origem do evento a ser monitorada. É avaliado em cada intervalo de sondagem e determina quantas execuções de trabalho serão acionadas. Para saber mais, confira Definir regras de dimensionamento.

O trabalho controlado por eventos agora é criado no ambiente de Aplicativos de Contêiner.

Execute um fluxo de trabalho e verifique o trabalho

O trabalho está configurado para avaliar a regra de escala a cada 30 segundos. Durante cada avaliação, ele verifica o número de execuções de fluxo de trabalho pendentes que exigem um executor auto-hospedado e inicia uma nova execução de trabalho para o fluxo de trabalho pendente, até um máximo configurado de 10 execuções.

Para verificar se o trabalho foi configurado corretamente, modifique o fluxo de trabalho para usar um executor auto-hospedado e acione uma execução de fluxo de trabalho. Você pode então visualizar os logs de execução do trabalho para ver a execução do fluxo de trabalho.

  1. No repositório GitHub, navegue até o fluxo de trabalho gerado anteriormente. É um arquivo YAML no diretório .github/workflows.

  2. Selecione Editar no local.

  3. Atualize a propriedade runs-on para self-hosted:

    runs-on: self-hosted
    
  4. Selecione Confirmar alterações....

  5. Selecione Confirmar alterações.

  6. Navegue até a guia Ações.

    Um novo fluxo de trabalho agora está na fila. Dentro de 30 segundos, a execução do trabalho será iniciada e o fluxo de trabalho será concluído logo em seguida.

    Aguarde a conclusão da ação antes de prosseguir para a próxima etapa.

  7. Liste as execuções do trabalho para confirmar se uma execução de trabalho foi criada e concluída com êxito.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Crie um projeto e repositório do Azure DevOps

Para executar um pipeline, você precisa de um projeto e repositório do Azure DevOps.

  1. Navegue até Azure DevOps e entre em sua conta.

  2. Selecione uma organização existente ou crie uma nova.

  3. Na página de visão geral da organização, selecione Novo projeto e insira os valores a seguir.

    Configuração Valor
    Nome do projeto Insira um nome para seu projeto.
    Visibilidade Selecionar Privada.
  4. Selecione Criar.

  5. Na navegação lateral, selecione Repos.

  6. Em Inicializar branch principal com um README ou .gitignore, selecione Adicionar um README.

  7. Deixe o restante dos valores como padrão e selecione Inicializar.

Crie um novo pool de agentes

Crie um novo pool de agentes para executar o executor auto-hospedado.

  1. No seu projeto Azure DevOps, expanda a barra de navegação esquerda e selecione Configurações do projeto.

    Captura de tela do botão de configurações do projeto Azure DevOps.

  2. Na seção Pipelines no menu de navegação Configurações do projeto, selecione Pools de agentes.

    Captura de tela do botão de pools de agentes do Azure DevOps.

  3. Selecione Adicionar pool e insira os valores a seguir.

    Configuração Valor
    Pool para vincular Selecione Novo.
    Tipo de pool Selecione Auto-hospedado.
    Nome Insira aplicativos de contêiner.
    Conceder permissão de acesso a todos os pipelines Selecione essa caixa de seleção.
  4. Selecione Criar.

Obtenha um token de acesso pessoal do Azure DevOps

Para executar um executor auto-hospedado, você precisa criar um PAT (token de acesso pessoal) no Azure DevOps. O PAT é usado para autenticar o executor com Azure DevOps. Também é usado pela regra de escala para determinar o número de execuções de pipeline pendentes e disparar novas execuções de trabalho.

[!OBSERVAÇÃO]

Os PATs (tokens de acesso pessoal) têm uma data de validade. Gire regularmente seus tokens para garantir que eles permaneçam válidos (não expirados) para manter o serviço de maneira ininterrupta.

  1. No Azure DevOps, selecione Configurações do usuário ao lado da foto do seu perfil no canto superior direito.

  2. Selecione Tokens de acesso pessoal.

  3. Na página Tokens de acesso pessoal, selecione Novo Token e insira os seguintes valores.

    Configuração Valor
    Nome Insira um nome para o seu token.
    Organização Selecione a organização que você escolheu ou criou anteriormente.
    Escopos Selecione Personalizado definido.
    Mostrar todos os escopos Selecione Mostrar todos os escopos.
    Pools de agentes (ler e gerenciar) Selecione pools de agentes (ler e gerenciar).

    Deixe todos os outros escopos desmarcados.

  4. Selecione Criar.

  5. Copie o valor do token para um local seguro.

    Você não pode recuperar o token depois de sair da página.

  6. Defina variáveis que serão usadas para configurar os jobs dos Aplicativos de Contêiner posteriormente.

    AZP_TOKEN="<AZP_TOKEN>"
    ORGANIZATION_URL="<ORGANIZATION_URL>"
    AZP_POOL="container-apps"
    REGISTRATION_TOKEN_API_URL="<YOUR_REGISTRATION_TOKEN_API_URL>"
    

    Substitua os espaços reservados pelos seguintes valores:

    Espaço reservado Valor Comentários
    <AZP_TOKEN> O PAT do Azure DevOps que você gerou.
    <ORGANIZATION_URL> A URL da sua organização Azure DevOps. Certifique-se de que nenhum / final esteja presente no final do URL. Por exemplo, https://dev.azure.com/myorg ou https://myorg.visualstudio.com.
    <YOUR_REGISTRATION_TOKEN_API_URL> O URL da API do token de registro no arquivo entrypoint.sh. Por exemplo: 'https://myapi.example.com/get-token'

Crie a imagem do contêiner do agente do Azure Pipelines

Para criar um agente auto-hospedado, você precisa criar uma imagem de contêiner que execute o agente. Nessa seção, você criará a imagem do contêiner e a enviará por push para um registro de contêiner.

Observação

A imagem que você cria nesse tutorial contém um agente auto-hospedado básico adequado para execução como um trabalho de Aplicativos de Contêiner do Azure. Você pode personalizá-lo para incluir ferramentas ou dependências adicionais exigidas pelos seus pipelines.

  1. De volta ao seu terminal, defina um nome para a imagem e registro do contêiner.

    CONTAINER_IMAGE_NAME="azure-pipelines-agent:1.0"
    CONTAINER_REGISTRY_NAME="<CONTAINER_REGISTRY_NAME>"
    

    Substitua <CONTAINER_REGISTRY_NAME> por um nome exclusivo para criar um registro de contêiner.

    Os nomes de conta de armazenamento precisam ser exclusivos no Azure, ter de 5 a 50 caracteres de comprimento e ter apenas números e letras minúsculas.

  2. Crie um registro de contêiner.

    az acr create \
        --name "$CONTAINER_REGISTRY_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --location "$LOCATION" \
        --sku Basic \
        --admin-enabled true
    
  3. O Dockerfile para criar a imagem do runner está disponível em GitHub. Execute o comando a seguir para clonar o repositório e compilar a imagem de contêiner na nuvem usando o az acr build comando .

    az acr build \
        --registry "$CONTAINER_REGISTRY_NAME" \
        --image "$CONTAINER_IMAGE_NAME" \
        --file "Dockerfile.azure-pipelines" \
        "https://github.com/Azure-Samples/container-apps-ci-cd-runner-tutorial.git"
    

    A imagem agora está disponível no registro de contêiner.

Crie um agente auto-hospedado de espaço reservado

Antes de poder executar um agente auto-hospedado em seu novo pool de agentes, você precisa criar um agente de espaço reservado. O agente de espaço reservado garante que o pool de agentes esteja disponível. Os pipelines que usam o pool de agentes falham quando não há agente de espaço reservado.

Você pode executar um trabalho manual para registrar um agente de espaço reservado offline. O trabalho é executado uma vez e pode ser excluído. O agente de espaço reservado não consome recursos nos Aplicativos de Contêiner do Azure ou no Azure DevOps.

  1. Crie um trabalho manual no ambiente Aplicativos de Contêiner do Azure que cria o agente de espaço reservado.

    az containerapp job create -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
        --trigger-type Manual \
        --replica-timeout 300 \
        --replica-retry-limit 0 \
        --replica-completion-count 1 \
        --parallelism 1 \
        --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
        --cpu "2.0" \
        --memory "4Gi" \
        --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
        --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" "AZP_PLACEHOLDER=1" "AZP_AGENT_NAME=placeholder-agent" \
        --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"
    

    A tabela a seguir descreve os parâmetros usados no comando.

    Parâmetro Descrição
    --replica-timeout A duração máxima que um réplica pode executar.
    --replica-retry-limit O número de vezes para tentar novamente uma réplica com falha.
    --replica-completion-count O número de réplicas a serem concluídas com êxito antes que uma execução de trabalho seja considerada bem-sucedida.
    --parallelism O número de réplicas a serem iniciadas por execução de trabalho.
    --secrets Os segredos a serem usados para o trabalho.
    --env-vars As variáveis de ambiente a serem usadas para o trabalho.
    --registry-server O servidor do registro de contêiner a ser usado para o trabalho. Para um Registro de Contêiner do Azure, o comando configura automaticamente a autenticação.

    Definir a variável de ambiente AZP_PLACEHOLDER configura o contêiner do agente para registrar-se como um agente de espaço reservado offline sem executar um trabalho.

  2. Execute o trabalho manual para criar o agente de espaço reservado.

    az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    
  3. Liste as execuções do trabalho para confirmar se uma execução de trabalho foi criada e concluída com êxito.

    az containerapp job execution list \
        --name "$PLACEHOLDER_JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    
  4. Verifique se o agente de espaço reservado foi criado no Azure DevOps.

    1. No Azure DevOps, navegue até seu projeto.
    2. Selecione Configurações do projeto>Pools de agentes>aplicativos de contêiner>Agentes.
    3. Confirme se um agente de espaço reservado chamado placeholder-agent está listado e seu status está offline.
  5. O trabalho não é necessário novamente. Você pode excluí-la.

    az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
    

Crie um agente auto-hospedado como um trabalho orientado a eventos

Agora que você tem um agente de espaço reservado, pode criar um agente auto-hospedado. Nessa seção, você cria um trabalho orientado a eventos que executa um agente auto-hospedado quando um pipeline é acionado.

az containerapp job create -n "$JOB_NAME" -g "$RESOURCE_GROUP" --environment "$ENVIRONMENT" \
    --trigger-type Event \
    --replica-timeout 1800 \
    --replica-retry-limit 0 \
    --replica-completion-count 1 \
    --parallelism 1 \
    --image "$CONTAINER_REGISTRY_NAME.azurecr.io/$CONTAINER_IMAGE_NAME" \
    --min-executions 0 \
    --max-executions 10 \
    --polling-interval 30 \
    --scale-rule-name "azure-pipelines" \
    --scale-rule-type "azure-pipelines" \
    --scale-rule-metadata "poolName=$AZP_POOL" "targetPipelinesQueueLength=1" \
    --scale-rule-auth "personalAccessToken=personal-access-token" "organizationURL=organization-url" \
    --cpu "2.0" \
    --memory "4Gi" \
    --secrets "personal-access-token=$AZP_TOKEN" "organization-url=$ORGANIZATION_URL" \
    --env-vars "AZP_TOKEN=secretref:personal-access-token" "AZP_URL=secretref:organization-url" "AZP_POOL=$AZP_POOL" \
    --registry-server "$CONTAINER_REGISTRY_NAME.azurecr.io"

A tabela a seguir descreve os parâmetros da regra de escala usados no comando.

Parâmetro Descrição
--min-executions O número mínimo de execuções de trabalho a serem executadas por intervalo de sondagem.
--max-executions O número máximo de execuções de trabalho a serem executadas por intervalo de sondagem.
--polling-interval O intervalo de sondagem no qual avaliar a regra de escala.
--scale-rule-name O nome da regra de escala.
--scale-rule-type O tipo de regra de escala a ser usada. Para saber mais sobre o escalador Azure Pipelines, veja a documentação do KEDA.
--scale-rule-metadata Os metadados da regra de escala.
--scale-rule-auth A autenticação para a regra de escala.

A configuração da regra de escala define a origem do evento a ser monitorada. É avaliado em cada intervalo de sondagem e determina quantas execuções de trabalho serão acionadas. Para saber mais, confira Definir regras de dimensionamento.

O trabalho controlado por eventos agora é criado no ambiente de Aplicativos de Contêiner.

Execute um pipeline e verifique o trabalho

Agora que configurou um trabalho de agente auto-hospedado, você pode executar um pipeline e verificar se ele está funcionando corretamente.

  1. Na navegação à esquerda do seu projeto Azure DevOps, navegue até Pipelines.

  2. Escolha Criar pipeline.

  3. Selecione Git do Azure Repos como a localização do código.

  4. Selecione o repositório que você criou anteriormente.

  5. Selecione Pipeline de início.

  6. No pipeline YAML, altere pool de vmImage: ubuntu-latest para name: container-apps.

    pool:
      name: container-apps
    
  7. Selecione Salvar e executar.

    O pipeline é executado e usa o trabalho do agente auto-hospedado que você criou no ambiente Aplicativos de Contêiner do Azure.

  8. Liste as execuções do trabalho para confirmar se uma execução de trabalho foi criada e concluída com êxito.

    az containerapp job execution list \
        --name "$JOB_NAME" \
        --resource-group "$RESOURCE_GROUP" \
        --output table \
        --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'
    

Dica

Está enfrentando problemas? Deixe-nos saber sobre GitHub abrindo um problema no repositório dos Aplicativos de Contêiner do Azure.

Limpar os recursos

Quando terminar, execute o comando a seguir para excluir o grupo de recursos que contém os recursos dos seus Aplicativos de Contêiner.

Cuidado

O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se existirem recursos fora do escopo deste tutorial no grupo de recursos especificado, eles também serão excluídos.

az group delete \
    --resource-group $RESOURCE_GROUP

Para excluir seu repositório GitHub, veja Excluir um repositório.

Próximas etapas