Continuando sul tema work item introdotto negli script precedenti, vediamo ora un altro scenario interessante, ovvero la possibilità di taggare automaticamente dei membri del team. Questo può risultare molto importante per tenere traccia dei progressi su attività ricorrenti, per impostare dei reminder, per avere auto-responder in caso di out of office o situazioni simili.
Per poter taggare una persona, abbiamo però bisogno di conoscere la sua identità all'interno di Azure DevOps. Questa operazione può essere fatta nuovamente tramite le API REST chiamando l'endpoint di identity:
$identity = "my.email@domain.com" $url = "https://vssps.dev.azure.com/$(Organization)/_apis/identities?searchFilter=General&filterValue=$identity&queryMembership=None&api-version=6.0" Invoke-RestMethod $url -Method GET -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);}
L'oggetto che otteremo in risposta, corrispondente all'indirizzo mail (o altri parametri tipo DisplayName, per esempio), se trovato, sarà formato all'incirca in questo modo:
{ "count": 1, "value": [ { "id": "00000000-0000-0000-0000-000000000000", "descriptor": "Microsoft.IdentityModel.Claims.ClaimsIdentity;xxx\\my.fake@domain.com", "subjectDescriptor": "aad.xxxx", "providerDisplayName": "Matteo Tumiati", "isActive": true, "members": [], "memberOf": [], "memberIds": [], "properties": { "Description": { }, "Domain": { }, "Account": { }, "Mail": { }, "DirectoryAlias": { } }, "resourceVersion": 2, "metaTypeId": 0 } ] }
Ovviamente le property sono state volutamente semplificate ed oscurate per concentrarci sui valori fondamentali a cui siamo interessati. Fra questi, possiamo assicurarci che l'utente trovato sia quello ricercato tramite la sua mail, il suo display name, piuttosto che tramite l'alias di dominio. Una volta confermato l'utente, ci salviamo il GUID rappresentante il suo ID.
Questo GUID, infatti, deve essere passato in input come messaggio del testo da inviare come commento al work item (o alla sua description, piuttosto che ai repro steps di un bug):
$message = "<a href='#' data-vss-mention='version:2.0,00000000-0000-0000-0000-000000000000'>Matteo Tumiati</a> questo è un messaggio per te"
Poiché il contenuto di un campo di testo per un work item è solitamente HTML (con un po' di margine per markdown), possiamo taggare una persona facendo riferimento all'HTML standard per fare link di contenuti. Creato il messaggio, non ci resta che postarlo. In questo caso, procediamo tramite l'apposita REST API per inviare un commento sul work item desiderato:
$url = "https://dev.azure.com/$(Organization)/$(Project)/_apis/wit/workItems/$workItemId/comments?api-version=6.0-preview.3" $body = @( @{ text = "$message" } ) $data = ConvertTo-Json $body Invoke-RestMethod $url -Method POST -Body $data -Headers @{Authorization=("Bearer {0}" -f $env:SYSTEM_ACCESSTOKEN);} -ContentType "application/json"
Il risultato finale sarà simile al seguente:
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Copiare automaticamente le secret tra più repository di GitHub
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Creare un webhook in Azure DevOps
Eseguire operazioni sui blob con Azure Storage Actions
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Usare una container image come runner di GitHub Actions
Sfruttare lo streaming di una chiamata Http da Blazor
Utilizzare Model as a Service su Microsoft Azure
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare Tailwind CSS all'interno di React: primi componenti
Verificare la provenienza di un commit tramite le GitHub Actions
I più letti di oggi
- Microsoft annuncia Windows "TrustBridge"
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Estrarre dati randomici da una lista di oggetti in C#
- Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
- Usare il colore CSS per migliorare lo stile della pagina