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
Point-in-time restore con gli Azure Storage Blob
#devops for any developer with #github sta per cominciare. Seguite @xTuMiOx live su http://aspit.co/ReBuild-20 #aspilive
Utilizzare la libreria FluentValidation per validare formalmente un oggetto .NET
Blazor e il pattern Model-View-ViewModel
Impostare la priorità di esecuzione di una pipeline YAML di Azure DevOps
Introdurre la security nelle best practice di (Azure) DevOps
Attesa e validazione manuale nelle pipeline YAML di Azure DevOps
Recuperare un repository tramite le REST API di Azure DevOps
Utilizzare le JavaScript Resize Observer API per rispondere ai cambiamenti di dimensione di un oggetto HTML
.NET Conference Italia 2020
Taggare automaticamente un team member in work item tramite Azure DevOps
Leggere la configurazione di Blazor da un endpoint di ASP.NET Core