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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il trigger SQL con le Azure Function
Usare il colore CSS per migliorare lo stile della pagina
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Migliorare la sicurezza dei prompt con Azure AI Studio
Sostituire la GitHub Action di login su private registry
Eseguire una query su SQL Azure tramite un workflow di GitHub
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Effettuare il binding di date in Blazor
Utilizzare Model as a Service su Microsoft Azure
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Generare la software bill of material (SBOM) in GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione