Condividi tramite


Configurare le richieste per i pool DevOps gestiti

Le pipeline usano le richieste per specificare le competenze di cui un agente ha bisogno, affinché Azure DevOps possa inviare un processo della pipeline all'agente.

Nei pool DevOps gestiti, le richieste ImageOverride sono simili alle esigenze in Azure Pipelines. Un processo della pipeline viene indirizzato a un agente specifico con attributi che corrispondono alla domanda. È possibile usare alcune richieste, ad esempio WorkFolder e Priority, per configurare gli attributi nell'agente.

Questo articolo descrive le richieste disponibili nei pool di DevOps gestiti e come usarle.

Cartella di lavoro

La cartella di lavoro predefinita per gli agenti è in genere nell'unità D per Windows o in /mnt per Linux e la pipeline può farvi riferimento usando la Agent.WorkFoldervariabile predefinita. È possibile eseguire l'override di questo percorso per modificare sia l'unità che il nome della directory usati all'avvio dell'agente specificando la WorkFolder domanda nella pipeline.

Se disponi di un pool a stati conservati con un agente operativo che dispone di un WorkFolder corrispondente alla tua richiesta, il job della pipeline viene inviato a quell'agente. Se non si utilizzano i pool stateful, o non c'è nessun agente in esecuzione con tale WorkFolder, viene avviato un nuovo agente e configurato per utilizzare l'elemento designato WorkFolder. La directory specificata viene creata se non è già presente. Se il nome del percorso per l'oggetto WorkFolder non è valido, viene usata la cartella di lavoro dell'agente predefinita.

Impostare la cartella di lavoro dell'agente configurando la WorkFolder richiesta nella demands sezione della pipeline. Se si utilizza un disco dati collegato e si desidera che la cartella di lavoro dell'agente sia su tale disco, utilizzare WorkFolder e specificare una cartella sul disco dati come directory di lavoro dell'agente.

La cartella di lavoro predefinita per gli agenti Windows è in genere nell'unità D. È possibile farvi riferimento nella pipeline usando la Agent.WorkFoldervariabile predefinita.

Nell'esempio seguente, WorkFolder è configurato come un disco dati collegato con la lettera F.

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

Priorità

Priority specifica la priorità del processo. I processi con priorità più alta vengono eseguiti per primi. I valori validi sono: High, Mediume Low. Il valore predefinito è Medium.

Configurare la Priority domanda nella demands sezione della pipeline.

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

Le attività sono selezionate dalla coda per l'esecuzione in ordine di priorità. Ad esempio, si dispone di un pool con un'impostazione massima di agenti di 10 e si è configurata una pipeline per l'uso di questo pool. Il pool esegue già 10 pipeline e ne vengono accodati altri 20. Se si vuole eseguire una pipeline con priorità, ad esempio per eseguire il push di un hotfix, in genere viene eseguita dopo il completamento delle 10 pipeline in esecuzione e delle 20 pipeline in coda. Se si imposta la priorità su High quando si accoda la pipeline urgente, ottiene un agente e viene eseguito prima delle 20 pipeline in coda in precedenza.

Se più processi vengono accodati contemporaneamente, potrebbe accadere che un processo con priorità più bassa venga eseguito prima di uno con priorità più alta.

Nel caso di una singola pipeline con più lavori:

ImageOverride

Se nel pool sono presenti più immagini, è possibile configurare le pipeline per l'uso di un'immagine specifica. Usare la ImageOverride richiesta e fornire l'alias dell'immagine. Per usare un'immagine di Azure Pipelines, usare l'alias predefinito. Per tutte le altre immagini, è necessario configurare gli alias personalizzati.

Se nel tuo pool sono presenti più immagini e non si usano condizioni nelle pipeline per specificare un'immagine, le pipeline vengono eseguite usando la prima immagine elencata nel tuo pool. È possibile modificare l'ordine delle immagini nel pool modificando l'ordine delle immagini nell'elenco images nella fabricProfile sezione (se si usano modelli). È anche possibile ordinare le immagini nell'elenco di immagini nel portale di Azure trascinandole.

Nell'esempio seguente una pipeline è configurata per l'esecuzione in un'immagine configurata con un ubuntu-24.04-gen2 alias.

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

Importante

Non inserire virgolette intorno al nome dell'alias nella ImageOverride richiesta, anche se ha spazi nel nome.

Override della versione dell'immagine

Se si vuole usare una versione specifica dell'immagine anziché la versione specificata dalla configurazione dell'immagine, è possibile usare la ImageVersionOverride richiesta. Ad esempio, è possibile usarlo per convalidare una nuova versione dell'immagine prima di promuoverla come più recente per un'immagine.

Quando si usa ImageVersionOverride per specificare una versione dell'immagine diversa da quella configurata nelle impostazioni del pool, ogni agente viene avviato su richiesta usando la versione dell'immagine specificata. L'approvvigionamento degli agenti di standby viene eseguito usando le versioni dell'immagine specificate nella configurazione del pool. Se si usa ImageVersionOverride, tutti gli agenti standby non corrispondono a tale versione e viene avviato un nuovo agente.

Configurare la ImageVersionOverride domanda nella demands sezione della pipeline. Nell'esempio seguente viene specificato un ImageVersionOverride di 20250427.1.0.

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

Suggerimento

Se si ritiene che una pipeline non riesca a causa di un aggiornamento dell'immagine, seguire la procedura descritta in Risoluzione dei problemi: verificare se è stato eseguito un aggiornamento dell'immagine.

Capacità Personalizzate

Se si dispone di pool con stato e si vuole eseguire un processo in un'istanza specifica dell'agente in esecuzione, è possibile usare la CustomCapabilities richiesta. La CustomCapabilities richiesta si applica solo agli agenti nei pool con stato. Quando si usano pool senza stato, si ottiene una nuova immagine dell'agente per ogni processo.

Quando si specifica una CustomCapabilities domanda nella pipeline, se una pipeline con la stessa domanda è stata eseguita in precedenza e l'agente con stato persistente che ha eseguito la pipeline è ancora online, tale agente viene utilizzato per eseguire la pipeline.

Se nessun agente online corrisponde alla CustomCapabilities richiesta, un agente viene assegnato dal pool. È contrassegnato con la CustomCapabilities richiesta e viene usato per eseguire la pipeline.

I lavori successivi con la stessa CustomCapabilities domanda utilizzano l'istanza dell'agente taggato per eseguire i lavori, finché quell'agente è online.

Nell'esempio seguente viene eseguita una pipeline usando l'immagine windows-2022 di Azure Pipelines in un pool con stato persistente. Se un agente online è pronto per accettare attività e viene contrassegnato con l'attributo CustomCapabilities (impostato da una pipeline eseguita in precedenza sull'agente), l'agente viene impiegato per far girare questa pipeline. Se nessun agente online corrisponde a questa richiesta, l'agente disponibile successivo viene usato per eseguire il processo e l'agente viene contrassegnato con l'attributo CustomCapabilities . Le esecuzioni future della pipeline con questa richiesta di esecuzione vengono eseguite su questo agente, se è online e pronto per i lavori.

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

Ad esempio, se si dispone di un repository di grandi dimensioni che richiede molto tempo per la clonazione e si dispone di più pipeline eseguite da questo repository, è possibile usare la stessa CustomCapabilities richiesta nelle pipeline. Questa richiesta consente di eseguire più rapidamente la seconda pipeline usando un agente che dispone già di un clone del repository.