In Azure DevOps con le classic build pipeline avevamo a disposizione la possibilità di taggare automaticamente il repository a valle di una build completata con successo. Tuttavia, questa opzione non esiste più per quanto riguarda le pipeline YAML di cui abbiamo già visto più volte i vantaggi. E' possibile ottenere piuttosto semplicemente lo stesso comportamento, con uno semplice script di powershell, powershell core o bash:
steps: - checkout: self persistcredentials: true - pwsh: | git config user.email $env:BUILD_REQUESTEDFOREMAIL git config user.name $env:BUILD_REQUESTEDFOR git tag -a $env:TAG -m "Released by $env:BUILD_REQUESTEDFOR" git push origin $env:TAG env: TAG: $(Build.BuildNumber)
Come si può vedere, i passaggi necessari sono due: nel primo, andiamo a specificare in maniera esplicita il checkout del repository corrente perchè dobbiamo avere a disposizione le credenziali di git, tramite la property persistcredentials, mentre nel secondo caso andiamo ad eseguire il vero e proprio script che non farà nient'altro che il push del tag sul repository. Non necessario, ma consigliato, è l'aggiunta della configurazione dell'utente che vorrà applicare la tag, sfruttando le variabili predefinite di Azure DevOps Build.RequestedFor (il nome dell'utente) e Build.RequestedForEmail (la mail), così da avere piena tracciabilità di chi ha applicato il tag.
Questo sistema ci consente anche di aggiungere condizioni custom, che non era possibile esplicitare nelle pipeline classiche. Un esempio è, di fatto, rappresentato dal fatto di voler taggare il repository solamente quando la build è eseguita verso il branch main/master, ovvero quando una pull request è mergiata e non quando è creata o su un branch di feature, ma chiaramente la personalizzazione è a nostra discrezione secondo le esigenze di business.
E' importante ricordare che lo script è necessario ma non sufficiente. Poichè il tag viene applicato dall'agent e non da un utente, è obbligatorio fare in modo che l'agent stesso abbia i permessi di contribute sul repository di riferimento:

Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare un'istanza di Azure SQL Database tramite ARM
Creare un form con Bootstrap 5
Impostare il tema light o dark utilizzando i CSS
Esecuzione a matrici nei workflow di GitHub Action
Generare un QR Code da ASP.NET Web API
Migrare da Azure DevOps a GitHub
Code reviewers as code in GitHub
Ottimizzare la concorrenza dinamicamente con le Azure Function
Reagire alle modifiche della configurazione di ASP.NET Core
Ottimizzare il query plan di Sql Server nelle query LINQ che usano Contains
Layout skeleton per Screen Reader
Creare una timeline da una pipeline di Azure DevOps
I più letti di oggi
- Semplificare la gestione delle eccezioni per parametri non nullable in C#
- devConf 2022 - Online
- Impostare un default custom per i metodi LINQ che tornano il valore di default
- Impostare il tema light o dark utilizzando i CSS
- Utilizzare il metodo reduce in JavaScript
- Gestire eventi di serializzazione e deserializzazione in .NET con System.Text.Json
- Recuperare la data di creazione e ultima modifica di un record con Entity Framework Core e le temporal table di SQL Server
- Usare domini personalizzati con Azure Container App
- Utilizzare l'API del browser fetch