Skip to content

Commit b1f0f42

Browse files
authored
Merge pull request #48 from GarageGroup/feature/improve-health-check
Feature/improve health check
2 parents 05c18dc + d900353 commit b1f0f42

19 files changed

+196
-131
lines changed

.github/workflows/publish.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,18 @@ jobs:
110110
package: ./publish/${{ vars.AZURE_ARTIFACT_NAME }}-${{ steps.get_version.outputs.version }}.zip
111111

112112
- name: Log out of Azure
113-
run: az logout
113+
run: az logout
114+
115+
ping-test:
116+
runs-on: ubuntu-latest
117+
needs: deploy-to-test
118+
119+
steps:
120+
- name: Ping Health Check URL
121+
uses: jtalk/url-health-check-action@v3
122+
with:
123+
url: https://${{ vars.TEST_WEBAPP_NAME }}.azurewebsites.net/api/health?code=${{ secrets.TEST_BOTFUNC_KEY }}
124+
follow-redirect: false
125+
max-attempts: 3
126+
retry-delay: 5s
127+
retry-all: false

.github/workflows/web-deploy-prod.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,18 @@ jobs:
3939
package: ./publish/${{ vars.AZURE_ARTIFACT_NAME }}-${{ steps.get_version.outputs.version }}.zip
4040

4141
- name: Log out of Azure
42-
run: az logout
42+
run: az logout
43+
44+
ping:
45+
runs-on: ubuntu-latest
46+
needs: deploy
47+
48+
steps:
49+
- name: Ping Health Check URL
50+
uses: jtalk/url-health-check-action@v3
51+
with:
52+
url: https://${{ vars.PROD_WEBAPP_NAME }}.azurewebsites.net/api/health?code=${{ secrets.PROD_BOTFUNC_KEY }}
53+
follow-redirect: false
54+
max-attempts: 3
55+
retry-delay: 5s
56+
retry-all: false

.github/workflows/web-deploy-test.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,18 @@ jobs:
3939
package: ./publish/${{ vars.AZURE_ARTIFACT_NAME }}-${{ steps.get_version.outputs.version }}.zip
4040

4141
- name: Log out of Azure
42-
run: az logout
42+
run: az logout
43+
44+
ping:
45+
runs-on: ubuntu-latest
46+
needs: deploy
47+
48+
steps:
49+
- name: Ping Health Check URL
50+
uses: jtalk/url-health-check-action@v3
51+
with:
52+
url: https://${{ vars.TEST_WEBAPP_NAME }}.azurewebsites.net/api/health?code=${{ secrets.TEST_BOTFUNC_KEY }}
53+
follow-redirect: false
54+
max-attempts: 3
55+
retry-delay: 5s
56+
retry-all: false

