Compartilhar via


Demandas

As demandas fornecem uma maneira para os pipelines especificarem quais recursos devem estar presentes em um agente para que o Azure DevOps envie um trabalho do pipeline para o agente. Em Pools de DevOps Gerenciados, demandas como ImageOverride funcionam exatamente como demandas no Azure Pipelines, em que um trabalho de pipeline é roteado para um agente específico que tem atributos correspondentes à demanda, mas algumas demandas, como WorkFolder e Priority, podem ser usadas 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 agentes normalmente está na unidade D:\ para Windows ou /mnt para Linux e pode ser referenciada em seu pipeline usando a Agent.WorkFolder variável predefinida. Você pode substituir esse local para alterar o nome da unidade e do diretório usado ao iniciar o agente, especificando a WorkFolder demanda em seu pipeline. Se você tiver um pool stateful com um agente em execução com um WorkFolder que corresponda à sua demanda, seu pipeline será enviado para esse agente. Se você não estiver usando pools com estado ou não houver nenhum agente em execução com eles WorkFolder, um novo agente será iniciado e configurado para usar o WorkFolder. O diretório especificado é criado se não estiver presente. Se o nome do caminho for WorkFolder inválido, a pasta de trabalho do agente padrão será usada.

Configure a WorkFolder demanda na seção do pipeline para definir a demands pasta de trabalho do agente. 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.

pool: 
  name: fabrikam-managed-pool # Name of Managed DevOps Pool
  demands:
  - WorkFolder -equals c:\custom-work-folder # Windows agent example
  # Use a folder like /user/local/custom-work-folder for Linux
  # or /mnt/storage/sdc/custom-work-folder if you're using a data disk.

Prioridade

Priority Especifica a prioridade do trabalho. Os trabalhos com prioridade mais alta são executados primeiro. Os valores válidos são: High, Medium, Low. O valor padrão é Medium.

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

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps 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 que tem uma configuração máxima de agentes de 10 e um pipeline configurado para usar esse pool. O pool já está executando 10 pipelines e mais 20 estão na fila. Se você tiver um pipeline prioritário para executar, por exemplo, para enviar um hot fix, ele normalmente será executado após a conclusão dos 10 pipelines em execução e dos 20 pipelines enfileirados. Se você definir a prioridade como alta ao enfileirar o pipeline de hotfix, ele obterá um agente e será executado antes dos 20 pipelines enfileirados anteriormente.

Se vários trabalhos estiverem enfileirados ao mesmo tempo, é possível que um trabalho de prioridade mais baixa seja executado antes de um trabalho de prioridade mais alta.

Para o caso de um único pipeline com vários trabalhos:

  • 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 (o padrão para pipelines YAML), os trabalhos serão enfileirados ao mesmo tempo e os trabalhos no pipeline com prioridade mais baixa poderão ser executados antes dos trabalhos no pipeline com prioridade mais alta.

Substituição de imagem

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

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

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageOverride -equals ubuntu-20.04-gen2

Importante

Não coloque aspas ao redor do nome do alias na ImageOverride demanda, mesmo que ele tenha espaços no nome.

Substituição de versão de imagem

Se você estiver usando uma imagem da Galeria de Imagens Compartilhadas ou do Azure Marketplace e 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á-lo para validar uma nova versão da imagem antes de promovê-la como a mais recente para uma imagem. Os exemplos a seguir especificam um ImageVersionOverride de 2.0.0.

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

pool: 
  name: fabrikam-dev-pool # Name of Managed DevOps Pool
  demands:
  - ImageVersionOverride -equals 2.0.0

CustomCapabilities

Se você tiver pools com estado e quiser uma maneira de executar um trabalho em uma instância específica do agente em execução, poderá usar a CustomCapabilities demanda.

Importante

A CustomCapabilities demanda se aplica somente a agentes em pools com estado. Ao usar pools sem estado, você obtém uma nova imagem de agente para cada trabalho.

Quando você especifica uma CustomCapabilities demanda em seu pipeline, se algum 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, marcado com a CustomCapabilities demanda e usado para executar o pipeline. Os trabalhos subsequentes com a mesma CustomCapabilities demanda usarão essa instância do agente marcado 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. As execuções futuras do pipeline com essa demanda serão executadas nesse agente, se ele estiver online e pronto para trabalhos.

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

Por exemplo, você tem um repositório grande que leva muito tempo para clonar e tem vários pipelines executados a partir desse repositório. Usar a mesma CustomCapabilities demanda nos pipelines pode ajudar o segundo pipeline a ser executado mais rapidamente usando um agente com o repositório já clonado.

Confira também