Skip to content

Automate refreshing manifests with GitHub Action #9503

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
May 26, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/refresh-manifests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Refresh Manifests

on:
workflow_dispatch:
schedule:
- cron: '0 16 * * *' # 8am PST (16:00 UTC) - same schedule as API review
Comment on lines +4 to +6
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be better if the manifest was updated on the PRs that made them change. Not in a separate batched PR.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does that look like?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like a test (or GH action) that runs on PRs and fails when they are out of date.


permissions:
contents: write
pull-requests: write

jobs:
generate-and-pr:
runs-on: windows-latest # Using Windows because the script uses PowerShell and build.cmd
if: ${{ github.repository_owner == 'dotnet' }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup .NET SDK
uses: actions/setup-dotnet@v4
with:
global-json-file: global.json

- name: Run RefreshManifests Script
shell: pwsh
run: |
./eng/refreshManifests.ps1

- name: Create or update pull request
uses: dotnet/actions-create-pull-request@e8d799aa1f8b17f324f9513832811b0a62f1e0b1
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: update-manifests
base: main
labels: |
area-app-model
area-engineering-systems
title: "[Automated] Update Manifests"
body: "Auto-generated update to refresh the manifests. This PR will be updated automatically if new changes are detected."
49 changes: 47 additions & 2 deletions eng/refreshManifests.ps1
Original file line number Diff line number Diff line change
@@ -1,2 +1,47 @@
..\build.cmd
get-childitem ..\playground\*AppHost.csproj -Recurse | % { "Generating Manifest for: $_"; dotnet run --no-build --project $_.FullName --launch-profile generate-manifest }
#!/usr/bin/env pwsh

# Get the script directory
$scriptDir = $PSScriptRoot
$repoRoot = Split-Path -Parent $scriptDir

# Determine which build script to use based on OS
if ($IsWindows -or $env:OS -eq "Windows_NT") {
& "$repoRoot/build.cmd"
} else {
& "$repoRoot/build.sh"
}

# Find all AppHost projects in the playground directory
$playgroundDir = Join-Path -Path $repoRoot -ChildPath "playground"

if (Test-Path $playgroundDir) {
Get-ChildItem -Path $playgroundDir -Filter "*AppHost.csproj" -Recurse | ForEach-Object {
# Check if the project has a launchSettings.json file with a generate-manifest profile
$projectDir = Split-Path -Parent $_.FullName
$launchSettingsPath = Join-Path -Path $projectDir -ChildPath "Properties" -AdditionalChildPath "launchSettings.json"
Copy link
Preview

Copilot AI May 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Join-Path cmdlet does not support an '-AdditionalChildPath' parameter. Consider using nested Join-Path calls or joining 'Properties/launchSettings.json' as a single string to avoid runtime errors.

Suggested change
$launchSettingsPath = Join-Path -Path $projectDir -ChildPath "Properties" -AdditionalChildPath "launchSettings.json"
$launchSettingsPath = Join-Path -Path (Join-Path -Path $projectDir -ChildPath "Properties") -ChildPath "launchSettings.json"

Copilot uses AI. Check for mistakes.

Copy link
Member

@davidfowl davidfowl May 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot can you run the script to see if it works?

The Join-Path cmdlet does not support an '-AdditionalChildPath' parameter. Consider using nested Join-Path calls or joining 'Properties/launchSettings.json' as a single string to avoid runtime errors.

$hasManifestProfile = $false

if (Test-Path $launchSettingsPath) {
try {
$launchSettings = Get-Content -Raw -Path $launchSettingsPath | ConvertFrom-Json
if ($launchSettings.profiles -and $launchSettings.profiles.'generate-manifest') {
$hasManifestProfile = $true
}
}
catch {
Write-Warning "Failed to read or parse launch settings for $_"
}
}

if ($hasManifestProfile) {
Write-Host "Generating Manifest for: $_"
dotnet run --no-build --project $_.FullName --launch-profile generate-manifest
}
else {
Write-Warning "Skipping $_ - no generate-manifest profile found"
}
}
}
else {
Write-Error "Playground directory not found at: $playgroundDir"
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,6 @@ resource aspireDashboard 'Microsoft.App/managedEnvironments/dotNetComponents@202
parent: infra
}

resource infra_Contributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(infra.id, userPrincipalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c'))
properties: {
principalId: userPrincipalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
}
scope: infra
}

resource infra_storageVolume 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: take('infrastoragevolume${uniqueString(resourceGroup().id)}', 24)
kind: 'StorageV2'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@
"type": "value.v0",
"connectionString": "{storage.outputs.blobEndpoint}"
},
"myblobcontainer": {
"type": "value.v0",
"connectionString": "Endpoint={storage.outputs.blobEndpoint};ContainerName=myblobcontainer"
},
"eventhubs": {
"type": "azure.bicep.v0",
"connectionString": "{eventhubs.outputs.eventHubsEndpoint}",
Expand Down Expand Up @@ -76,6 +80,7 @@
"Aspire__Azure__Messaging__EventHubs__EventProcessorClient__myhub__EventHubName": "myhub",
"Aspire__Azure__Messaging__EventHubs__PartitionReceiver__myhub__EventHubName": "myhub",
"Aspire__Azure__Messaging__EventHubs__EventHubBufferedProducerClient__myhub__EventHubName": "myhub",
"ConnectionStrings__myblobcontainer": "{myblobcontainer.connectionString}",
"messaging__fullyQualifiedNamespace": "{messaging.outputs.serviceBusEndpoint}",
"Aspire__Azure__Messaging__ServiceBus__messaging__FullyQualifiedNamespace": "{messaging.outputs.serviceBusEndpoint}",
"cosmosdb__accountEndpoint": "{cosmosdb.outputs.connectionString}",
Expand Down Expand Up @@ -179,4 +184,4 @@
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
parent: storage
}

resource myblobcontainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2024-01-01' = {
name: 'myblobcontainer'
parent: blobs
}

output blobEndpoint string = storage.properties.primaryEndpoints.blob

output queueEndpoint string = storage.properties.primaryEndpoints.queue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,30 @@
"type": "value.v0",
"connectionString": "{storage.outputs.blobEndpoint}"
},
"mycontainer1": {
"type": "value.v0",
"connectionString": "Endpoint={storage.outputs.blobEndpoint};ContainerName=test-container-1"
},
"mycontainer2": {
"type": "value.v0",
"connectionString": "Endpoint={storage.outputs.blobEndpoint};ContainerName=test-container-2"
},
"queues": {
"type": "value.v0",
"connectionString": "{storage.outputs.queueEndpoint}"
},
"storage2": {
"type": "azure.bicep.v0",
"path": "storage2.module.bicep"
},
"blobs2": {
"type": "value.v0",
"connectionString": "{storage2.outputs.blobEndpoint}"
},
"foocontainer": {
"type": "value.v0",
"connectionString": "Endpoint={storage2.outputs.blobEndpoint};ContainerName=foo-container"
},
"api": {
"type": "project.v0",
"path": "../AzureStorageEndToEnd.ApiService/AzureStorageEndToEnd.ApiService.csproj",
Expand All @@ -23,6 +43,7 @@
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{api.bindings.http.targetPort}",
"ConnectionStrings__blobs": "{blobs.connectionString}",
"ConnectionStrings__foocontainer": "{foocontainer.connectionString}",
"ConnectionStrings__queues": "{queues.connectionString}"
},
"bindings": {
Expand All @@ -48,6 +69,15 @@
"principalType": "",
"principalId": ""
}
},
"storage2-roles": {
"type": "azure.bicep.v0",
"path": "storage2-roles.module.bicep",
"params": {
"storage2_outputs_name": "{storage2.outputs.name}",
"principalType": "",
"principalId": ""
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
parent: storage
}

resource mycontainer1 'Microsoft.Storage/storageAccounts/blobServices/containers@2024-01-01' = {
name: 'test-container-1'
parent: blobs
}

resource mycontainer2 'Microsoft.Storage/storageAccounts/blobServices/containers@2024-01-01' = {
name: 'test-container-2'
parent: blobs
}

output blobEndpoint string = storage.properties.primaryEndpoints.blob

output queueEndpoint string = storage.properties.primaryEndpoints.queue
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location

param storage2_outputs_name string

param principalType string

param principalId string

resource storage2 'Microsoft.Storage/storageAccounts@2024-01-01' existing = {
name: storage2_outputs_name
}

resource storage2_StorageBlobDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage2.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ba92f5b4-2d11-453d-a403-e96b0029c9fe')
principalType: principalType
}
scope: storage2
}

resource storage2_StorageTableDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage2.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0a9a7e1f-b9d0-4cc4-a60d-0319b160aaa3')
principalType: principalType
}
scope: storage2
}

