Utilizzare l'espressione if inline in una pipeline di Azure DevOps

di Matteo Tumiati, in DevOps,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi