Na primeira parte desta série sobre como construir um relatório Stories Overview no VSTS com MS Excel e Powershell foi explicado as diversas partes do relatório existente no template Agile do Team Foudation Server.

Nesta segunda parte será visto como buscar as User Stories, que são a parte principal deste relatório.

Powershell + TfsCmdLets

A maneira mais fácil de trabalharmos com a API do TFS/VSTS é via scripts Powershell encapsulando a API, e para isso já existe um projeto bem abrangente, open source e que aceita contribuições da comunidade!

TfsCmdLets

Criado por Igor Abade o TfsCmdLets é um projeto que une o poder Cmdlets PowerShell  com as API’s do Team Foundation Server e Visual Studio Team Services. Eu já havia comentado brevemente sobre ele e usado no post Administrando usuários, grupos e permissões no console com TFSSecurity. Mas agora faremos um uso intensivo dele na construção do relatório.

Você pode baixar o código fonte aqui.

Com o Windows 10 e Powershell 5 é muito fácil de instalar, basta:

Install-Module TfsCmdLets

Para verificar se a instalação foi feita:

Get-Module

2016-06-08 22_06_43-

Agora para podermos usar com o TFS/VSTS precisamos conectar a Team Project Collection e a um Team Project, para isso, vamos executar as linhas abaixo, e lembrando que eu vou utilizar a nossa conhecida VM do Brian Keller, com o Team Project de exemplo TailspinToys:

Connect-TfsTeamProjectCollection http://vsalm:8080/tfs/TailspinToysCollection

Connect-TfsTeamProject "Tailspin Toys"

Para testar vamos ver as Iterations cadastradas para esse TP:

Get-TfsIteration

2016-06-08 22_08_26-

Bem fácil não?

Buscando as Stories

Vamos construir nossa primeira query do relatório, que é buscar as User Stories, obviamente, já que o relatório é sobre isso.

2016-06-08 22_14_02-

Baseado na imagem acima e usando o filtros Team Project e Iteration… vamos lá! Se eu não soubesse nada sobre o comando, para encontrá-lo posso usar o cmdlet Get-Command, usando o parâmetro para determinar o módulo que eu vou buscar, TfsCmdLets, e algo no sobre o nome, por isso o *workitem*:

Get-Command -Module TfsCmdLets -Name *workitem*

Retornaria:

2016-06-08 22_20_34-

Portanto o mais provável para o nosso relatório seria Get-TfsWorkItem, para saber sobre ele:

Get-Help Get-TfsWorkItem

2016-06-08 22_22_03-

Para esta query é preciso usar 2 parâmetros: Work Items do tipo User Story e que estejam na Iteration 2. Como este cmdlet não tem um param para eles vamos usar o parâmetro Filter. Para quem já customizou um WIT, será fácil lembrar os nomes desses campos: System.IterationPath e System.WorkItemType. Vai ficar:

Get-TfsWorkItem -Filter '[System.IterationPath] = "Tailspin Toys\Iteration 2" And [System.WorkItemType] = "User Story"'

Como ele está filtrando por IterationPath, nesse caso, irá retornar somente os WIT’s do Team Project Tailspin Toys!

2016-06-09 14_55_09-

Por enquanto o nosso script está assim:

Emmanuel Brandão