resource storage2_StorageQueueDataContributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage2.id, principalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88'))
properties: {
principalId: principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '974c5e8b-45b9-4653-ba55-5f855dd0fb88')
principalType: principalType
}
scope: storage2
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location

resource storage2 'Microsoft.Storage/storageAccounts@2024-01-01' = {
name: take('storage2${uniqueString(resourceGroup().id)}', 24)
kind: 'StorageV2'
location: location
sku: {
name: 'Standard_GRS'
}
properties: {
accessTier: 'Hot'
allowSharedKeyAccess: false
minimumTlsVersion: 'TLS1_2'
networkAcls: {
defaultAction: 'Allow'
}
}
tags: {
'aspire-resource-name': 'storage2'
}
}

resource blobs 'Microsoft.Storage/storageAccounts/blobServices@2024-01-01' = {
name: 'default'
parent: storage2
}

resource foocontainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2024-01-01' = {
name: 'foo-container'
parent: blobs
}

output blobEndpoint string = storage2.properties.primaryEndpoints.blob

output queueEndpoint string = storage2.properties.primaryEndpoints.queue

output tableEndpoint string = storage2.properties.primaryEndpoints.table

output name string = storage2.name
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
{
"$schema": "https://json.schemastore.org/aspire-8.0.json",
"resources": {
"talking-clock-tick-hand": {
"error": "This resource does not support generation in the manifest."
},
"talking-clock-tock-hand": {
"error": "This resource does not support generation in the manifest."
},
"p0": {
"type": "parameter.v0",
"value": "{p0.inputs.value}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"oracle": {
"type": "container.v0",
"connectionString": "user id=system;password={oracle-password.value};data source={oracle.bindings.tcp.host}:{oracle.bindings.tcp.port}",
"image": "container-registry.oracle.com/database/free:23.6.0.0",
"image": "container-registry.oracle.com/database/free:23.7.0.0",
"env": {
"ORACLE_PWD": "{oracle-password.value}"
},
Expand Down
2 changes: 1 addition & 1 deletion playground/Qdrant/Qdrant.AppHost/aspire-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"qdrant": {
"type": "container.v0",
"connectionString": "Endpoint={qdrant.bindings.grpc.url};Key={qdrant-Key.value}",
"image": "docker.io/qdrant/qdrant:v1.13.4",
"image": "docker.io/qdrant/qdrant:v1.13.6",
"volumes": [
{
"name": "qdrant-data",
Expand Down
2 changes: 1 addition & 1 deletion playground/Redis/Redis.AppHost/aspire-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"entrypoint": "/bin/sh",
"args": [
"-c",
"/app/GarnetServer --auth Password --password $GARNET_PASSWORD --checkpointdir /data/checkpoints --recover --aof --aof-commit-freq 60000"
"/app/GarnetServer --protected-mode no --auth Password --password $GARNET_PASSWORD --checkpointdir /data/checkpoints --recover --aof --aof-commit-freq 60000"
],
"volumes": [
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ resource script_sql1_db1 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
}
kind: 'AzurePowerShell'
properties: {
scriptContent: '\$sqlServerFqdn = "\$env:DBSERVER"\r\n\$sqlDatabaseName = "\$env:DBNAME"\r\n\$principalName = "\$env:PRINCIPALNAME"\r\n\$id = "\$env:ID"\r\n\r\n# Install SqlServer module\r\nInstall-Module -Name SqlServer -Force -AllowClobber -Scope CurrentUser\r\nImport-Module SqlServer\r\n\r\n\$sqlCmd = @"\r\nDECLARE @name SYSNAME = \'\$principalName\';\r\nDECLARE @id UNIQUEIDENTIFIER = \'\$id\';\r\n\r\n-- Convert the guid to the right type\r\nDECLARE @castId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @id), 1);\r\n\r\n-- Construct command: CREATE USER [@name] WITH SID = @castId, TYPE = E;\r\nDECLARE @cmd NVARCHAR(MAX) = N\'CREATE USER [\' + @name + \'] WITH SID = \' + @castId + \', TYPE = E;\'\r\nEXEC (@cmd);\r\n\r\n-- Assign roles to the new user\r\nDECLARE @role1 NVARCHAR(MAX) = N\'ALTER ROLE db_owner ADD MEMBER [\' + @name + \']\';\r\nEXEC (@role1);\r\n\r\n"@\r\n# Note: the string terminator must not have whitespace before it, therefore it is not indented.\r\n\r\nWrite-Host \$sqlCmd\r\n\r\n\$connectionString = "Server=tcp:\${sqlServerFqdn},1433;Initial Catalog=\${sqlDatabaseName};Authentication=Active Directory Default;"\r\n\r\nInvoke-Sqlcmd -ConnectionString \$connectionString -Query \$sqlCmd'
scriptContent: '\$sqlServerFqdn = "\$env:DBSERVER"\n\$sqlDatabaseName = "\$env:DBNAME"\n\$principalName = "\$env:PRINCIPALNAME"\n\$id = "\$env:ID"\n\n# Install SqlServer module\nInstall-Module -Name SqlServer -Force -AllowClobber -Scope CurrentUser\nImport-Module SqlServer\n\n\$sqlCmd = @"\nDECLARE @name SYSNAME = \'\$principalName\';\nDECLARE @id UNIQUEIDENTIFIER = \'\$id\';\n\n-- Convert the guid to the right type\nDECLARE @castId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @id), 1);\n\n-- Construct command: CREATE USER [@name] WITH SID = @castId, TYPE = E;\nDECLARE @cmd NVARCHAR(MAX) = N\'CREATE USER [\' + @name + \'] WITH SID = \' + @castId + \', TYPE = E;\'\nEXEC (@cmd);\n\n-- Assign roles to the new user\nDECLARE @role1 NVARCHAR(MAX) = N\'ALTER ROLE db_owner ADD MEMBER [\' + @name + \']\';\nEXEC (@role1);\n\n"@\n# Note: the string terminator must not have whitespace before it, therefore it is not indented.\n\nWrite-Host \$sqlCmd\n\n\$connectionString = "Server=tcp:\${sqlServerFqdn},1433;Initial Catalog=\${sqlDatabaseName};Authentication=Active Directory Default;"\n\nInvoke-Sqlcmd -ConnectionString \$connectionString -Query \$sqlCmd'
azPowerShellVersion: '10.0'
retentionInterval: 'PT1H'
environmentVariables: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ resource script_sql2_db2 'Microsoft.Resources/deploymentScripts@2023-08-01' = {
}
kind: 'AzurePowerShell'
properties: {
scriptContent: '\$sqlServerFqdn = "\$env:DBSERVER"\r\n\$sqlDatabaseName = "\$env:DBNAME"\r\n\$principalName = "\$env:PRINCIPALNAME"\r\n\$id = "\$env:ID"\r\n\r\n# Install SqlServer module\r\nInstall-Module -Name SqlServer -Force -AllowClobber -Scope CurrentUser\r\nImport-Module SqlServer\r\n\r\n\$sqlCmd = @"\r\nDECLARE @name SYSNAME = \'\$principalName\';\r\nDECLARE @id UNIQUEIDENTIFIER = \'\$id\';\r\n\r\n-- Convert the guid to the right type\r\nDECLARE @castId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @id), 1);\r\n\r\n-- Construct command: CREATE USER [@name] WITH SID = @castId, TYPE = E;\r\nDECLARE @cmd NVARCHAR(MAX) = N\'CREATE USER [\' + @name + \'] WITH SID = \' + @castId + \', TYPE = E;\'\r\nEXEC (@cmd);\r\n\r\n-- Assign roles to the new user\r\nDECLARE @role1 NVARCHAR(MAX) = N\'ALTER ROLE db_owner ADD MEMBER [\' + @name + \']\';\r\nEXEC (@role1);\r\n\r\n"@\r\n# Note: the string terminator must not have whitespace before it, therefore it is not indented.\r\n\r\nWrite-Host \$sqlCmd\r\n\r\n\$connectionString = "Server=tcp:\${sqlServerFqdn},1433;Initial Catalog=\${sqlDatabaseName};Authentication=Active Directory Default;"\r\n\r\nInvoke-Sqlcmd -ConnectionString \$connectionString -Query \$sqlCmd'
scriptContent: '\$sqlServerFqdn = "\$env:DBSERVER"\n\$sqlDatabaseName = "\$env:DBNAME"\n\$principalName = "\$env:PRINCIPALNAME"\n\$id = "\$env:ID"\n\n# Install SqlServer module\nInstall-Module -Name SqlServer -Force -AllowClobber -Scope CurrentUser\nImport-Module SqlServer\n\n\$sqlCmd = @"\nDECLARE @name SYSNAME = \'\$principalName\';\nDECLARE @id UNIQUEIDENTIFIER = \'\$id\';\n\n-- Convert the guid to the right type\nDECLARE @castId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @id), 1);\n\n-- Construct command: CREATE USER [@name] WITH SID = @castId, TYPE = E;\nDECLARE @cmd NVARCHAR(MAX) = N\'CREATE USER [\' + @name + \'] WITH SID = \' + @castId + \', TYPE = E;\'\nEXEC (@cmd);\n\n-- Assign roles to the new user\nDECLARE @role1 NVARCHAR(MAX) = N\'ALTER ROLE db_owner ADD MEMBER [\' + @name + \']\';\nEXEC (@role1);\n\n"@\n# Note: the string terminator must not have whitespace before it, therefore it is not indented.\n\nWrite-Host \$sqlCmd\n\n\$connectionString = "Server=tcp:\${sqlServerFqdn},1433;Initial Catalog=\${sqlDatabaseName};Authentication=Active Directory Default;"\n\nInvoke-Sqlcmd -ConnectionString \$connectionString -Query \$sqlCmd'
azPowerShellVersion: '10.0'
retentionInterval: 'PT1H'
environmentVariables: [
Expand Down
15 changes: 14 additions & 1 deletion playground/Stress/Stress.AppHost/aspire-manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
{
"$schema": "https://json.schemastore.org/aspire-8.0.json",
"resources": {
"testParameterResource": {
"type": "parameter.v0",
"value": "{testParameterResource.inputs.value}",
"inputs": {
"value": {
"type": "string",
"secret": true
}
}
},
"stress-apiservice": {
"type": "project.v0",
"path": "../Stress.ApiService/Stress.ApiService.csproj",
Expand All @@ -10,7 +20,10 @@
"OTEL_DOTNET_EXPERIMENTAL_OTLP_RETRY": "in_memory",
"ASPNETCORE_FORWARDEDHEADERS_ENABLED": "true",
"HTTP_PORTS": "{stress-apiservice.bindings.http.targetPort};{stress-apiservice.bindings.http-5181.targetPort};{stress-apiservice.bindings.http-5182.targetPort};{stress-apiservice.bindings.http-5183.targetPort};{stress-apiservice.bindings.http-5184.targetPort};{stress-apiservice.bindings.http-5185.targetPort};{stress-apiservice.bindings.http-5186.targetPort};{stress-apiservice.bindings.http-5187.targetPort};{stress-apiservice.bindings.http-5188.targetPort};{stress-apiservice.bindings.http-5189.targetPort};{stress-apiservice.bindings.http-5190.targetPort};{stress-apiservice.bindings.http-5191.targetPort};{stress-apiservice.bindings.http-5192.targetPort};{stress-apiservice.bindings.http-5193.targetPort};{stress-apiservice.bindings.http-5194.targetPort};{stress-apiservice.bindings.http-5195.targetPort};{stress-apiservice.bindings.http-5196.targetPort};{stress-apiservice.bindings.http-5197.targetPort};{stress-apiservice.bindings.http-5198.targetPort};{stress-apiservice.bindings.http-5199.targetPort};{stress-apiservice.bindings.http-5200.targetPort};{stress-apiservice.bindings.http-5201.targetPort};{stress-apiservice.bindings.http-5202.targetPort};{stress-apiservice.bindings.http-5203.targetPort};{stress-apiservice.bindings.http-5204.targetPort};{stress-apiservice.bindings.http-5205.targetPort};{stress-apiservice.bindings.http-5206.targetPort};{stress-apiservice.bindings.http-5207.targetPort};{stress-apiservice.bindings.http-5208.targetPort};{stress-apiservice.bindings.http-5209.targetPort};{stress-apiservice.bindings.http-5210.targetPort}",
"OTEL_DOTNET_EXPERIMENTAL_METRICS_EMIT_OVERFLOW_ATTRIBUTE": "true"
"OTEL_DOTNET_EXPERIMENTAL_METRICS_EMIT_OVERFLOW_ATTRIBUTE": "true",
"HOST": "{stress-apiservice.bindings.http.host}",
"PORT": "{stress-apiservice.bindings.http.port}",
"URL": "{stress-apiservice.bindings.http.url}"
},
"bindings": {
"http": {
Expand Down
Loading