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 un servizio esterno con .NET Aspire
Analizzare il contenuto di una issue con GitHub Models e AI
Utilizzare Locust con Azure Load Testing
Configurare e gestire sidecar container in Azure App Service
Montare Azure Blob Storage su Linux con BlobFuse2
Configurare automaticamente un webhook in Azure DevOps
Impostare automaticamente l'altezza del font tramite CSS
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Gestione file Javascript in Blazor con .NET 9
Integrare modelli AI in un workflow di GitHub
Gestire gli errori nelle Promise JavaScript con try()


