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
Disabilitare automaticamente un workflow di GitHub
Evitare la command injection in un workflow di GitHub
Workflow di continuous deployment tramite pull request label in GitHub
Linting di un Dockerfile con un workflow di GitHub
Generare token per autenicarsi sulle API di GitHub
3 metodi JavaScript che ogni applicazione web dovrebbe contenere - Parte 2
Creare gruppi di client per Event Grid MQTT
Usare una container image come runner di GitHub Actions
Eseguire operazioni con timeout in React
Usare lo spread operator con i collection initializer in C#
Creare form tipizzati con Angular