Partilhar via


Configurar demandas para pools de DevOps gerenciados

Os pipelines usam demandas para especificar quais capacidades um agente precisa para que o Azure DevOps envie um trabalho de pipeline ao agente.

Nos Pools de DevOps Gerenciados, as demandas funcionam ImageOverride assim como as demandas nos Pipelines do Azure. Um trabalho de pipeline é encaminhado para um agente específico cujos atributos correspondem à demanda. Você pode usar algumas demandas, como WorkFolder e Priority, para configurar atributos no agente.

Este artigo descreve as demandas disponíveis nos Pools de DevOps Gerenciados e como usá-las.

Diretório de Trabalho

A pasta de trabalho predefinida para agentes é normalmente D:\a\_work (ou C:\a\_work se o tamanho da VM do pool não tiver disco D ) para agentes Windows ou /mnt/vss/_work para agentes Linux, e o teu pipeline pode referenciar isso usando a Agent.WorkFoldervariável pré-definida. Você pode substituir esse local para alterar o nome da unidade e do diretório usado quando o agente é iniciado, especificando a WorkFolder demanda em seu pipeline.

Sugestão

A WorkFolder demanda configura uma pasta de trabalho de agente personalizada ao nível do pipeline. Para configurar os seus agentes para usarem um diretório de trabalho personalizado para cada agente do pool, configure a definição da pasta de trabalho .

Se você tiver um pool stateful com um agente em execução com um WorkFolder que corresponda à sua demanda, seu trabalho de pipeline será enviado para esse agente. Se não estiver a usar pools com estado, ou se não houver nenhum agente a executar com WorkFolder, um novo agente será iniciado e configurado para usar o WorkFolder designado. O diretório especificado é criado se não estiver presente. Se o nome do caminho para o WorkFolder for inválido, a pasta de trabalho do agente padrão será usada.

Defina a pasta de trabalho do agente configurando a WorkFolder demanda na demands seção do pipeline. Se você estiver usando um disco de dados anexado e quiser que a pasta de trabalho do agente esteja nesse disco, use WorkFolder e especifique uma pasta no disco de dados como o diretório de trabalho do agente.

A pasta de trabalho padrão para agentes do Windows normalmente está na unidade D. Você pode fazer referência a ele em seu pipeline usando a Agent.WorkFoldervariável predefinida.

No exemplo a seguir, WorkFolder é definido como um disco de dados anexado com a letra F.

pool: 
  name: fabrikam-managed-pool # Name of pool
  demands:
  - WorkFolder -equals f:\custom-work-folder

Prioridade

Priority especifica a prioridade do trabalho. Os trabalhos com maior prioridade são executados primeiro. Os valores válidos são: High, Medium, e Low. O valor predefinido é Medium.

Configure a Priority demanda na demands seção do seu pipeline.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - Priority -equals Low

Os trabalhos são selecionados para serem executados a partir da fila em ordem de prioridade. Por exemplo, existe um pool com uma definição máxima de agentes de 10 e está configurado um pipeline para utilizar esse pool. O pool já está a executar 10 pipelines e mais 20 estão na fila. Se você quiser executar um pipeline de prioridade, por exemplo, para enviar um hotfix, ele normalmente será executado após a conclusão dos 10 pipelines em execução e dos 20 pipelines enfileirados. Se definir a prioridade para High ao enfileirar o seu pipeline urgente, este receberá um agente e será executado antes dos 20 pipelines que foram anteriormente enfileirados.

Se vários trabalhos estiverem na fila ao mesmo tempo, um trabalho de prioridade mais baixa poderá ser executado antes de um trabalho de prioridade mais alta.

Para o caso de um único pipeline com várias tarefas:

  • Se o pipeline tiver dependências que definem trabalhos sequenciais, os trabalhos sequenciais serão executados na ordem especificada pelo pipeline, independentemente da configuração de prioridade para cada trabalho.
  • Se o pipeline tiver vários trabalhos configurados para serem executados em paralelo ( que é o padrão para pipelines YAML), os trabalhos serão enfileirados ao mesmo tempo. Os trabalhos no pipeline com um valor de prioridade mais baixo podem ser executados antes dos trabalhos no pipeline com um valor de prioridade mais alto.

