Exigências
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, onde 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 nos Pools de DevOps Gerenciados e como usá-las.
Pasta de Trabalho
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 monitoração de estado, ou se não houver nenhum agente em execução com isso 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 do agente padrão será usada.
Configure a WorkFolder
demanda na demands
seção do pipeline para definir a 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 maior prioridade são executados primeiro. Os valores válidos são: High
, Medium
, Low
. O valor predefinido é 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 a partir da 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 na fila 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.
ImagemOverride
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 ImageOverride
alias na demanda, mesmo que ele tenha espaços no nome.
ImageVersionOverride
Se estiver a utilizar uma imagem da Galeria de Imagens Partilhadas ou do Azure Marketplace e pretender utilizar uma versão específica da imagem em vez da versão especificada pela configuração da imagem, pode utilizar a ImageVersionOverride
procura. 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. 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
Capacidades personalizadas
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 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 você especifica uma CustomCapabilities
demanda em seu pipeline, se qualquer pipeline com a mesma demanda 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, marcado com a CustomCapabilities
demanda e usado para executar o pipeline. Os trabalhos subsequentes com a mesma CustomCapabilities
demanda usarão 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 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 executado com essa demanda será executado neste agente, se ele estiver on-line 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 que são 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.