Scrivere le note di rilascio è sempre problematico per diversi motivi: se è una persona a doverle calcolare, questa potrebbe dimenticarsi determinate change, se, al contrario, è un sistema automatico, questo potrebbe essere troppo preciso. Come sempre, serve un mix giusto di entrambe le cose, ovvero un sistema automatico che è in grado di estrapolare le informazioni necessarie al recupero delle note di rilascio ed una review manuale per essere sicuri di rendere comprensibili tutti i valori calcolati dal sistema a persone "di business". All'interno di questa mini-serie di script vedremo come realizzare questo sistema.
Diamo per scontato che useremo i tag per determinare le versioni rilasciate. Il primo passaggio che dobbiamo fare è quello di recuperare, quindi, la data di creazione di un tag per capire quando è stata fatta una certa release di prodotto.
Per farlo, ci è sufficiente chiamare le REST API di Azure DevOps tramite uno script di PowerShell integrato in una pipeline YAML, per recuperare tutta la lista di tag disponibili:
$url = "https://dev.azure.com/$(OrganizationName)/$(TeamProject)/_apis/git/repositories/$(Repository)/refs?filter=tags&api-version=6.0-preview.1" $tags = Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN)}
Successivamente possiamo quindi filtrare tutti i tag forniti da Azure DevOps per cercare quello relativo al rilascio in corso:
$tag = $tags.value | Where-Object { $_.name -eq "1.0.0" }Ed infine, grazie all'identificativo del tag corrispondente alla release, recuperare le annotation:
$url = "https://dev.azure.com/$(OrganizationName)/$(TeamProject)/_apis/git/repositories/$(Repository)/annotatedtags/$($tag.objectId)/?api-version=6.0-preview.1" $annotatedTag = Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN)}
L'oggetto ritornato sarà un JSON con un payload simile al seguente:
{
"name": "refs/tags/1.0.0",
"objectId": "69080710948ac8ba63e44eca2daf0b30f38c428d",
"taggedObject": {
"objectId": "c60be62ebf0e86b5aa01dbb98657b4b7e5905234",
"objectType": "commit"
},
"taggedBy": {
"name": "Matteo Tumiati",
"email": "matteot@aspitalia.com",
"date": "2021-02-04T09:00:00"
},
"message": "First release",
"url": "https://dev.azure.com/fabrikam/c34d5807-1734-4541-ad1c-d16e9ac1faca/_apis/git/repositories/ca93c3a5-87bb-4b5b-a62f-1f971d677c79/annotatedTags/69080710948ac8ba63e44eca2daf0b30f38c428d"
}La data di creazione sarà quindi facilmente recuperabile tramite la sua property date:
return $tag.taggedBy.date
Nei prossimi script continueremo ad approfondire l'argomento e vedremo meglio a quale scopo servono questi tag.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Integrazione di Copilot in .NET Aspire
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Creare comandi nella dashboard .NET Aspire
Utilizzare ExecuteUpdate per aggiornare colonne JSON in Entity Framework
Escludere alcuni file da GitHub Copilot
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Configurare automaticamente un webhook in Azure DevOps
Recuperare gli audit log in Azure DevOps




