Le variabili tipizzate sono un grande vantaggio per i linguaggi di programmazione in generale e, le pipeline YAML di Azure DevOps, fanno proprio uso di questo e garantiscono l'integrità di tipo anche attraverso la validazione del template, prima ancora che questo venga messo in esecuzione per lanciare una build run.
Proprio per questo motivo diventa interessante lavorare con gli oggetti e avere situazioni tipo questa, in cui vogliamo lavorare con un dictionary/hashset:
trigger: none parameters: - name: MyDictionary type: object default: [key1=value1, key2=value2] pool: vmImage: 'ubuntu-latest' steps: - template: mytemplate.yml parameters: dictionary: ${{ parameters.MyDictionary }}
Il parametro di per sè verrà elaborato come tipo e la pipeline stessa lo tratterà come un vero e proprio dizionario (notare il render con il '-' ad avvio della pipeline):

Tuttavia, ci sono scenari in cui potrebbe diventare utile trasformare l'oggetto per farne un uso differente. Ad esempio, un oggetto potrebbe dover diventare un payload per una chiamata REST: in questo caso, possiamo sfruttare le function per fare la conversione di tipo:
parameters: - name: dictionary type: object default: [] steps: - script: echo "${{ convertToJson(parameters.dictionary) }}"
Nell'esempio precedente, abbiamo fatto uso della convertToJson per indicare che il dizionario di input (tramite parametro), deve essere convertito non solo in una stringa, ma direttamente in JSON per poi essere elaborato successivamente, ad esempio da PowerShell o da altre tipologie di task che non accettano in modo diretto un dizionario. L'output della pipeline data in esempio sarà come il seguente:
/usr/bin/bash --noprofile --norc /home/vsts/work/_temp/c3ca61b2-ee43-4f09-96ad-80246bf8e726.sh [ key1=value1, key2=value2 ]
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Migrare un progetto ASP.NET Core da .NET 6 a .NET 7
Le novità di Entity Framework (Core) 7
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Gestire dati sensibili nella configurazione in ASP.NET Core
Utilizzare il metodo reduce in JavaScript
Definire le impostazioni di cache a livello di controller in ASP.NET Core 7
GitHub Actions e Terraform: l'infrastruttura, dalla definizione al deploy
Gestire i file esterni in una PWA
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Workflow di continuous deployment tramite pull request label in GitHub
Pubblicare la documentazione di un repository con GitHub Pages
Installazione di una PWA Blazor
I più letti di oggi
- Filtrare e rimuovere gli elementi dalla cache del browser tramite le API JavaScript
- Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
- Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
- Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
- Elencare le container images installate in un cluster di Kubernetes
- Recuperare un elemento inserito nella cache del browser tramite API JavaScript
- Controllare gli accessi IP alle app con Azure Container Apps
- Utilizzare le Cache API di JavaScript per salvare elementi nella cache del browser
- Determinare lo stato di un pod in Kubernetes
- .NET Conference Italia 2022 - Milano e Online