Eseguire script PowerShell multi-linea in Azure DevOps

di , in DevOps,

Nel corso delle ultime settimane abbiamo visto come utilizzare i task di PowerShell (e di tutte le sue varianti) per eseguire determinati script su PowerShell Core, piuttosto che su Bash o varianti.
Quello che abbiamo dato per scontato, però, è che lo script sia già scritto e reso disponibile al tempo di esecuzione, cosa però, non sempre vera. Spesso può capitare, infatti, che sia necessario applicare modifiche rapide alla pipeline per vedere come essa si comporta al variare di una condizione e per questo eseguire script in linea è l'ideale.

All'interno di uno script precedente (https://www.dopsitalia.com/script/2/Eseguire-Script-Inline-Azure-DevOps.aspx) abbiamo visto come eseguirlo ma, ancora una volta, abbiamo dato per scontato un particolare: l'esecuzione deve essere singola linea. Ovviamente, anche in questo caso, la limitazione è molto forte e pertanto è possiamo fare uso del simbolo "|" (pipe) per scrivere script multi-linea:

- task: PowerShell@2
  displayName: 'Select .NET Core SDK version'
  inputs: 
  targetType: inline
  pwsh: true
  script: | 
    $sdkVersion = "3.0.100"
    Write-Host "Selecting default version of SDK v3.0.100"
    Write-Host "##vso[task.setvariable variable=dotNetCoreSdkVersion;]$sdkVersion"

In questo caso specifico, siamo andati ad impostare il valore di una variabile di output, corrispondente al valore dell'SDK di .NET Core da utilizzare in uno script successivo. Lo script è volontariamente limitato, ma è evidente che si espande su più linee poiché l'esecuzione è "più complessa" di una sola "Write-Host" come abbiamo visto in precedenza.

E' bene notare che, per farlo funzionare, ci deve essere un nuovo livello di indentazione per il codice PowerShell, altrimenti l'engine di elaborazione della pipeline su Azure DevOps lo interpreterà come comandi aggiuntivi e mostrerà un errore tipo "can not read a block mapping entry; a multiline key may not be an implicit key".

Sebbene questo ci consenta di scrivere un vero e proprio script, non è comunque consigliato usarlo per scrivere centinaia di righe di codice: oltre ad esserci delle limitazioni sul numero di caratteri utilizzabili, non è l'ideale per avere una pipeline leggibile.

Commenti

Visualizza/aggiungi commenti

Eseguire script PowerShell multi-linea in Azure DevOps (#4)
| 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