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
Usare un KeyedService di default in ASP.NET Core 8
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Usare lo spread operator con i collection initializer in C#
Creare moduli CSS in React
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Verificare la provenienza di un commit tramite le GitHub Actions
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Potenziare Azure AI Search con la ricerca vettoriale
Sostituire la GitHub Action di login su private registry
Code scanning e advanced security con Azure DevOps
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Gestire undefined e partial nelle reactive forms di Angular