Negli ultimi script qui su DOPSItalia.com abbiamo parlato molto di work item e di automatismi su di essi, d'altronde, sono proprio questi gli elementi più importanti all'interno di un progetto per delineare e coordinare un processo di lavoro.
Parlando proprio del backlog, più nel dettaglio, qualche volta ci potremmo trovare nella situazione in cui alcuni work item sono scollegati dai relativi parent. Questo è facilmente identificabile se abbiamo sempre un occhio attento a livello di sprint o backlog in Azure DevOps, in quanto i work item vengono raggruppati nel parent virtuale "unparented", mentre è meno intuitivo se a dover identificare questi elementi sono dei processi automatici che vogliamo creare per venirci "in aiuto" e semplificarci il processo.
In questo caso, la prima cosa che possiamo fare è creare una query per identificare gli elementi che non hanno parent:
La stessa query può essere, ovviamente, eseguita anche tramite REST API sfruttando WIQL, il query language per i work item, così da invocare lo stesso processo via API.
Identificati tutti i work item che non hanno un parent, dipende dal processo che abbiamo implementato definire un sistema di matching per capire le relazioni padre/figlio/related: questo può essere fatto tramite tag sui work item, tramite iteration path o custom field, giusto per citarne alcuni. Supponendo, però, di essere riusciti ad identificare questa relazione, per esempio padre/figlio, ci basterà chiamare una REST API per aggiornare il work item di riferimento:
$workItemParentUrl = "https://dev.azure.com/$(Organization)/$(Project)/_apis/wit/workItems/$parentId" $body = @( @{ op = "add" path = "/relations/-" value = @{ rel = "System.LinkTypes.Hierarchy-Reverse" url = "$workItemParentUrl" } } ) $data = ConvertTo-Json $body -Depth 10 $url = "https://dev.azure.com/$(Organization)/$(Project)/_apis/wit/workitems/$childId?api-version=6.0 Invoke-RestMethod $url -Method PATCH -Body $data -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);} -ContentType "application/json-patch+json"
In questo caso, grazie alla relazione di tipo "System.LinkTypes.Hierarchy-Reverse", abbiamo specificato che il work item figlio (es. un Task), deve essere agganciato al padre (es. un Product Backlog Item).
Nel caso in cui il sistema di matching fallisca, invece, potremmo semplicemente farci mandare una mail dalla pipeline che invoca il flusso per fare in modo che una persona intervenga manualmente.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Eseguire una query su SQL Azure tramite un workflow di GitHub
Cancellare una run di un workflow di GitHub
Eseguire le GitHub Actions offline
Disabilitare automaticamente un workflow di GitHub
Proteggere le risorse Azure con private link e private endpoints
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Eseguire i worklow di GitHub su runner potenziati
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Installare le Web App site extension tramite una pipeline 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