Compartilhar via


Configurar demandas para pools de DevOps gerenciados

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

Em Pools Gerenciados de DevOps, demandas como ImageOverride funcionam exatamente como as demandas no Azure Pipelines. Um trabalho de pipeline é roteado para um agente específico que tem atributos que correspondem à demanda. Você pode usar algumas demandas, como WorkFolder e Priority, para configurar atributos no agente.

Este artigo descreve as demandas disponíveis em pools de DevOps gerenciados e como usá-las.

WorkFolder

A pasta de trabalho padrão para os agentes é normalmente D:\a\_work (ou C:\a\_work se o tamanho da VM do pool não possui uma unidade D) para os agentes do Windows ou /mnt/vss/_work para os agentes do Linux, e seu pipeline pode referenciá-la usando a Agent.WorkFoldervariável predefinida. Você pode alterar este local para modificar tanto o nome da unidade quanto o diretório usado quando o agente é iniciado, especificando uma demanda de WorkFolder em seu pipeline.

Dica

A WorkFolder demanda configura uma pasta de trabalho de agente personalizado no nível do pipeline. Para configurar seus agentes para usar um diretório de trabalho personalizado para cada agente no pool, defina a configuração da pasta Trabalho .

Se você tiver um pool stateful com um agente de execução com um WorkFolder que atenda à sua demanda, a tarefa do pipeline será enviada para esse agente. Se você não estiver usando pools stateful ou não houver nenhum agente em execução com aquele WorkFolder, um novo agente será iniciado e configurado para usar o designado WorkFolder. 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 padrão do agente será utilizada.

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 e WorkFolder.

A pasta de trabalho padrão para agentes do Windows normalmente está na unidade D. Você pode referenciá-lo 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 prioridade mais alta são executados primeiro. Os valores válidos são: High, Mediume Low. O valor padrão é 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 na fila em ordem de prioridade. Por exemplo, você tem um pool com um número máximo de agentes 10 e definiu um pipeline para usar esse pool. O pool já está executando 10 pipelines e mais 20 estão na fila. Se você quiser executar um pipeline de prioridade, por exemplo, para aplicar um hotfix, ele normalmente será executado após a conclusão dos 10 pipelines em execução e dos 20 pipelines em espera. Se você definir a prioridade para o High ao enfileirar seu pipeline urgente, ele obterá um agente e será executado antes dos 20 pipelines anteriores.

Se vários trabalhos forem enfileirados simultaneamente, um trabalho de prioridade mais baixa poderá ser executado antes de um trabalho de prioridade mais elevada.

Para o caso de um pipeline único 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 são enfileirados ao mesmo tempo. Trabalhos no pipeline com um valor de prioridade mais baixo podem ser executados antes de trabalhos no pipeline com um valor de prioridade mais alto.

SubstituiçãoDeImagem

Se você tiver várias imagens no 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 predefinida do Azure Pipelines, utilize seu alias. Para todas as outras imagens, você deve configurar seus próprios aliases.

Se você tiver várias imagens em seu pool e não usar demandas em seus pipelines para designar uma imagem, os pipelines serão executados usando a primeira imagem listada em seu pool. Você pode alterar a ordem das imagens no 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 ao redor do nome do alias na demanda ImageOverride, mesmo que ele tenha espaços no nome.

SubstituiçãoDeVersãoDeImagem

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

Quando você usa ImageVersionOverride para especificar uma versão de imagem diferente do que está configurado nas configurações do pool, cada agente é iniciado sob demanda usando a versão da imagem especificada. Os agentes em espera são provisionados usando as versões de imagem especificadas na configuração do pool. Se você usar ImageVersionOverride, todos os agentes em espera não corresponderão a essa versão e um novo agente será 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

Dica

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

Capacidades Personalizadas

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

Quando você especifica uma CustomCapabilities demanda em seu pipeline, se qualquer pipeline com a mesma demanda tiver sido executado anteriormente e o agente com estado 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.

Trabalhos subsequentes com a mesma CustomCapabilities demanda devem usar essa instância de agente marcada para executar seus trabalhos, desde que esse agente esteja online.

No exemplo a seguir, um pipeline é executado usando a imagem do windows-2022 Azure Pipelines em um pool com estado. Se um agente online estiver pronto para aceitar trabalhos e for 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. Futuras execuções de pipeline com essa demanda serão realizadas neste agente, se ele estiver online e pronto para trabalhos.

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

Por exemplo, se você tiver um repositório grande que leva muito tempo para clonar e tiver vários pipelines executados nesse repositório, poderá usar a mesma CustomCapabilities demanda nos pipelines. Essa solicitação ajuda a executar o segundo pipeline mais rapidamente usando um agente que já possui um clone do repositório.