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.