Nelle pipeline di Azure DevOps, soprattutto nel momento in cui dobbiamo scrivere dei template per rendere più riutilizzabile i nostri processi automatici, ci si può trovare nella necessità di dover fare delle scelte in base a determinate condizioni. Per fare ciò, possiamo utilizzare l'istruzione if per definire delle condizioni ed eseguire operazioni distinte.
variables:
${{ if eq(variables['Build.Reason'], 'PullRequest') }}:
poolToUse: 'Azure Pipelines'
${{ else }}:
poolToUse: 'ManagedDevOpsPool'
jobs:
- job:
pool: ${{ variables.poolToUse }}
steps:
- script: echo "Hello!"In questo caso stiamo definendo una variabile poolToUse che verrà inizializzata con il valore Azure Pipelines se la pipeline sta girando nel contesto di una PullRequest, altrimenti verrà inizializzata con il valore ManagedDevOpsPool per essere eseguita su un agent custom.
La sintassi disponibile non ci consente di utilizzare l'espressione if come se fosse un operatore ternario, in modo da eseguire le operazioni in una riga sola e rendere il codice più flessibile. Tuttavia, in un recentissimo aggiornamento di Azure DevOps (il numero 248) è stata rilasciata l'espressione iif:
variables:
poolToUse: ${{ iif(eq(variables['Build.Reason'], 'PullRequest'), 'Azure Pipelines', 'ManagedDevOpsPool')}}
jobs:
- job:
pool: ${{ variables.poolToUse }}
steps:
- script: echo "Hello!"Con questo nuovo operatore, infatti, possiamo definire nel primo parametro l'espressione che verrà valutata, nel secondo il valore da assegnare nel momento in cui l'espressione risultasse vera e, nel terzo parametro, il valore da restituire ad espressione valutata falsa.
Questo nuovo metodo semplifica notevolmente molti template e rende più leggibile il codice, anche se non va a sostituire completamente l'operatore if "standard" che rimane da utilizzare nel momento in cui dobbiamo eseguire task all'interno della pipeline secondo una condizione o l'altra.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Raggruppare risorse in .NET Aspire
Pubblicare un MCP Server in GitHub MCP Registry
Eseguire query in contemporanea con EF
Evitare memory leaks nelle closure JavaScript
Controllare la velocità di spostamento su una pagina HTML
Gestione delle scrollbar dinamiche in HTML e CSS
Importare repository da Bitbucket a GitHub Enterprise Cloud
Le cron expression di un workflow di GitHub
Interagire con Azure DevOps tramite MCP Server
.NET Aspire per applicazioni distribuite
Impostare automaticamente l'altezza del font tramite CSS
Controllare la telemetria con .NET Aspire


