Taggare automaticamente un team member in work item tramite Azure DevOps

di Matteo Tumiati, in DevOps,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi