Ogni pipeline che viene eseguita all'interno di Azure DevOps viene identificata da un numero univoco che la rappresenta e, solitamente, questo numero viene associato agli artifact pubblicati così da avere sempre un tracking completo end-to-end di tutto quello che viene usato nel ciclo di sviluppo, dal work item al prodotto finito.
Il numero utilizzato di default è così composto:
name: $(date:YYYY).$(date:MM).$(date:DD)$(rev:.r)
Il risultato finale è un numero di versione composto da quattro cifre che risulteranno in qualcosa di simile a "2019.12.11.0". L'ultima cifra, in particolare, è il numero di revisione della build utile, in questo caso, per identificare in modo univoco le build che vengono eseguite lo stesso giorno, rendendo il numero associato alla pipeline sempre crescente.
Questa tecnica sfrutta quello che è chiamato build counter, una funzionalità inizialmente riservata alle variabili di sistema e ora disponibile anche per le variabili custom definite da noi stessi. Consente di incrementare ad ogni run della pipeline un valore secondo un prefisso ed un seed predefinito:
variables: version.MajorMinor: 1.0 version.Revision: $[counter(variables['Version.MajorMinor'], 0)] steps: - script: echo "Build number is $(version.MajorMinor).$(version.Revision)"
Nell'esempio abbiamo definito tramite la variabile MajorMinor il prefisso, mentre la seconda, lo zero, rappresenta il seeding, ovvero la base da cui partire per generare i numeri da incrementare. I numeri così generati dalle varie build saranno "1.0.0", "1.0.1", "1.0.2" e così via.
Supponendo che il prefisso cambi, ad esempio, da "1.0" a "2.0" per via una breaking change o di un rilascio di un nuovo prodotto, l'espressione counter rivaluterà sia il prefisso che il seeding, dato che verrà resettato. I numeri di build saranno quindi "1.0.2" e "2.0.0", "2.0.1" e così via.
E' importante tenere presente che l'espressione counter viene valutata solo una volta che la pipeline si è avviata e pertanto è necessario usare la sintassi $[ ... ] al posto della sintassi ${ ... } che viene valutata nella fase precedente di costruzione della build.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Potenziare Azure AI Search con la ricerca vettoriale
Creare una custom property in GitHub
Testare l'invio dei messaggi con Event Hubs Data Explorer
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Hosting di componenti WebAssembly in un'applicazione Blazor static
Eseguire script pre e post esecuzione di un workflow di GitHub
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Creare una libreria CSS universale: Cards
Generare la software bill of material (SBOM) in GitHub
Paginare i risultati con QuickGrid in Blazor
Come migrare da una form non tipizzata a una form tipizzata in Angular
Triggerare una pipeline su un altro repository di Azure DevOps
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub