Skip to content

Commit 6dab836

Browse files
Merge pull request #331 from CodebreakerApp/copilot/fix-03f691be-a57e-43af-a2a0-001fd339214c
Update to .NET Aspire 9.5.0
2 parents defd898 + 60e36c4 commit 6dab836

5 files changed

Lines changed: 152 additions & 74 deletions

File tree

src/Directory.Packages.props

Lines changed: 56 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,50 @@
55
<NoWarn>$(NoWarn);NU1507</NoWarn>
66
</PropertyGroup>
77
<ItemGroup>
8-
<PackageVersion Include="Aspire.Azure.Messaging.EventHubs" Version="9.4.2" />
9-
<PackageVersion Include="Aspire.Azure.Security.KeyVault" Version="9.4.2" />
10-
<PackageVersion Include="Aspire.Azure.Storage.Blobs" Version="9.4.2" />
11-
<PackageVersion Include="Aspire.Azure.Storage.Queues" Version="9.4.2" />
12-
<PackageVersion Include="Aspire.Confluent.Kafka" Version="9.4.2" />
13-
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.4.2" />
14-
<PackageVersion Include="Aspire.Hosting.Azure" Version="9.4.2" />
15-
<PackageVersion Include="Aspire.Hosting.Azure.AppConfiguration" Version="9.4.2" />
16-
<PackageVersion Include="Aspire.Hosting.Azure.ApplicationInsights" Version="9.4.2" />
17-
<PackageVersion Include="Aspire.Hosting.Azure.CosmosDB" Version="9.4.2" />
18-
<PackageVersion Include="Aspire.Hosting.Azure.EventHubs" Version="9.4.2" />
19-
<PackageVersion Include="Aspire.Hosting.Azure.KeyVault" Version="9.4.2" />
20-
<PackageVersion Include="Aspire.Hosting.Azure.SignalR" Version="9.4.2" />
21-
<PackageVersion Include="Aspire.Hosting.Azure.Sql" Version="9.4.2" />
22-
<PackageVersion Include="Aspire.Hosting.Azure.Storage" Version="9.4.2" />
23-
<PackageVersion Include="Aspire.Hosting.Kafka" Version="9.4.2" />
24-
<PackageVersion Include="Aspire.Hosting.Redis" Version="9.4.2" />
8+
<!-- Aspire packages -->
9+
<PackageVersion Include="Aspire.Azure.Messaging.EventHubs" Version="9.5.0" />
10+
<PackageVersion Include="Aspire.Azure.Security.KeyVault" Version="9.5.0" />
11+
<PackageVersion Include="Aspire.Azure.Storage.Blobs" Version="9.5.0" />
12+
<PackageVersion Include="Aspire.Azure.Storage.Queues" Version="9.5.0" />
13+
<PackageVersion Include="Aspire.Confluent.Kafka" Version="9.5.0" />
14+
<PackageVersion Include="Aspire.Hosting.AppHost" Version="9.5.0" />
15+
<PackageVersion Include="Aspire.Hosting.Azure" Version="9.5.0" />
16+
<PackageVersion Include="Aspire.Hosting.Azure.AppConfiguration" Version="9.5.0" />
17+
<PackageVersion Include="Aspire.Hosting.Azure.AppContainers" Version="9.5.0" />
18+
<PackageVersion Include="Aspire.Hosting.Azure.ApplicationInsights" Version="9.5.0" />
19+
<PackageVersion Include="Aspire.Hosting.Azure.CosmosDB" Version="9.5.0" />
20+
<PackageVersion Include="Aspire.Hosting.Azure.EventHubs" Version="9.5.0" />
21+
<PackageVersion Include="Aspire.Hosting.Azure.KeyVault" Version="9.5.0" />
22+
<PackageVersion Include="Aspire.Hosting.Azure.SignalR" Version="9.5.0" />
23+
<PackageVersion Include="Aspire.Hosting.Azure.Sql" Version="9.5.0" />
24+
<PackageVersion Include="Aspire.Hosting.Azure.Storage" Version="9.5.0" />
25+
<PackageVersion Include="Aspire.Hosting.Kafka" Version="9.5.0" />
26+
<PackageVersion Include="Aspire.Hosting.Redis" Version="9.5.0" />
2527
<PackageVersion Include="Aspire.Hosting.Testing" Version="9.4.2" />
26-
<PackageVersion Include="Aspire.Microsoft.EntityFrameworkCore.Cosmos" Version="9.4.2" />
27-
<PackageVersion Include="Aspire.Microsoft.EntityFrameworkCore.SqlServer" Version="9.4.2" />
28-
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="9.4.2" />
29-
<PackageVersion Include="Aspire.StackExchange.Redis.DistributedCaching" Version="9.4.2" />
28+
<PackageVersion Include="Aspire.Microsoft.EntityFrameworkCore.Cosmos" Version="9.5.0" />
29+
<PackageVersion Include="Aspire.Microsoft.EntityFrameworkCore.SqlServer" Version="9.5.0" />
30+
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="9.5.0" />
31+
<PackageVersion Include="Aspire.StackExchange.Redis.DistributedCaching" Version="9.5.0" />
32+
<!-- Azure and other packages -->
3033
<PackageVersion Include="Azure.Identity" Version="1.16.0" />
3134
<PackageVersion Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.3.0" />
3235
<PackageVersion Include="BenchmarkDotNet" Version="0.15.0" />
3336
<PackageVersion Include="BlazorApplicationInsights" Version="3.2.1" />
37+
<!-- Codebreaker packages -->
3438
<PackageVersion Include="CNinnovation.Codebreaker.Analyzers" Version="3.8.0" />
3539
<PackageVersion Include="CNinnovation.Codebreaker.BackendModels" Version="3.8.0" />
3640
<PackageVersion Include="CNinnovation.Codebreaker.Cosmos" Version="3.8.0" />
3741
<PackageVersion Include="CNinnovation.Codebreaker.GamesClient" Version="3.8.0" />
3842
<PackageVersion Include="CNinnovation.Codebreaker.SqlServer" Version="3.8.0" />
43+
<!-- Test and utility packages -->
3944
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
4045
<PackageVersion Include="FluentValidation" Version="12.0.0" />
4146
<PackageVersion Include="Google.Protobuf" Version="3.32.1" />
4247
<PackageVersion Include="Grpc.AspNetCore" Version="2.71.0" />
4348
<PackageVersion Include="Grpc.Net.ClientFactory" Version="2.71.0" />
4449
<PackageVersion Include="Grpc.Tools" Version="2.72.0" />
4550
<PackageVersion Include="idunno.Authentication.Basic" Version="2.4.0" />
51+
<!-- Microsoft ASP.NET Core packages -->
4652
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.9" />
4753
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="9.0.9" />
4854
<PackageVersion Include="Microsoft.AspNetCore.Components.QuickGrid" Version="9.0.9" />
@@ -57,29 +63,39 @@
5763
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="9.0.9" />
5864
<PackageVersion Include="Microsoft.Authentication.WebAssembly.Msal" Version="9.0.9" />
5965
<PackageVersion Include="Microsoft.Azure.SignalR" Version="1.32.0" />
66+
<!-- Entity Framework packages (conditional versions) -->
6067
<PackageVersion Include="Microsoft.EntityFrameworkCore.Sqlite" Version="9.0.9" />
61-
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.9" />
68+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Cosmos" Version="8.0.11" Condition="'$(TargetFramework)' == 'net8.0'" />
69+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Cosmos" Version="9.0.9" Condition="'$(TargetFramework)' == 'net9.0'" />
70+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.11" Condition="'$(TargetFramework)' == 'net8.0'" />
71+
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.9" Condition="'$(TargetFramework)' == 'net9.0'" />
72+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.11" Condition="'$(TargetFramework)' == 'net8.0'" />
73+
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.9" Condition="'$(TargetFramework)' == 'net9.0'" />
74+
<!-- Microsoft Extensions packages -->
6275
<PackageVersion Include="Microsoft.Extensions.ApiDescription.Server" Version="9.0.9" />
6376
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.9" />
6477
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="9.0.9" />
6578
<PackageVersion Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.9" />
66-
<PackageVersion Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" Version="8.3.0" />
79+
<PackageVersion Include="Microsoft.Extensions.Configuration.AzureAppConfiguration" Version="8.4.0" />
6780
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="9.0.9" />
6881
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="9.9.0" />
6982
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="9.0.9" />
7083
<PackageVersion Include="Microsoft.Extensions.Http" Version="9.0.9" />
7184
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="9.9.0" />
7285
<PackageVersion Include="Microsoft.Extensions.Localization" Version="9.0.9" />
73-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.9" />
74-
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.4.2" />
75-
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery.Yarp" Version="9.4.2" />
86+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.3" Condition="'$(TargetFramework)' == 'net8.0'" />
87+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.9" Condition="'$(TargetFramework)' == 'net9.0'" />
88+
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="9.5.0" />
89+
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery.Yarp" Version="9.5.0" />
90+
<!-- Microsoft UI and Identity packages -->
7691
<PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.12.1" />
7792
<PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components.Icons" Version="4.12.1" />
78-
<PackageVersion Include="Microsoft.Graph" Version="5.92.0" />
79-
<PackageVersion Include="Microsoft.Identity.Client" Version="4.77.0" />
93+
<PackageVersion Include="Microsoft.Graph" Version="5.93.0" />
94+
<PackageVersion Include="Microsoft.Identity.Client" Version="4.77.1" />
8095
<PackageVersion Include="Microsoft.Identity.Web" Version="3.14.1" />
8196
<PackageVersion Include="Microsoft.Identity.Web.DownstreamApi" Version="3.14.1" />
8297
<PackageVersion Include="Microsoft.Identity.Web.UI" Version="3.14.1" />
98+
<!-- Testing packages -->
8399
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" />
84100
<PackageVersion Include="Microsoft.Playwright" Version="1.55.0" />
85101
<PackageVersion Include="Microsoft.Playwright.NUnit" Version="1.55.0" />
@@ -89,20 +105,26 @@
89105
<PackageVersion Include="NUnit" Version="4.4.0" />
90106
<PackageVersion Include="NUnit.Analyzers" Version="4.10.0" />
91107
<PackageVersion Include="NUnit3TestAdapter" Version="5.1.0" />
92-
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.12.0" />
108+
<!-- PostgreSQL packages (conditional versions) -->
109+
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.11" Condition="'$(TargetFramework)' == 'net8.0'" />
110+
<PackageVersion Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.4" Condition="'$(TargetFramework)' == 'net9.0'" />
111+
<!-- OpenTelemetry packages -->
112+
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.13.0" />
93113
<PackageVersion Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.10.0-beta.1" />
94-
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.12.0" />
114+
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.13.0" />
95115
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.12.0" />
96116
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.12.0" />
97117
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.12.0" />
98-
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.4" />
99-
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="9.0.4" />
118+
<!-- Other packages -->
119+
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.5" />
120+
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="9.0.5" />
100121
<PackageVersion Include="System.Formats.Asn1" Version="9.0.9" />
101122
<PackageVersion Include="System.Text.Json" Version="9.0.9" />
102-
<PackageVersion Include="xunit" Version="2.9.3" />
103-
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" />
104123
<PackageVersion Include="Yarp.ReverseProxy" Version="2.3.0" />
124+
<!-- xUnit packages -->
125+
<PackageVersion Include="xunit" Version="2.9.3" />
105126
<PackageVersion Include="xunit.analyzers" Version="1.21.0" />
127+
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
106128
<PackageVersion Include="xunit.v3" Version="2.0.2" />
107129
</ItemGroup>
108130
</Project>

src/services/gameapis/Codebreaker.GameAPIs/ApplicationServices.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public static async Task CreateOrUpdateDatabaseAsync(this WebApplication app)
150150
using var scope = app.Services.CreateScope();
151151
var repo = scope.ServiceProvider.GetRequiredService<GamesSqlServerContext>();
152152

153-
// TODO: update with .NET Aspire Preview 4
153+
// TODO: implement with updated Aspire patterns
154154
// var repo = scope.ServiceProvider.GetRequiredService<IGamesRepository>();
155155
if (repo is GamesSqlServerContext context)
156156
{
@@ -173,7 +173,7 @@ public static async Task CreateOrUpdateDatabaseAsync(this WebApplication app)
173173
// try
174174
// {
175175
// using var scope = app.Services.CreateScope();
176-
// // TODO: update with .NET Aspire Preview 4
176+
// // TODO: implement with updated Aspire patterns
177177
// var repo = scope.ServiceProvider.GetRequiredService<GamesCosmosContext>();
178178
// // var repo = scope.ServiceProvider.GetRequiredService<IGamesRepository>();
179179
// if (repo is GamesCosmosContext context)

src/services/host/Codebreaker.AppHost/AppHost.cs

Lines changed: 91 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using Azure.Provisioning.AppContainers;
2+
using Azure.Provisioning.EventHubs;
3+
using Azure.Provisioning.Sql;
4+
15
var builder = DistributedApplication.CreateBuilder(args);
26

37
string dataStore = builder.Configuration["DataStore"] ?? "InMemory";
@@ -17,7 +21,7 @@
1721
var sqlServer = builder.AddSqlServer("sql")
1822
.WithDataVolume()
1923
.PublishAsContainer()
20-
.AddDatabase("CodebreakerSql");
24+
.AddDatabase("CodebreakerSql");
2125

2226
var cosmos = builder.AddAzureCosmosDB("codebreakercosmos")
2327
.AddCosmosDatabase("codebreaker");
@@ -53,6 +57,8 @@
5357
}
5458
else
5559
{
60+
builder.AddAzureContainerAppEnvironment("codebreaker-environment");
61+
5662
var logs = builder.AddAzureLogAnalyticsWorkspace("logs");
5763
var insights = builder.AddAzureApplicationInsights("insights", logs);
5864
var signalR = builder.AddAzureSignalR("signalr");
@@ -61,7 +67,16 @@
6167
var botQueue = storage.AddQueues("botqueue");
6268
var blob = storage.AddBlobs("checkpoints");
6369

64-
var eventHub = builder.AddAzureEventHubs("codebreakerevents");
70+
var eventHub = builder.AddAzureEventHubs("codebreakerevents")
71+
.ConfigureInfrastructure(infrastructure =>
72+
{
73+
var eventHubsNamespace = infrastructure.GetProvisionableResources().OfType<EventHubsNamespace>().Single();
74+
eventHubsNamespace.Sku = new EventHubsSku()
75+
{
76+
Name = EventHubsSkuName.Basic,
77+
Tier = EventHubsSkuTier.Basic
78+
};
79+
});
6580

6681
eventHub.AddHub("games");
6782

@@ -75,73 +90,113 @@
7590

7691
// TODO: fix new eventhub namings
7792
var gameAPIs = builder.AddProject<Projects.Codebreaker_GameAPIs>("gameapis")
78-
.WithReference(cosmos)
79-
.WithReference(redis)
80-
.WithReference(insights)
81-
.WithReference(eventHub)
93+
.WithReference(cosmos).WaitFor(cosmos)
94+
.WithReference(redis).WaitFor(redis)
95+
.WithReference(insights).WaitFor(insights)
96+
.WithReference(eventHub).WaitFor(eventHub)
8297
.WithEnvironment("DataStore", dataStore)
83-
.WithEnvironment("StartupMode", startupMode);
98+
.WithEnvironment("StartupMode", startupMode)
99+
.PublishAsAzureContainerApp((module, app) =>
100+
{
101+
app.Template.Scale.MinReplicas = 0;
102+
app.Template.Scale.MaxReplicas = 2;
103+
});
84104

85105
var bot = builder.AddProject<Projects.CodeBreaker_Bot>("bot")
86-
.WithReference(insights)
87-
.WithReference(botQueue)
88-
.WithReference(gameAPIs)
106+
.WithReference(insights).WaitFor(insights)
107+
.WithReference(botQueue).WaitFor(botQueue)
108+
.WithReference(gameAPIs).WaitFor(gameAPIs)
89109
.WithEnvironment("Bot__Loop", botLoop)
90110
.WithEnvironment("Bot__Delay", botDelay)
91-
.WaitFor(gameAPIs);
111+
.PublishAsAzureContainerApp((module, app) =>
112+
{
113+
app.Template.Scale.MinReplicas = 0;
114+
app.Template.Scale.MaxReplicas = 1;
115+
});
92116

93117
// TODO: change to use BotQ with Container App Jobs
118+
#pragma warning disable ASPIREAZURE002 // PublishAsAzureContainerAppJob is for evaluation purposes
94119
var botq = builder.AddProject<Projects.Codebreaker_BotQ>("botq")
95-
.WithReference(insights)
96-
.WithReference(botQueue)
97-
.WithReference(gameAPIs)
120+
.WithReference(insights).WaitFor(insights)
121+
.WithReference(botQueue).WaitFor(botQueue)
122+
.WithReference(gameAPIs).WaitFor(gameAPIs)
98123
.WithEnvironment("Bot__Loop", botLoop)
99124
.WithEnvironment("Bot__Delay", botDelay)
100-
.WaitFor(gameAPIs);
125+
.PublishAsAzureContainerAppJob((_, job) =>
126+
{
127+
job.Configuration.TriggerType = ContainerAppJobTriggerType.Event;
128+
job.Configuration.EventTriggerConfig.Scale.MinExecutions = 1;
129+
job.Configuration.EventTriggerConfig.Scale.MaxExecutions = 10;
130+
job.Configuration.EventTriggerConfig.Parallelism = 1;
131+
job.Configuration.EventTriggerConfig.ReplicaCompletionCount = 1;
132+
// TODO: specify scale rule on queue trigger
133+
//job.Configuration.EventTriggerConfig.Scale.Rules.Add(new ContainerAppJobScaleRule()
134+
//{
135+
// QueueName = botQueue.Resource.Name,
136+
// MessageCount = 1
137+
//});
138+
});
139+
#pragma warning restore ASPIREAZURE002
101140

102141
var live = builder.AddProject<Projects.Codebreaker_Live>("live")
103142
.WithReference(insights)
104143
.WithReference(eventHub)
105144
.WithReference(signalR)
106145
.WaitFor(eventHub)
107-
.WaitFor(gameAPIs);
146+
.WaitFor(gameAPIs)
147+
.PublishAsAzureContainerApp((module, app) =>
148+
{
149+
app.Template.Scale.MinReplicas = 0;
150+
app.Template.Scale.MaxReplicas = 1;
151+
});
108152

109153
var ranking = builder.AddProject<Projects.Codebreaker_Ranking>("ranking")
110154
.WithReference(cosmos)
111155
.WithReference(insights)
112-
.WithReference(eventHub)
156+
.WithReference(eventHub).WaitFor(eventHub)
113157
.WithReference(blob)
114-
.WaitFor(eventHub)
115158
.WaitFor(insights)
116-
.WaitFor(gameAPIs);
159+
.WaitFor(gameAPIs)
160+
.PublishAsAzureContainerApp((module, app) =>
161+
{
162+
app.Template.Scale.MinReplicas = 0;
163+
app.Template.Scale.MaxReplicas = 1;
164+
});
117165

118166
var users = builder.AddProject<Projects.CodeBreaker_UserService>("users")
119167
.WithReference(insights)
120168
.WithReference(userServiceKeyvault)
121169
.WaitFor(insights)
122-
.WaitFor(userServiceKeyvault);
170+
.WaitFor(userServiceKeyvault)
171+
.PublishAsAzureContainerApp((module, app) =>
172+
{
173+
app.Template.Scale.MinReplicas = 0;
174+
app.Template.Scale.MaxReplicas = 1;
175+
});
123176

124177
var gateway = builder.AddProject<Projects.Codebreaker_ApiGateway>("gateway")
125178
.WithExternalHttpEndpoints()
126-
.WithReference(gameAPIs)
127-
.WithReference(live)
128-
.WithReference(ranking)
129-
.WithReference(users)
130-
.WithReference(gatewayKeyvault)
131-
.WithReference(insights)
132-
.WaitFor(gameAPIs)
133-
.WaitFor(live)
134-
.WaitFor(ranking)
135-
.WaitFor(users)
136-
.WaitFor(gatewayKeyvault)
137-
.WaitFor(insights);
179+
.WithReference(gameAPIs).WaitFor(gameAPIs)
180+
.WithReference(live).WaitFor(live)
181+
.WithReference(ranking).WaitFor(ranking)
182+
.WithReference(users).WaitFor(users)
183+
.WithReference(gatewayKeyvault).WaitFor(gatewayKeyvault)
184+
.WithReference(insights).WaitFor(insights)
185+
.PublishAsAzureContainerApp((module, app) =>
186+
{
187+
app.Template.Scale.MinReplicas = 0;
188+
app.Template.Scale.MaxReplicas = 2;
189+
});
138190

139191
builder.AddProject<Projects.CodeBreaker_Blazor>("blazor")
140192
.WithExternalHttpEndpoints()
141-
.WithReference(gateway)
142-
.WithReference(insights)
143-
.WaitFor(gateway)
144-
.WaitFor(insights);
193+
.WithReference(gateway).WaitFor(gateway)
194+
.WithReference(insights).WaitFor(insights)
195+
.PublishAsAzureContainerApp((module, app) =>
196+
{
197+
app.Template.Scale.MinReplicas = 0;
198+
app.Template.Scale.MaxReplicas = 1;
199+
});
145200
}
146201

147202
builder.Build().Run();

0 commit comments

Comments
 (0)