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
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Copiare automaticamente le secret tra più repository di GitHub
Bloccare una pull request che arriva da branch non definiti in GitHub
Utilizzare gli snapshot con Azure File shares
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Specificare il versioning nel path degli URL in ASP.NET Web API
Determinare lo stato di un pod in Kubernetes
Ottimizzare serializzazione e deserializzaione tramite le options con System.Text.Json
Utilizzare l'attributo autofill del CSS
Caricare un asset come parte di una release con un workflow di GitHub
Specificare il numero di parentesi graffe nella string interpolation in combinazione con i string literal in C#
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Proteggersi dagli attacchi di Open Redirect in ASP.NET Core MVC
- Raggruppare i parametri di una minimal API in un singolo oggetto in ASP.NET Core
- Abilitare e gestire il prerendering nelle applicazioni Blazor WebAssembly