Tutte le pipeline che andiamo a costruire, hanno dei riferimenti a determinate variabili: che siano i valori passati ai task di sistema, piuttosto che i parametri passati ai template, piuttosto che quelle definite a livello globale, rappresentano l'unico sistema che abbiamo per poter riutilizzare la pipeline in modo tale da avere lo stesso comportamento, ma un risultato diverso, personalizzato, in base a quanto specificato, appunto, dalle variabili.
Le variabili, però, non è detto che siano solamente definite a livello globale. Di fatto, potremmo trovarci nel caso in cui l'output di un task sia utile come input di un successivo, creando una dipendenza tra i due. Per fare un esempio banale, ci potrebbe essere un task A in grado di creare un servizio web e un task B che, per caricare un progetto web al suo interno, ha bisogno di sapere l'endpoint prodotto dal task A.
steps: - script: | # Creazione del sito web, omessa... # Pubblicazione della variabile con l'endpoint $url = "https://aspitalia.com" echo "##vso[task.setvariable variable=websiteUrl]$url"
Come possiamo vedere dall'esempio, è possibile creare una variabile all'interno di un task tramite la direttiva ##vso a cui viene passata l'impostazione task.setvariable. Da qui, possiamo andare ad impostare il nome e di conseguenza il valore della variabile, scrivendola come se fosse una chiamata allo stream di output sulla console, che verrà poi letta da un secondo task:
- bash: echo il mio url è $(websiteUrl) - bash: echo "il sito web è $WEBSITEURL" - pwsh: Write-Host "Il sito web è $env:WEBSITEURL"
L'esempio mostra le diverse modalità di utilizzo della variabile websiteUrl in un task B, prodotta da un task A, sua diretta dipendenza. E' bene far notare che questa variabile, per come è stata costruita, sarà disponibile solamente agli step successivi alla sua generazione e non sarà visibile ad altri job o ad altri stage: per estendere la sua visibilità abbiamo bisogno di applicare determinati accorgimenti che approfondiremo nei prossimi script su questo canale.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Cambiare la chiave di partizionamento di Azure Cosmos DB
Code scanning e advanced security con Azure DevOps
Implementare l'infinite scroll con QuickGrid in Blazor Server
Assegnare un valore di default a un parametro di una lambda in C#
Evitare la command injection in un workflow di GitHub
Paginare i risultati con QuickGrid in Blazor
Usare le variabili per personalizzare gli stili CSS
Sfruttare al massimo i topic space di Event Grid MQTT
Miglioramenti nelle performance di Angular 16
Gestire liste di tipi semplici con Entity Framework Core
Disabilitare automaticamente un workflow di GitHub (parte 2)
I più letti di oggi
- I tutorials, percorsi guidati per tutti
- Costruire applicazioni cross-plaftorm con Visual Studio 2013 e Xamarin
- Creare semplici grafici a barre con ASP
- rilasciato #mono 2.8.1: bug fix importanti, anche di security: http://u.aspitalia.com/o5
- Mappare una relazione uno a molti con Entity Framework Code First
- Dichiarare tutte le proprietà di un record usando solo il costruttore in C#
- Gestire la cancellazione di una richiesta in streaming da Blazor
- Fragment Caching con dipendenza da altri controls
- grazie a tutti per aver seguito #aspilive! tutto il materiale è già online e le registrazioni saranno pubblicate nei prossimi giorni su => https://aspit.co/BlazorConf-20
- Modificare i metadati nell'head dell'HTML di una Blazor Web App