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
Verificare la provenienza di un commit tramite le GitHub Actions
Installare le Web App site extension tramite una pipeline di Azure DevOps
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Eseguire le GitHub Actions offline
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Reactive form tipizzati con modellazione del FormBuilder in Angular
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Disabilitare automaticamente un workflow di GitHub (parte 2)
Utilizzare Tailwind CSS all'interno di React: installazione
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Utilizzare politiche di resiliency con Azure Container App
Load test di ASP.NET Core con k6
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)