-
Notifications
You must be signed in to change notification settings - Fork 0
Português
- SQL Server
- Aplicação .Net Core 3.1+
- Conta no Azure DevOps
PM > Install-Package AzureDevOpsTracker
Depois da instalação, atualize seu arquivo de Startup.cs OWIN com o seguinte código:
public void ConfigureServices(IServiceCollection services)
{
services.AddAzureDevopsStateTracker(new AzureDevopsStateTracker.Data.DataBaseConfig("[CONNECTION_STRING]"),
new MessageConfig(EMessengers.MICROSOFT_TEAMS, "[URL_TEAMS]"));
}
public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider)
{
app.UseAzureDevopsStateTracker(serviceProvider);
}
No exemplo acima o Microsoft Teams será usado para lançar o ChangeLog.
Para a integração com o Service Hook do Azure DevOps, é necessário que existam dois EndPoints que recebam uma requisição POST com as Json específicas. Essas requisições receberão dados de Workitems criados e Workitems atualizados.
public class ExampleController : Controller
{
private readonly IAzureDevopsTrackerService _azureDevopsTrackerService;
private readonly IChangeLogService _changeLogService;
public ExampleController(
IAzureDevopsTrackerService azureDevopsTrackerService,
IChangeLogService changeLogService)
{
_azureDevopsTrackerService = azureDevopsTrackerService;
_changeLogService = changeLogService;
}
[HttpPost("workitem-updated")]
public async Task<IActionResult> WorkItemUpdated([FromBody] UpdatedWorkItemDTO updatedWorkItemDTO)
{
await _azureDevopsTrackerService.Update(updatedWorkItemDTO);
return Ok();
}
[HttpPost("workitem-created")]
public async Task<IActionResult> WorkItemCreated([FromBody] CreateWorkItemDTO createWorkItemDTO)
{
await _azureDevopsTrackerService.Create(createWorkItemDTO);
return Ok();
}
[AllowAnonymous]
[HttpGet("release-changelog")]
public IActionResult ReleaseChangelog()
{
var changeLog = _changeLogService.Release();
if (changeLog is null) return new OkObjectResult("There's no WorkItems waiting for a ChangeLog");
var message = _changeLogService.SendToMessengers(changeLog);
return new OkObjectResult(message);
}
[AllowAnonymous]
[HttpGet("count-items-for-release")]
public IActionResult CountItemsForRelease()
{
try
{
var count = _changeLogService.CountItemsForRelease();
var returnText = new StringBuilder();
if (count == 0 || count == 1)
returnText.Append($"{count} Item");
else
returnText.Append($"{count} Items");
return new OkObjectResult(new { data = returnText.ToString() });
}
catch (Exception ex)
{
return new OkObjectResult(new { data = ex.Message });
}
}
}
Para mais informações sobre a utilização com Azure Function, consulte nossa página de Azure DevOps Function Tracker.
Os mesmos passos devem ser realizados para o WorkItem Updated
Acessando as configurações do Processo no Azure DevOps é possível editar os campos de um WorkItem. Para o funcionamento do ChangeLog, é necessário que um campo chamado exatamente de "ChangeLog Description" seja criado.
Quando um WorkItem muda para o status Closed e possui algum texto no campo ChangeLog Description então ele ficará aguardando por um ChangeLog.
É possível saber quantos itens estão aguardando por um ChangeLog através do método IChangeLogService.CountItemsForRelease()
.
No exemplo do Controller acima, a Action de url count-items-for-release
tem esse papel.
Para lançar um ChangeLog, o método IChangeLogService.Release()
deve ser chamado e, caso queira publicá-lo em alguns dos mensageiros que temos suporte, o método IChangeLogService.SendToMessengers(changeLog)
deve ser chamado.
No exemplo do Controller acima, a Action de url release-changelog
tem esses papéis.
Para facilitar o uso e a implantação do ChangeLog, recomendamos o site https://shields.io/ para a criação de um botão que informe o número de itens aguardando ChangeLog e ao clicar o ChangeLog seja lançado e publicado.
Exemplo de implementaçao do botão em questão:
[![Button](https://img.shields.io/badge/dynamic/json?color=%237bd1d7&style=for-the-badge&label=RELEASE%20CHANGELOG&query=%24.data&url=[URL DA SUA API]/count-items-for-release)]([URL DA SUA API]/release-changelog)
O resultado será:
Para o funcionamento do ChangeLog no Microsoft Teams e no Discord é necessário que um Webhook seja criado. Para mais informações de como criar um webhook, acesse:
Discord: https://support.discord.com/hc/pt-br/articles/228383668-Usando-Webhooks
Microsoft Teams: https://docs.microsoft.com/pt-br/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook
Exemplo de ChangeLog lançado no Microsoft Teams:
Pronto, agora todas as mudanças feitas nos WorkItems já serão salvas automaticamente no banco de dados e sua equipe terá um ChangeLog automático!! 🎉😍
select
t.State,
dbo.ToTime(AVG(t.TotalWorkedTime)) as AvgTime,
dbo.ToTime(MAX(t.TotalWorkedTime)) as MaxTime,
dbo.ToTime(MIN(t.TotalWorkedTime)) as MinorTime,
dbo.ToTime(SUM(t.TotalWorkedTime)) as SumTime,
AVG(t.TotalWorkedTime / 60 / 60) as AvgInHours
from WorkItems w
join TimeByStates t on t.WorkItemId = w.Id
where 1=1
and w.IterationPath = 'Sprint 12'
and w.Type IN ('Bug', 'Task')
group by t.State
select
w.Id,
w.Title,
dbo.ToTime(t.TotalWorkedTime) as TotalWorkedTime,
w.AssignedTo,
t.TotalWorkedTime
from WorkItems w
join TimeByStates t on t.WorkItemId = w.Id
where w.IterationPath = 'Sprint 12'
and w.Type IN ('Bug', 'Task')
and t.TotalWorkedTime > 60
and t.State = 'Active'
order by t.TotalWorkedTime desc
Temos um banco de dados com um usuário público para você ver e testar o Azure DevOps Tracker em pleno funcionamento!
- Servidor: tcp:sql-azure-devops-tracker.database.windows.net,1433
- Banco: sqldb-azure-devops-tracker
- Usuário: public_user
- Senha: @Adt123456_
Link do projeto no Azure DevOps que está conectado nesse banco: Azure Devops - TypingHard