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
Usare lo spread operator con i collection initializer in C#
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Cambiare la chiave di partizionamento di Azure Cosmos DB
Disabilitare automaticamente un workflow di GitHub (parte 2)
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Code scanning e advanced security con Azure DevOps
Copiare automaticamente le secret tra più repository di GitHub
Utilizzare il trigger SQL con le Azure Function
Utilizzare la session affinity con Azure Container Apps
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Utilizzare Model as a Service su Microsoft Azure
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Paginare i risultati con QuickGrid in Blazor
- Ottimizzazione dei block template in Angular 17