Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O GitHub Actions e o Azure Pipelines permitem-lhe executar fluxos de trabalho de CI/CD utilizando runners e agentes hospedados por si mesmo. Pode executar runners e agentes auto-hospedados usando jobs dos Azure Container Apps orientados a eventos.
Os runners 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 runner hospedado na nuvem. Por exemplo, um runner auto-hospedado num job de Aplicações de Container permite que o seu fluxo de trabalho aceda a recursos dentro da rede virtual do job que um runner alojado na cloud não consegue aceder.
Executar executores auto-hospedados como trabalhos orientados a eventos permite-lhe aproveitar a natureza sem servidor das Azure Container Apps. Os trabalhos são executados automaticamente quando um fluxo de trabalho é acionado e saem quando o trabalho é concluído.
Paga apenas pelo tempo em que o trabalho está a decorrer.
Neste tutorial, você aprenderá a executar executores de Ações do GitHub como um trabalho de Aplicativos de Contêiner orientado a eventos.
- Crie um ambiente de Aplicativos de Contêiner para implantar seu corredor auto-hospedado
- Criar um repositório GitHub para executar um fluxo de trabalho que usa um executor auto-hospedado
- Criar uma imagem de contêiner que execute um corredor de ações do GitHub
- Implantar o runner como uma tarefa no ambiente de Aplicações de Contentores
- Crie um fluxo de trabalho que use o executor auto-hospedado e verifique se ele funciona corretamente.
Importante
Os corredores auto-hospedados são recomendados apenas para repositórios privados . Usá-los com repositórios públicos pode permitir que códigos perigosos sejam executados em seu corredor auto-hospedado. Para obter mais informações, consulte Segurança do corredor auto-hospedado.
Observação
Cada token de acesso pessoal (PAT) tem uma data de validade. Certifique-se de alternar regularmente os PATs antes da data de expiração. Para obter mais informações sobre como gerenciar seu PAT, consulte Usar tokens de acesso pessoal.
Neste tutorial, você aprenderá a executar agentes do Azure Pipelines como um trabalho de Aplicativos de Contêiner controlado por eventos.
- Crie um ambiente de Aplicativos de Contêiner para implantar seu agente auto-hospedado
- Criar uma organização e um projeto do Azure DevOps
- Criar uma imagem de contêiner que executa um agente do Azure Pipelines
- Usar um trabalho manual para criar um agente de espaço reservado no ambiente de Aplicativos de Contêiner
- Implantar o agente como uma tarefa no ambiente de Aplicações de Contêineres
- Crie uma pipeline que use o agente auto-hospedado e verifique se está a funcionar corretamente
Importante
Agentes auto-hospedados são recomendados apenas para projetos privados . Usá-los com projetos públicos pode permitir que códigos perigosos sejam executados em seu agente auto-hospedado. Para obter mais informações, consulte Segurança do agente auto-hospedado.
Observação
Cada token de acesso pessoal (PAT) tem uma data de validade. Certifica-te de rodar regularmente os PATs antes das suas datas de validade. Para obter mais informações sobre como gerenciar seu PAT, consulte Usar tokens de acesso pessoal.
Observação
Aplicativos e trabalhos de contêiner não suportam a execução do Docker em contêineres. Todas as etapas em seus fluxos de trabalho que usam comandos do Docker falham quando executadas em um executor ou agente auto-hospedado em um trabalho de Aplicativos de Contêiner.
Pré-requisitos
Conta do Azure: se não tiver uma, pode criar uma gratuitamente.
CLI do Azure: Instale a CLI do Azure.
- Organização de DevOps do Azure: se você não tiver uma organização de DevOps com uma assinatura ativa, poderá criar uma gratuitamente.
Consulte as restrições de trabalhos para obter uma lista de limitações.
Configuração
Para entrar no Azure a partir da CLI, execute o seguinte comando 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 Aplicativos de Contêiner do Azure para a CLI.
Se receber erros relativos a parâmetros em falta ao executar comandos az containerapp na CLI do Azure ou cmdlets do módulo Az.App no PowerShell, assegure-se de ter a versão mais recente da extensão Azure Container Apps instalada.
az extension add --name containerapp --upgrade
Observação
A partir de maio de 2024, as extensões da CLI do Azure não habilitam mais recursos de visualização por padrão. Para aceder às funcionalidades de pré-visualização do Container Apps, instale a extensão Container Apps 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 Microsoft.App namespaces 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 está concluída, você pode definir as variáveis de ambiente 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 de aplicativos de contêiner
O ambiente de Aplicativos de Contêiner do Azure atua como um limite seguro em torno de aplicativos e trabalhos de contêiner para que eles possam compartilhar a mesma rede e se comunicar uns com os outros.
Observação
Para criar um ambiente de Aplicativos de Contêiner integrado a uma rede virtual existente, consulte Fornecer uma rede virtual a um ambiente de Aplicativos de Contêiner do Azure.
Crie um grupo de recursos com o seguinte comando.
az group create \ --name "$RESOURCE_GROUP" \ --location "$LOCATION"Crie o ambiente Container Apps com o seguinte comando.
az containerapp env create \ --name "$ENVIRONMENT" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION"
Criar um repositório GitHub para executar um fluxo de trabalho
Para executar um fluxo de trabalho, precisa de criar um repositório no GitHub que contenha a definição do fluxo de trabalho.
Vai ao GitHub e inicia sessão.
Crie um novo repositório inserindo os seguintes valores.
Configurações Valor Proprietário Selecione seu nome de usuário do GitHub. Nome do repositório Insira um nome para o repositório. Visibilidade Selecione Privado. Inicialize este repositório com Selecione Adicionar um ficheiro LEIA-ME. Use os valores padrão para as outras definições.
Selecione Criar repositório.
No novo repositório, selecione Ações.
Procure o modelo de fluxo de trabalho simples e selecione Configurar.
Selecione Confirmar alterações para adicionar o fluxo de trabalho ao repositório.
O fluxo de trabalho é executado no runner hospedado no ubuntu-latest GitHub e imprime uma mensagem no terminal. Mais tarde, você substitui o corredor hospedado no GitHub por um corredor auto-hospedado.
Obter um token de acesso pessoal do GitHub
Para executar um corredor auto-hospedado, você precisa criar um token de acesso pessoal (PAT) no GitHub. Cada vez que um runner inicia, o PAT gera um token para registar o runner no GitHub. A regra de escala do runner Actions do GitHub usa o PAT para monitorizar a fila de workflow do repositório e iniciar os runners conforme necessário.
Observação
Os Tokens de Acesso Pessoal (PATs) expiram. Rotaciona regularmente os seus tokens para os manter válidos e garantir um serviço ininterrupto.
No GitHub, selecione sua foto de perfil no canto superior direito e selecione Configurações.
Selecione Configurações do desenvolvedor.
Em Tokens de acesso pessoal, selecione Tokens de grão fino.
Selecione Gerar novo token.
Na tela Novo token de acesso pessoal refinado , insira os seguintes valores.
Configurações Valor Nome do token Insira um nome para o seu token. Expiração Selecione 30 dias. Acesso ao repositório Selecione Somente repositórios e selecione o repositório que você criou. Insira os seguintes valores para permissões de repositório.
Configurações Valor Ações Selecione Somente leitura. Administração Selecione Ler e escrever. Metadados Selecione Somente leitura. Selecione Gerar token.
Copie o valor do token.
Define variáveis que usas para configurar o runner e a regra de escala mais tarde.
GITHUB_PAT="<GITHUB_PAT>" REPO_OWNER="<REPO_OWNER>" REPO_NAME="<REPO_NAME>" REGISTRATION_TOKEN_API_URL="<YOUR_REGISTRATION_TOKEN_API_URL>"Substitua os marcadores de posição pelos seguintes valores:
Marcador de posição Valor <GITHUB_PAT>O PAT do GitHub que tu geraste. <REPO_OWNER>O proprietário do repositório criado anteriormente. Esse valor geralmente é seu nome de usuário do GitHub. <REPO_NAME>O nome do repositório criado anteriormente. Esse valor é o mesmo nome que você inseriu no campo Nome do repositório . <YOUR_REGISTRATION_TOKEN_API_URL>A URL da API do token de registro no arquivo entrypoint.sh . Por exemplo, 'https://myapi.example.com/get-token'
Criar a imagem do contentor do runner do GitHub Actions
Para criar um corredor auto-hospedado, você precisa criar uma imagem de contêiner que execute o corredor. Nesta secção, cria-se a imagem de contêiner e carrega-se para um registo de contêineres.
Observação
A imagem que você cria neste tutorial contém um corredor auto-hospedado básico que é adequado para ser executado como um trabalho de Aplicativos de Contêiner. Pode personalizá-lo para incluir outras ferramentas ou dependências que os seus fluxos de trabalho exigam.
Defina um nome para a imagem do contêiner e o 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 do Registro de contêiner devem ser exclusivos no Azure e ter de 5 a 50 caracteres de comprimento, contendo apenas números e letras minúsculas.Crie um registro de contêiner.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku BasicO seu registo de contentores deve permitir que tokens de audiência do Azure Resource Manager (ARM) usem identidade gerida para autenticação a fim de extrair imagens.
Use o comando a seguir para verificar se os tokens ARM têm permissão para acessar seu Registro de Contêiner do Azure (ACR).
az acr config authentication-as-arm show --registry "$CONTAINER_REGISTRY_NAME"Se os tokens ARM forem permitidos, o comando produzirá o seguinte.
{ "status": "enabled" }Se for
statusdisabled, use o seguinte comando para permitir tokens ARM.az acr config authentication-as-arm update --registry "$CONTAINER_REGISTRY_NAME" --status enabledO Dockerfile para criar a imagem do runner está disponível no GitHub. Execute o seguinte comando para clonar o repositório e construir a imagem do contentor na cloud usando o
az acr buildcomando.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 do contêiner.
Criar uma identidade gerenciada atribuída pelo usuário
Para evitar o uso de credenciais administrativas, extraia imagens de repositórios privados no Microsoft Azure Container Registry utilizando identidades geridas para autenticação. Sempre que possível, use uma identidade gerenciada atribuída pelo usuário para extrair imagens.
Crie uma identidade gerida atribuída pelo utilizador. Antes de executar os comandos a seguir, escolha um nome para sua identidade gerenciada e substitua o
\<PLACEHOLDER\>pelo nome.IDENTITY="<YOUR_IDENTITY_NAME>"az identity create \ --name $IDENTITY \ --resource-group $RESOURCE_GROUPObtenha o ID de recurso da identidade.
IDENTITY_ID=$(az identity show \ --name $IDENTITY \ --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)
Implantar um corredor auto-hospedado como um trabalho
Agora você pode criar um trabalho que usa a imagem do contêiner. Nesta secção, cria um trabalho que executa o executor auto-hospedado e autentica com o GitHub usando o PAT que gerou anteriormente. A tarefa usa a github-runner regra de escala para criar execuções de tarefa com base no número de fluxos de trabalho pendentes.
Crie um trabalho no ambiente Container Apps.
az containerapp job create \ --name "$JOB_NAME" \ --resource-group "$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" \ --mi-user-assigned "$IDENTITY_ID" \ --registry-identity "$IDENTITY_ID"A tabela a seguir descreve os principais parâmetros usados no comando.
Parâmetro Descrição --replica-timeoutA duração máxima que uma réplica pode executar. --replica-retry-limitO número de vezes para repetir uma réplica que falhou. --replica-completion-countO número de réplicas que devem ser concluídas com sucesso antes da execução de um trabalho ser considerada bem-sucedida. --parallelismO número de réplicas a serem iniciadas por execução de trabalho. --min-executionsO número mínimo de execuções de trabalho a serem executadas por intervalo de sondagem. --max-executionsO número máximo de execuções de trabalho a serem executadas por intervalo de sondagem. --polling-intervalO intervalo de sondagem no qual se avalia a regra de escala. --scale-rule-nameO nome da regra de escala. --scale-rule-typeO tipo de regra de escala a ser usada. Para saber mais sobre o escalador de corredores do GitHub, consulte a documentação do KEDA. --scale-rule-metadataOs metadados para a regra de escala. Se você estiver usando o GitHub Enterprise, atualize githubAPIURLcom sua URL de API.--scale-rule-authA autenticação para a regra de escala. --secretsOs segredos para usar no trabalho. --env-varsAs variáveis de ambiente a serem usadas para o trabalho. --registry-serverO servidor de 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. --mi-user-assignedO ID do recurso da identidade gerida atribuída pelo utilizador a ser associada à tarefa. --registry-identityA ID de recurso de uma identidade gerenciada para autenticar com o servidor de registro em vez de usar um nome de usuário e senha. Se possível, uma atribuição de função 'acrpull' é criada para a identidade automaticamente. A configuração da regra de escala define a origem do evento a ser monitorada. As regras são avaliadas em cada intervalo de sondagem para determinar quantas execuções de trabalho devem ser acionadas. Para mais informações, veja Definir regras de escalabilidade.
O trabalho controlado por eventos agora é criado no ambiente Container Apps.
Executar um fluxo de trabalho e verificar o trabalho
O trabalho é configurado para avaliar a regra de escala a cada 30 segundos. Durante cada avaliação, verifica o número de execuções de workflows pendentes que requerem um executor auto-hospedado e inicia uma nova execução de tarefa para cada workflow pendente, até um máximo configurado de 10 execuções.
Para verificar a configuração do trabalho, modifique o fluxo de trabalho para usar um runner auto-hospedado e desencadeie uma execução do fluxo de trabalho. Em seguida, você pode exibir os logs de execução do trabalho para ver o fluxo de trabalho executado.
No repositório do GitHub, vai ao fluxo de trabalho que geraste anteriormente. É um arquivo YAML no
.github/workflowsdiretório.Selecione Editar no local.
Atualize a
runs-onpropriedade paraself-hosted:runs-on: self-hostedSelecione Confirmar alterações....
Selecione Confirmar alterações.
Vai ao separador Ações .
Um novo fluxo de trabalho está agora na fila. Em 30 segundos, a execução do trabalho começa e o fluxo de trabalho termina pouco depois.
Aguarde a conclusão da ação antes de avançar para a próxima etapa.
Liste as execuções do trabalho para confirmar que uma execução 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}'
Criar um projeto e repositório do Azure DevOps
Para correr um pipeline, precisas de um projeto e repositório Azure DevOps.
Vai ao Azure DevOps e inicia sessão na tua conta.
Selecione uma organização existente ou crie uma nova.
Na página de visão geral da organização, selecione Novo projeto e insira os seguintes valores.
Configurações Valor Nome do projeto Insira um nome para o seu projeto. Visibilidade Selecione Privado. Selecione Criar.
Na navegação lateral, selecione Repos.
Em Inicializar a ramificação principal com um README ou .gitignore, selecione Adicionar um README.
Mantém os valores predefinidos para o resto das definições e seleciona Inicializar.
Criar um novo pool de agentes
Crie um novo pool de agentes para executar o corredor auto-hospedado.
Em seu projeto do Azure DevOps, expanda a barra de navegação esquerda e selecione Configurações do projeto.
Na seção Pipelines no menu de navegação Configurações do projeto , selecione Pools de agentes.
Selecione Adicionar pool e insira os seguintes valores.
Configurações Valor Pool para vincular Selecione Novo. Tipo de piscina Selecione Servidor próprio. Nome Insira container-apps. Conceder permissão de acesso a todos os pipelines Marque essa caixa de seleção. Selecione Criar.
Obter um token de acesso pessoal do Azure DevOps
Para executar um corredor auto-hospedado, você precisa criar um token de acesso pessoal (PAT) no Azure DevOps. Use o PAT para autenticar o agente executor com Azure DevOps. A regra de escala também usa o token para controlar o número de execuções pendentes de pipeline e desencadear novas execuções de tarefas.
Observação
Os Tokens de Acesso Pessoal (PATs) expiram. Rotares regularmente os seus tokens, isto manterá-os válidos e garantirá um serviço ininterrupto.
No Azure DevOps, selecione Configurações do usuário ao lado da sua foto de perfil no canto superior direito.
Selecione Tokens de acesso pessoal.
Na página Tokens de acesso pessoal , selecione Novo token e insira os seguintes valores.
Configurações Valor Nome Insira um nome para o seu token. Organização Selecione a organização escolhida ou criada anteriormente. Escopos Selecione Definido pelo utilizador. Mostrar todos os escopos Selecione Mostrar todos os escopos. Pools de agentes (visualizar e gerir) Selecione Pools de agentes (Ler e gerenciar). Deixe todos os outros escopos desmarcados.
Selecione Criar.
Copie o valor do token para um local seguro.
Não é possível recuperar o token depois de sair da página.
Define variáveis que usas para configurar os trabalhos das Aplicações Container mais tarde.
AZP_TOKEN="<AZP_TOKEN>" ORGANIZATION_URL="<ORGANIZATION_URL>" AZP_POOL="container-apps"Substitua os marcadores de posição pelos seguintes valores:
Marcador de posição Valor Observações <AZP_TOKEN>O PAT do Azure DevOps que geraste. <ORGANIZATION_URL>A URL da sua organização do Azure DevOps. Certifique-se de que nenhum caractere /esteja presente no final do URL.Por exemplo, https://dev.azure.com/myorgouhttps://myorg.visualstudio.com.
Criar 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. Nesta secção, cria-se a imagem de contêiner e carrega-se para um registo de contêineres.
Observação
A imagem que você cria neste tutorial contém um agente auto-hospedado básico que é adequado para ser executado como um trabalho de Aplicativos de Contêiner. Pode personalizá-lo para incluir outras ferramentas ou dependências que os seus pipelines necessitem.
Importante
Se os seus pipelines criam aplicações .NET Framework, pode ser necessário incluir Mono na imagem do contentor. O ficheiro Docker de exemplo inclui o SDK .NET mas não o Mono. Considere usar um contentor baseado no Windows ou adicionar dependências Mono se necessário.
De volta ao seu terminal, defina um nome para a imagem e o 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 do Registro de contêiner devem ser exclusivos no Azure e ter de 5 a 50 caracteres de comprimento, contendo apenas números e letras minúsculas.
Crie um registro de contêiner.
az acr create \ --name "$CONTAINER_REGISTRY_NAME" \ --resource-group "$RESOURCE_GROUP" \ --location "$LOCATION" \ --sku Basic \ --admin-enabled trueO Dockerfile para criar a imagem do runner está disponível no GitHub. Execute o seguinte comando para clonar o repositório e construir a imagem do contentor na cloud usando o
az acr buildcomando.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 do contêiner.
Criar um agente auto-hospedado provisório
Antes de poderes executar um agente autogerido no teu novo grupo de agentes, precisas de criar um agente temporário. O agente placeholder garante que o pool de agentes esteja disponível. Os pipelines que utilizam o pool de agentes falham quando não há nenhum agente substituto.
Você pode executar um trabalho manual para registrar um agente de espaço reservado offline. O trabalho é executado uma vez e podes apagá-lo. O agente de placeholder não consome recursos nos Azure Container Apps ou no Azure DevOps.
Crie um trabalho manual no ambiente do Container Apps que cria o agente substituto.
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 principais parâmetros usados no comando.
Parâmetro Descrição --replica-timeoutA duração máxima que uma réplica pode executar. --replica-retry-limitO número de vezes para repetir uma réplica que falhou. --replica-completion-countO número de réplicas que devem ser concluídas com sucesso antes de a execução de um trabalho ser considerada bem-sucedida. --parallelismO número de réplicas a serem iniciadas por execução de trabalho. --secretsOs segredos para usar no trabalho. --env-varsAs variáveis de ambiente a serem usadas para o trabalho. --registry-serverO servidor de 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 definição da
AZP_PLACEHOLDERvariável de ambiente configura o container do agente para se registar como um agente temporário offline sem executar uma tarefa.Executar o trabalho manual para criar o agente marcador de posição.
az containerapp job start -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"Liste as execuções do trabalho para confirmar que uma execução 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}'Verifique se o agente de marcador de posição foi criado no Azure DevOps.
- No Azure DevOps, vá para o seu projeto.
- Selecione Configurações do projeto>Grupos de agentes>aplicativos de contêiner>Agentes.
- Confirme se um agente de espaço reservado chamado
placeholder-agentestá listado e se seu status está offline.
Não precisas do emprego outra vez. Poderá eliminá-la.
az containerapp job delete -n "$PLACEHOLDER_JOB_NAME" -g "$RESOURCE_GROUP"
Criar um agente autogerido como uma tarefa orientada a eventos
Depois de criar um agente provisório, pode criar um agente auto-hospedado. Nesta seção, o utilizador cria uma tarefa orientada por eventos que executa um agente autogerido quando um pipeline é iniciado.
Importante
Certifique-se de que a URL da sua organização Azure DevOps está correta e acessível. O escalador KEDA Azure-pipelines requer autenticação adequada e conectividade de rede para monitorizar a fila do pipeline.
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 se avalia 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 do Azure Pipelines, consulte a documentação do KEDA. |
--scale-rule-metadata |
Os metadados para a 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. As regras são avaliadas em cada intervalo de sondagem para determinar quantas execuções de trabalho devem ser acionadas. Para mais informações, veja Definir regras de escalabilidade.
O trabalho controlado por eventos agora é criado no ambiente Container Apps.
Executar um pipeline e verificar a tarefa
Depois de configurares um job de agente auto-hospedado, executa um pipeline para verificar se funciona corretamente.
Na navegação à esquerda do seu projeto Azure DevOps, vá a Pipelines.
Selecione Criar pipeline.
Selecione Azure Repos Git como o local do seu código.
Selecione o repositório criado anteriormente.
Selecione pipeline inicial.
No pipeline YAML, altere o
pooldevmImage: ubuntu-latestparaname: container-apps.pool: name: container-appsSelecione Guardar e executar.
O pipeline é executado e usa o trabalho de agente auto-hospedado que você criou no ambiente de Aplicativos de Contêiner.
Liste as execuções do trabalho para confirmar que uma execução 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}'
Solução de problemas
Se tiver problemas com os seus agentes auto-hospedados, experimente os seguintes passos de resolução de problemas.
Os trabalhos do pipeline permanecem em fila e não acionam os trabalhos das Aplicações Container
Se os seus pipelines permanecerem em fila e não desencadearem execuções de trabalhos, experimente os seguintes passos:
Verifica a configuração da regra de escala. Verifica se os metadados da regra de escala correspondem à sua configuração do Azure DevOps.
az containerapp job show \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --query "properties.configuration.eventTriggerConfig.scale.rules[0]"Certifique-se de que o seu token de acesso pessoal tem as permissões corretas e não está expirado.
O ambiente Container Apps deve conseguir aceder à URL da sua organização Azure DevOps, por isso verifique a conectividade de rede no seu ambiente.
Verifique o intervalo de votação. O intervalo padrão de sondagem é de 30 segundos. Podes aumentá-lo se necessário, mas esta alteração pode atrasar a execução do trabalho.
Verifique se há mensagens de erro nos registos de execução de trabalhos.
az containerapp job execution list \ --name "$JOB_NAME" \ --resource-group "$RESOURCE_GROUP" \ --output table
Dependências ausentes na imagem do contentor
Se encontrar erros como "Não é possível localizar ficheiro executável: 'mono'" ao construir aplicações .NET Framework:
Use imagens base apropriadas. Certifique-se de que a imagem do seu contentor inclui todas as dependências necessárias para o seu processo de construção.
Se precisar de construir aplicações .NET Framework no Linux, adicione Mono à sua imagem de contentor com o seguinte comando:
# Add to your Dockerfile RUN apt-get update && apt-get install -y mono-completeConsidere os contentores do Windows. Para aplicações .NET Framework, considere usar imagens de contentores baseadas em Windows em vez de Linux.
Para versões, utilize o .NET Core versão 5 ou superior. As versões modernas do .NET não requerem Mono e funcionam melhor com contentores Linux.
Problemas de registo de agentes
Se os agentes não se registarem no Azure DevOps:
Verifique as permissões dos tokens. Garanta que o PAT tem permissões de "Pool de Agentes (Ler & Gerir)".
Verificar URL da organização. Certifique-se de que o URL da organização está correto e não tem barras finais.
Verifique o nome do grupo de agentes. Confirma se o nome do pool de agentes corresponde exatamente entre o Azure DevOps e a configuração do teu trabalho.
Sugestão
Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.
Limpeza de recursos
Quando terminares, executa o seguinte comando para eliminar o grupo de recursos que contém os recursos das Apps do Container.
Atenção
O comando a seguir exclui o grupo de recursos especificado e todos os recursos contidos nele. Se o grupo de recursos contiver recursos fora do âmbito deste tutorial, o comando apaga esses recursos também.
az group delete \
--resource-group $RESOURCE_GROUP
Para excluir seu repositório GitHub, consulte Excluindo um repositório.