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
Recuperare l'ultima versione di una release di GitHub
Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
Managed deployment strategy in Azure DevOps
Anonimizzare i dati sensibili nei log di Azure Front Door
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Il nuovo controllo Range di Blazor 9
Escludere alcuni file da GitHub Secret Scanning
Triggerare una pipeline su un altro repository di Azure DevOps
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
.NET Aspire per applicazioni distribuite
I più letti di oggi
- Sfruttare i nuovi overload di TimeSpan.From* per creare timespan usando numeri interi
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- Inviare i comandi SQL generati da Entity Framework alla console di Visual Studio
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione CSS in Blazor con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!