Skip to content

Commit 9ec5c3d

Browse files
authored
Update README.md
1 parent 29d7f2b commit 9ec5c3d

File tree

1 file changed

+104
-1
lines changed

1 file changed

+104
-1
lines changed

README.md

Lines changed: 104 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,104 @@
1-
# azure-devops-state-tracker-function
1+
# Azure DevOps Tracker Function
2+
3+
Nesse repositório temos uma Azure Function que utiliza o [![Nuget](https://img.shields.io/badge/Azure%20DevOps%20Tracker-nuget-blue)](https://www.nuget.org/packages/AzureDevOpsTracker/) que também pode ser encontrado no [![Azure DevOps Tracker](https://img.shields.io/badge/Azure%20DevOps%20Tracker-github-0099cc)](https://github.com/typinghard/azure-devops-tracker) para mostrar um exemplo prático de utilização do mesmo.
4+
5+
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.
6+
Para mais informações mais detalhadas e específicas sobre o Azure DevOps Tracker, consulte a nossa [Wiki](https://github.com/typinghard/azure-devops-tracker/wiki).
7+
8+
## Etapa 1
9+
10+
### Configuração da Azure Function
11+
12+
Diferente de uma startup de um projeto MVC ou API, requer que a startup herde de uma FunctionsStartup.
13+
14+
```c#
15+
public class Startup : FunctionsStartup
16+
{
17+
public override void Configure(IFunctionsHostBuilder builder)
18+
{
19+
builder.Services.AddScoped<ServiceToInject>();
20+
builder.Services.AddScoped<AzureDevopsTrackerService>();
21+
builder.Services.AddAzureDevopsTracker(new DataBaseConfig("[YOUR_CONNECTION_STRING]"));
22+
}
23+
}
24+
```
25+
26+
Novamente, diferente de um projeto MVC ou API, dentro da controller ao invés de injetar a interface será injetado a classe concreta.
27+
28+
```c#
29+
public class WorkItemFunctionsController
30+
{
31+
private readonly AzureDevopsTrackerService _azureDevopsTrackerService;
32+
33+
public WorkItemFunctionsController(
34+
AzureDevopsTrackerService azureDevopsTrackerService)
35+
{
36+
_azureDevopsTrackerService = azureDevopsTrackerService;
37+
}
38+
39+
[FunctionName("workitem")]
40+
public async Task<IActionResult> Create(
41+
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
42+
ILogger log)
43+
{
44+
45+
try
46+
{
47+
var workItemDTO = JsonConvert.DeserializeObject<CreateWorkItemDTO>(req.GetBody());
48+
await _azureDevopsTrackerService.Create(workItemDTO);
49+
}
50+
catch (Exception ex)
51+
{
52+
return new OkObjectResult(ex.Message);
53+
}
54+
55+
return new OkObjectResult(HttpStatusCode.OK);
56+
}
57+
58+
[FunctionName("workitem-update")]
59+
public async Task<IActionResult> Update(
60+
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
61+
ILogger log)
62+
{
63+
try
64+
{
65+
var workItemDTO = JsonConvert.DeserializeObject<UpdatedWorkItemDTO>(req.GetBody());
66+
await _azureDevopsTrackerService.Update(workItemDTO);
67+
}
68+
catch (Exception ex)
69+
{
70+
return new OkObjectResult(ex.Message);
71+
}
72+
73+
return new OkObjectResult(HttpStatusCode.OK);
74+
}
75+
}
76+
```
77+
78+
Como resultado final, os endpoints ficarão da seguinte forma
79+
80+
![Endpoints Azure Functions](https://drive.google.com/uc?export=view&id=1aKPWYHzqPVsnxcMdvN-dhtodL6l1BT_z)
81+
82+
83+
## Etapa 2
84+
Criação da Azure Function no Portal Azure
85+
86+
### Passo 1
87+
88+
Crie um recurso do tipo Function App com as configurações que desejar.
89+
90+
![Passo 2](https://drive.google.com/uc?export=view&id=13xJhLb5_-dMzRGQwx-gN7FC7U3Pjz1_w)
91+
92+
### Passo 2:
93+
94+
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](https://dev.azure.com/TypingHard/Typing%20Hard%20Project/_build?definitionId=7) e o exemplo do [yalm](https://github.com/typinghard/azure-devops-tracker-function/blob/main/azure-pipelines.yml).
95+
96+
### Passo 3:
97+
98+
Após isso, as Functions poderão ser visualizadas no Azure Portal. No exemplo abaixo, estão as Functions criadas nesse repositório.
99+
100+
![Passo 3](https://drive.google.com/uc?export=view&id=1MpChtcrI1MI4mvoWR3QXAtz6g2bUbMsX)
101+
102+
### Passo 4:
103+
104+
Configurar no Azure DevOps as URLs, procedimento que também pode ser visto na Wiki na seção [Configurando o DevOps](https://github.com/typinghard/azure-devops-tracker/wiki/Portugu%C3%AAs#configurando-o-devops)

0 commit comments

Comments
 (0)