src/app/AzureFunc/Applicaton/App.Configure.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using GarageGroup.Infra;
2+
using GarageGroup.Infra.Bot.Builder;
23
using Microsoft.Azure.Functions.Worker;
34
using Microsoft.Extensions.DependencyInjection;
45
using PrimeFuncPack;
@@ -9,7 +10,17 @@ partial class Application
910
{
1011
internal static void Configure(IFunctionsWorkerApplicationBuilder builder)
1112
=>
12-
builder.Services.RegisterDataverseApi().RegisterSqlApi();
13+
builder.Services.RegisterCosmosStorage().RegisterDataverseApi().RegisterSqlApi();
14+
15+
private static IServiceCollection RegisterCosmosStorage(this IServiceCollection services)
16+
=>
17+
PrimaryHandler.UseStandardSocketsHttpHandler()
18+
.UseLogging("CosmosStorage")
19+
.UseTokenCredentialResource()
20+
.UsePollyStandard()
21+
.UseCosmosStorage("CosmosDb")
22+
.ToRegistrar(services)
23+
.RegisterSingleton();
1324

1425
private static IServiceCollection RegisterDataverseApi(this IServiceCollection services)
1526
=>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using GarageGroup.Infra;
2+
using GarageGroup.Infra.Bot.Builder;
3+
using Microsoft.Extensions.DependencyInjection;
4+
using PrimeFuncPack;
5+
6+
namespace GarageGroup.Internal.Timesheet;
7+
8+
partial class Application
9+
{
10+
[HttpFunction("HealthCheck", HttpMethodName.Get, Route = "health", AuthLevel = HttpAuthorizationLevel.Function)]
11+
internal static Dependency<IHealthCheckHandler> UseHealthCheck()
12+
=>
13+
HealthCheck.UseServices(
14+
Dependency.From(ServiceProviderServiceExtensions.GetRequiredService<ICosmosStorage>).UseServiceHealthCheckApi("CosmosStorage"),
15+
Dependency.From(ServiceProviderServiceExtensions.GetRequiredService<ISqlApi>).UseServiceHealthCheckApi("DataverseDb"),
16+
Dependency.From(ServiceProviderServiceExtensions.GetRequiredService<IDataverseApiClient>).UseServiceHealthCheckApi("DataverseApi"))
17+
.UseHealthCheckHandler();
18+
}

src/app/AzureFunc/Applicaton/App.Storage.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/app/AzureFunc/Applicaton/Applicaton.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
using System;
22
using System.Collections.Generic;
33
using GarageGroup.Infra;
4-
using Microsoft.Azure.Functions.Worker;
54
using Microsoft.Extensions.Configuration;
65
using Microsoft.Extensions.DependencyInjection;
76
using PrimeFuncPack;
87

98
namespace GarageGroup.Internal.Timesheet;
109

11-
[HealthCheckFunc("HealthCheck", AuthLevel = AuthorizationLevel.Function)]
1210
internal static partial class Application
1311
{
1412
private const string DataverseSectionName = "Dataverse";

src/app/AzureFunc/AzureFunc.csproj

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,22 @@
2525
</ItemGroup>
2626

2727
<ItemGroup>
28-
<PackageReference Include="GarageGroup.Infra.Azure.DurableTask" Version="0.5.0" />
29-
<PackageReference Include="GarageGroup.Infra.Azure.HealthCheck" Version="0.7.0" />
28+
<PackageReference Include="GarageGroup.Infra.Azure.DurableTask" Version="0.5.1" />
3029
<PackageReference Include="GarageGroup.Infra.Azure.Hosting" Version="0.6.1" />
3130
<PackageReference Include="GarageGroup.Infra.Azure.Services.AzureUser.Api" Version="0.1.1" />
3231
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Authorization.Dataverse" Version="0.4.0" />
3332
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Command.Info" Version="0.2.0" />
3433
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Command.Menu" Version="0.2.0" />
3534
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Command.Stop" Version="0.2.0" />
3635
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Integration.Handler" Version="0.4.0" />
37-
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Integration.Storage.CosmosDb" Version="0.4.0" />
38-
<PackageReference Include="GarageGroup.Infra.Dataverse.Api" Version="3.14.0" />
36+
<PackageReference Include="GarageGroup.Infra.Bot.Builder.Integration.Storage.CosmosDb" Version="0.5.0" />
37+
<PackageReference Include="GarageGroup.Infra.Dataverse.Api" Version="3.15.0" />
3938
<PackageReference Include="GarageGroup.Infra.Dataverse.DataverseUser.Api" Version="1.3.0" />
39+
<PackageReference Include="GarageGroup.Infra.HealthCheck.Handler" Version="0.0.1" />
4040
<PackageReference Include="GarageGroup.Infra.Http.Polly" Version="1.2.0" />
41-
<PackageReference Include="GarageGroup.Infra.Sql.Api" Version="2.3.0" />
41+
<PackageReference Include="GarageGroup.Infra.Sql.Api" Version="2.4.0" />
4242
<PackageReference Include="GarageGroup.Infra.Sql.Api.Provider.Dataverse" Version="0.0.1" />
43+
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.1.0" />
4344
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.16.4" OutputItemType="Analyzer" />
4445
<PackageReference Include="PrimeFuncPack.DependencyRegistry" Version="2.1.0" />
4546
</ItemGroup>

src/app/AzureFunc/Program.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System.Threading.Tasks;
22
using GarageGroup.Infra;
3+
using GarageGroup.Infra.Bot.Builder;
4+
using Microsoft.Extensions.DependencyInjection;
35
using Microsoft.Extensions.Hosting;
46

57
namespace GarageGroup.Internal.Timesheet;
@@ -12,7 +14,7 @@ static Task Main()
1214
useHostConfiguration: false,
1315
configure: Application.Configure)
1416
.ConfigureBotBuilder(
15-
storageResolver: Application.ResolveCosmosStorage)
17+
storageResolver: ServiceProviderServiceExtensions.GetRequiredService<ICosmosStorage>)
1618
.Build()
1719
.RunAsync();
1820
}

src/app/AzureFunc/appsettings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
"UserStateContainerTtlHours": 744,
1111
"ConversationStateContainerTtlHours": 1,
1212
"BotStorageContainerTtlHours": 24,
13-
"MaxDegreeOfParallelism": 2
13+
"MaxDegreeOfParallelism": 2,
14+
"PingChannels": [
15+
"telegram"
16+
]
1417
},
1518
"Dataverse": {
1619
"ServiceUrl": "",

0 commit comments

Comments
 (0)