Come in qualsiasi altro linguaggio, anche nelle pipeline YAML di Azure DevOps è possibile sovrascrivere il valore di alcune variabili. Questo potrebbe non essere sempre un comportamento desiderato e quindi si può utilizzare il concetto delle read-only variables per evitare potenziali rischi. Vediamo due esempi differenti:
variables:
- name: nome
value: mario
- name: cognome
value: rossi
readonly: true
steps:
- checkout: none
- bash: |
echo "##vso[task.setvariable variable=nome;]marco"
echo "##vso[task.setvariable variable=cognome;]verdi"
name: SetVarsIn questo primo esempio, abbiamo fatto uso di due variabili, una "classica" e una marcata con l'attributo readonly. Nella pipeline abbiamo quindi inserito un task che prova a sovrascrivere i valori globali definiti all'inizio e il risultato è che il nome verrà rimpiazzato correttamente, mentre nel secondo caso verrà lanciato un errore e la pipeline terminerà l'esecuzione perchè il valore non è riscrivibile. Di fatto, abbiamo realizzato una variabile immutabile per tutto il corso di esecuzione.
Tuttavia, qualora volessimo limitare lo scope solo ad un task, possiamo ricorrere a questo secondo metodo:
variables:
- name: nome
value: mario
- name: cognome
value: rossi
steps:
- checkout: none
- bash: |
echo "##vso[task.setvariable variable=nome;]marco"
echo "##vso[task.setvariable variable=cognome;]verdi"
name: SetVars
target:
settableVariables:
- nomeLe variabili sono definite a livello globale senza alcun attributo aggiuntivo, ma nello step in cui dobbiamo riscrivere il loro valore, aggiungiamo il target settableVariables con l'elenco delle variabili che vogliamo sovrascrivere. In questo modo, possiamo limitare l'accesso e la modifica delle variabili e l'esecuzione del task procederà in modo del tutto normale, perchè verrà generato soltanto un warning anziché un errore, qualora cercassimo di cambiarne il valore. Se vogliamo impedire la modifica di tutte le variabili, ci basterà impostare il valore none anziché elencarle tutte, rendendo il task più sicuro.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Integrare modelli AI in un workflow di GitHub
Operazioni tra insiemi di array in Javascript
Usare i generics di C# con la clausola nameof in modo semplificato
Ottimizzare i costi con Smart tier in Azure Blob Storage
Effettuare un clone parziale di un repository di GitHub
Agentic Workflows in GitHub
Running workloads and operations with Azure Kubernetes Service
Avviare rapidamente un container con Azure Container Apps Express
Ricerca delle GitHub issue tramite operatori logici
Pubblicare un MCP Server in GitHub MCP Registry
Le cron expression di un workflow di GitHub