ImagemOverride

Se você tiver várias imagens em seu pool, poderá configurar seus pipelines para usar uma imagem específica. Use a ImageOverride demanda e forneça o alias da imagem. Para usar uma imagem do Azure Pipelines, use o seu alias predefinido. Para todas as outras imagens, você deve configurar seus próprios aliases.

Se tiver várias imagens no seu pool e não usar requisitos nos seus pipelines para designar uma imagem, os pipelines serão executados usando a primeira imagem listada no seu pool. Você pode alterar a ordem das imagens em seu pool alterando a ordem das imagens na images lista na fabricProfile seção (se estiver usando modelos). Você também pode ordenar as imagens na lista de imagens no portal do Azure arrastando-as.

No exemplo a seguir, um pipeline é configurado para ser executado em uma imagem configurada com um ubuntu-24.04-gen2 alias.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageOverride -equals ubuntu-24.04-gen2

Importante

Não coloque aspas em torno do nome de alias no pedido ImageOverride, mesmo que ele contenha espaços no nome.

Substituição de Versão de Imagem

Se você quiser usar uma versão específica da imagem em vez da versão especificada pela configuração da imagem, você pode usar a ImageVersionOverride demanda. Por exemplo, você pode usá-lo para validar uma nova versão de imagem antes de promovê-la para ser a mais recente para uma imagem.

Quando você usa ImageVersionOverride para especificar uma versão de imagem diferente da que está configurada nas configurações do pool, cada agente é iniciado sob demanda usando a versão de imagem especificada. Os agentes em espera são provisionados usando as versões de imagem especificadas na configuração do pool. Caso utilize ImageVersionOverride, os agentes em modo de espera não são compatíveis com essa versão e um novo agente é iniciado.

Configure a ImageVersionOverride demanda na demands seção do seu pipeline. O exemplo a seguir especifica um ImageVersionOverride de 20250427.1.0.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageVersionOverride -equals 20250427.1.0

Sugestão

Se você acha que um pipeline está falhando devido a uma atualização de imagem, siga o procedimento em Solução de problemas: verifique se houve uma atualização de imagem.

Capacidades personalizadas

Se tiver pools stateful e quiser executar um trabalho numa instância específica do agente em execução, pode usar o requisito CustomCapabilities. A CustomCapabilities demanda se aplica apenas a agentes em pools com estado. Ao usar pools sem monitoração de estado, você obtém uma nova imagem de agente para cada trabalho.

Quando se especifica uma CustomCapabilities solicitação no seu pipeline, se qualquer pipeline com a mesma solicitação tiver sido executado anteriormente e o agente stateful que executou o pipeline ainda estiver online, esse agente será usado para executar o pipeline.

Se nenhum agente online corresponder à CustomCapabilities demanda, um agente será provisionado do pool. Ele é marcado com a CustomCapabilities demanda e é usado para executar o pipeline.

Os trabalhos subsequentes com a mesma CustomCapabilities demanda utilizam essa instância de agente etiquetada para executar os seus trabalhos, sempre que esse agente estiver online.

No exemplo a seguir, um pipeline é executado usando a imagem do windows-2022 Azure Pipelines em um pool com monitoração de estado. Se um agente online estiver pronto para aceitar trabalhos e estiver marcado com o CustomCapabilities atributo (definido por um pipeline executado anteriormente no agente), esse agente será usado para executar esse pipeline. Se nenhum agente online corresponder a essa demanda, o próximo agente disponível será usado para executar o trabalho e o agente será marcado com o CustomCapabilities atributo. O pipeline futuro será executado neste agente com este requisito, se estiver online e pronto para os trabalhos.

pool: 
  name: fabrikam-dev-pool # Name of pool
  demands:
  - ImageOverride -equals windows-2022
  - CustomCapabilities -equals MyCustomValue

Por exemplo, se tiveres um repositório grande que demora muito tempo a clonar e tiveres vários pipelines que são executados a partir desse repositório, podes usar o mesmo CustomCapabilities requisito nos pipelines. Essa demanda ajuda o segundo pipeline a ser executado mais rapidamente usando um agente que já tem um clone do repositório.