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: SetVars
In 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: - nome
Le 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
Gestione degli stili CSS con le regole @layer
Testare l'invio dei messaggi con Event Hubs Data Explorer
Recuperare l'ultima versione di una release di GitHub
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Gestire gli accessi con Token su Azure Container Registry
Usare le navigation property in QuickGrid di Blazor
Creare una libreria CSS universale - Rotazione degli elementi
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Path addizionali per gli asset in ASP.NET Core MVC
Ottenere un token di accesso per una GitHub App
Utilizzare l nesting nativo dei CSS