Nesse repositório temos uma Azure Function que utiliza o que também pode ser encontrado no para mostrar um exemplo prático de utilização do mesmo.
O objetivo é demonstrar a utilização do ADT através de uma Azure Function e, além disso, mostrar os passos necessários para a criação dessa Azure Function no Portal Azure. Para mais informações mais detalhadas e específicas sobre o Azure DevOps Tracker, consulte a nossa Wiki.
Diferente de uma startup de um projeto MVC ou API, requer que a startup herde de uma FunctionsStartup.
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddScoped<ServiceToInject>();
builder.Services.AddScoped<AzureDevopsTrackerService>();
builder.Services.AddAzureDevopsTracker(new DataBaseConfig("[YOUR_CONNECTION_STRING]"));
}
}
Novamente, diferente de um projeto MVC ou API, dentro da controller ao invés de injetar a interface será injetado a classe concreta.
public class WorkItemFunctionsController
{
private readonly AzureDevopsTrackerService _azureDevopsTrackerService;
public WorkItemFunctionsController(
AzureDevopsTrackerService azureDevopsTrackerService)
{
_azureDevopsTrackerService = azureDevopsTrackerService;
}
[FunctionName("workitem")]
public async Task<IActionResult> Create(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
try
{
var workItemDTO = JsonConvert.DeserializeObject<CreateWorkItemDTO>(req.GetBody());
await _azureDevopsTrackerService.Create(workItemDTO);
}
catch (Exception ex)
{
return new OkObjectResult(ex.Message);
}
return new OkObjectResult(HttpStatusCode.OK);
}
[FunctionName("workitem-update")]
public async Task<IActionResult> Update(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
ILogger log)
{
try
{
var workItemDTO = JsonConvert.DeserializeObject<UpdatedWorkItemDTO>(req.GetBody());
await _azureDevopsTrackerService.Update(workItemDTO);
}
catch (Exception ex)
{
return new OkObjectResult(ex.Message);
}
return new OkObjectResult(HttpStatusCode.OK);
}
}
Como resultado final, os endpoints ficarão da seguinte forma
Criação da Azure Function no Portal Azure
Crie um recurso do tipo Function App com as configurações que desejar.
Suba a Azure Function para o DevOps. Você pode ver um exemplo de como fazer isso pelo Azure DevOps em typinghard.azure-devops-tracker-function e o exemplo do yalm.
Após isso, as Functions poderão ser visualizadas no Azure Portal. No exemplo abaixo, estão as Functions criadas nesse repositório.
Configurar no Azure DevOps as URLs, procedimento que também pode ser visto na Wiki na seção Configurando o DevOps