In qualità di product owner, potremmo ritrovarci nella condizione di dover monitorare l'avanzamento dei lavori su più repository contemporaneamente. Le issue di GitHub sono suddivise, per l'appunto, per repository, ma creando un Project e configurandolo opportunamente, è possibile avere una visione d'insieme di tutti i miei progetti e creare all'occorrenza anche nuove issue, direttamente da quella vista, senza dover cambiare ogni volta pagina.
Queste stesse informazioni, possono essere poi esportate in qualche tool di analytics, come Power BI, per esempio, così che si possano analizzare metriche come il tempo di burndown, la velocity dei team, impedimenti, e così via. Grazie a GraphQL è molto semplice recuperare le informazioni:
gh api graphql -F projectId="$projectId" -f query=' query($projectId: ID!) { node(id: $projectId) { ... on ProjectV2 { items(first: 10) { nodes{ id content{ ...on Issue { id number title repository { name } assignees(first: 5) { nodes { name } } projectItems(first: 50) { edges { node { effort: fieldValueByName(name: "Effort") { ... on ProjectV2ItemFieldNumberValue { number } } } } } } } } } } } }'
Abbiamo infatti solo chiamato la CLI di GitHub, per comodità, per invocare una chiamata all'endpoint GraphQL, passando l'ID del Project creato in GitHub, che raggruppa tutte le issue che ci interessano.
A questo punto, parte fondamentale della query sta nel recuperare i nodi, ovvero le proprietà, contenute nell'oggetto Issue. E' qui che poi possiamo ottenere le informazioni base come il titolo, la descrizione e l'ID dell'item stesso, piuttosto che proprietà più complesse, come il repository (che di fatto arriva da un altro oggetto), o gli assegnatari di quell'attività specifica (che arrivano da un altro oggetto GraphQL e che sono un array di elementi, perchè l'assegnazione può essere multipla). Allo stesso tempo, grazie alla funzione di fieldValueByName, possiamo ottenere anche valori custom, come ad esempio l'effort, che fa parte del project ma non del work item.
Questi dati, una volta recuperati, ci forniranno un JSON, che potrà essere in seguito analizzato con tutti gli strumenti del caso.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Cancellare una run di un workflow di GitHub
Code scanning e advanced security con Azure DevOps
Utilizzare Container Queries nominali
Usare le navigation property in QuickGrid di Blazor
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode
Ottenere un token di accesso per una GitHub App
Introduzione alle Container Queries
Ordine e importanza per @layer in CSS
Eseguire i worklow di GitHub su runner potenziati
Configurare lo startup di applicazioni server e client con .NET Aspire
Creare una libreria CSS universale: Nav menu
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
I più letti di oggi
- Screencast 'Primi passi con Windows Workflow Foundation'
- .NET Conference Italia 2021 - Online
- Venite a trovarci a SMAU, dal 2 al 6 ottobre!
- Validazione dell'input in ASP.NET MVC 2
- Ignorare gli errori negli script
- Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
- Inviare un'e-mail con ASP.NET