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
Fornire parametri ad un Web component HTML
Ridimensionamento automatico input tramite CSS
Escludere alcuni file da GitHub Secret Scanning
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Ridurre il reflow ottimizzando il CSS
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Le cron expression di un workflow di GitHub
Eseguire script pre e post esecuzione di un workflow di GitHub
Pubblicare un MCP Server in GitHub MCP Registry
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Integrare modelli AI in un workflow di GitHub
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi


