Skip to content

Complete Azure provisioning SDK integration coverage - #20131

Merged
Sébastien Ros (sebastienros) merged 12 commits into
mainfrom
sebros/missing-azure-provisioning-proxies
Sep 22, 2026
Merged

Sébastien Ros (sebastienros) merged 12 commits into
mainfrom
sebros/missing-azure-provisioning-proxies

Conversation

@sebastienros

@sebastienros Sébastien Ros (sebastienros) commented Sep 15, 2026 •

Copy link
Copy Markdown
Contributor

Description

Add 12 opt-in Azure Provisioning SDK integrations for polyglot AppHosts, extending the bounded, experimental proxy model introduced by #19675. That parent has merged; this PR targets main.

Changes

  • Add proxies for AppConfiguration, AppContainers, AppService, Cdn, ContainerService, Kusto, Network, PrivateDns, PostgreSql, Redis, RedisEnterprise, and SignalR, with project/packaging registration and package documentation.
  • Select no-argument lookup roots only when SDK and hosting callback Bicep identifiers match. Container Apps environments support root lookup; apps and jobs use identifier-based lookup. App Service plans (<environment>_asplan) and sites (webapp) also use identifier-based lookup.
  • Reuse shared SDK mappings rather than introducing duplicate or empty wrappers. Network/PrivateDns and Redis/RedisEnterprise remain separate SDK opt-ins.
  • Fix generator compatibility for inherited AddTo, nullable-oblivious optional null parameters, and complex value-type collection elements such as AzureLocation.
  • Marshal union RPC results using the matching declared member, preserving Bicep handles and rejecting unmatched values.
  • Allocate distinct Java enum names after normalization while retaining original wire values (AAD versus Aad).
  • Support IP address lists using IPv4/IPv6 strings or Bicep handles. Invalid strings fail explicitly; getters preserve literal/expression/reference/security metadata. SDK read-only output restrictions still apply.
  • Exercise actual configuration APIs in TypeScript, Python, Go, and Java fixtures, using conventional empty-string package references. No new generated-code-shape unit tests, feeds, package versions, or CI jobs are introduced.
  • Correct README samples against generated SDK signatures. Keep permanent documentation product-oriented, without completion counts, new/existing labels, or stacked-PR history.

Hosting-to-provisioning inventory

Hosting suffixes mean Aspire.Hosting.Azure.<suffix>. SDK/proxy suffixes mean Azure.Provisioning.<suffix> / Aspire.Hosting.Azure.Provisioning.<suffix>.

Hosting integration SDK/proxy mapping and rationale
Aspire.Hosting.Azure Base Azure.Provisioning, shared runtime, and KeyVault support; not a separate service SDK.
AppConfiguration AppConfiguration: AppConfigurationStore.
AppContainers AppContainers: environment root plus identifier-based app/job lookup. Supporting ContainerRegistry, OperationalInsights, KeyVault, Storage.
AppService AppService: identifier-based plan/site lookup. Supporting ContainerRegistry, ApplicationInsights, OperationalInsights.
ApplicationInsights ApplicationInsights: ApplicationInsightsComponent; OperationalInsights workspace support.
CognitiveServices CognitiveServices: CognitiveServicesAccount, including Azure OpenAI models.
ConnectorNamespace Base provisioning with internal custom ConnectorGateway models for Microsoft.Web/connectorGateways and children. No standalone service SDK or SDK proxy; internal models are not projected.
ContainerRegistry ContainerRegistry: ContainerRegistryService.
CosmosDB CosmosDB: CosmosDBAccount; shared KeyVault support.
EventHubs EventHubs: EventHubsNamespace; Storage for storage-backed scenarios.
FrontDoor Cdn: CdnProfile, endpoints, origins, groups, and routes; not a separate FrontDoor SDK.
Functions Shared Storage and deployment-target AppContainers/AppService proxies; no Functions SDK dependency.
KeyVault KeyVault: KeyVaultService.
Kubernetes ContainerService: ContainerServiceManagedCluster; shared Network, PrivateDns, ContainerRegistry, OperationalInsights.
Kusto Kusto: KustoCluster; identifier-addressable database children.
Network Network: VirtualNetwork, NetworkSecurityGroup, NatGateway, PublicIPAddress, PrivateEndpoint, NetworkSecurityPerimeter; PrivateDns: PrivateDnsZone. Subnets and DNS VNet links are children.
OperationalInsights OperationalInsights: OperationalInsightsWorkspace.
PostgreSQL PostgreSql: PostgreSqlFlexibleServer; SDK spelling differs from hosting.
Redis Redis: RedisResource for Azure Cache for Redis; RedisEnterprise: RedisEnterpriseCluster for Azure Managed Redis; KeyVault for access-key support.
Sandboxes Shared ContainerRegistry and base provisioning; internal custom SandboxGroup/endpoint models are not a standalone service SDK and are not projected.
Search Search: SearchService.
ServiceBus ServiceBus: ServiceBusNamespace.
SignalR SignalR: SignalRService.
Sql Sql: SqlServer; shared Storage, Network, PrivateDns where needed.
Storage Storage: StorageAccount, including blob, queue, table, file models.
WebPubSub WebPubSub: WebPubSubService.

The shared Aspire.Hosting.Azure.Provisioning runtime and private Aspire.Hosting.Azure.Provisioning.Generators analyzer complete the infrastructure portion of the inventory. The SDK proxies above account for the SDK-specific projects; the README links each project to its hosting dependency and lookup roots.

Explicit exclusions

The projection is bounded, not a promise of complete Azure SDK coverage.

Proxy Excluded members Reason
ContainerService CustomCATrustCertificates BicepList<BinaryData> lacks a type-safe ATS representation.
Network AdditionalProperties Open-ended BicepDictionary<BinaryData>.
Redis AdditionalProperties Open-ended BicepDictionary<BinaryData>.

AppContainers OutboundIPAddressList and AppService IPAddresses, ExternalInboundIPAddresses, InternalInboundIPAddresses, LinuxOutboundIPAddresses, and WindowsOutboundIPAddresses are exported through IP address collection proxies. Service output lists retain SDK read-only restrictions.

Usage

aspire add Aspire.Hosting.Azure.Provisioning.AppConfiguration
const configuration = await builder.addAzureAppConfiguration("configuration");
await configuration.configureInfrastructure(async infrastructure => {
    const store = await infrastructure.getAppConfigurationStore();
    const tags = await store.tags.get();
    await tags.set("environment", "production");
});

Existing C# configuration is unchanged. These packages remain experimental (ASPIREAZUREPROVISIONING001) and do not change cloud authentication, resource lifecycles, or deployment defaults.

Validation

  • Initial integration validation: all 24 SDK proxies built, all 12 added packages packed, 242 focused RemoteHost tests passed, and the Java code-generation regression passed.
  • Initial polyglot validation: 40 updated fixture SDKs regenerated and compiled, 16 bounded configuration publishes passed, and eight literal/expression union RPC cases passed across four languages.
  • IP follow-up on the main-based branch: all 45 provisioning generator/runtime tests passed; all eight AppService/AppContainers fixtures restored and compiled/type-checked; all eight bounded publishes produced manifests and callback-completion markers. Coverage includes IPv4/IPv6, malformed inputs, literal/expression handle roundtrips, list mutations, and read-only output getters.
  • Review fixes: corrected mapping projects build without warnings/errors, all 45 provisioning tests pass, and all 13 exact TypeScript README snippets (the 12 added packages plus shared runtime) type-check against generated SDKs. The inventory was checked against the actual Azure projects, including ConnectorNamespace.

The unmodified full fixture runtime suite is not claimed passing: fixtures contain pre-existing duplicate resource names, missing sample projects, and Go option-merging failures. Bounded smoke AppHosts isolate provisioning callbacks. Python smoke code normalizes the existing combined-argv issue with shlex.split only in scratch; no production workaround is included. No Azure resources were deployed.

Fixes # (issue)

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No

@sebastienros
Sébastien Ros (sebastienros) added this pull request to stack #20132 September 15, 2026 00:21
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 20131

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 20131"

@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@sebastienros
Sébastien Ros (sebastienros) force-pushed the sebros/missing-azure-provisioning-proxies branch from 7477b17 to 6f084aa Compare September 15, 2026 16:06
@github-actions

This comment has been minimized.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

The package documentation contains an invalid Redis enum example and an incomplete, branch-relative integration inventory.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Adds the remaining opt-in Azure Provisioning SDK proxies for polyglot AppHosts.

Changes:

  • Adds 12 experimental Azure provisioning proxy packages.
  • Fixes proxy generation, union marshalling, and Java enum-name collisions.
  • Extends TypeScript, Python, Java, and Go validation fixtures and documentation.
File summaries
File Description
Aspire.slnx Registers the new proxy projects.
src/Aspire.Hosting.RemoteHost/Ats/AtsMarshaller.cs Marshals values according to declared union members.
src/Aspire.Hosting.CodeGeneration.Java/AtsJavaCodeGenerator.cs Disambiguates normalized Java enum constants.
src/Aspire.Hosting.Azure.Provisioning.Generators/AspireProvisioningProxyGenerator.cs Handles inherited methods, nullable constructors, and complex value collections.
src/Aspire.Hosting.Azure.Provisioning/README.md Adds the provisioning integration inventory.
tests/Aspire.Hosting.RemoteHost.Tests/AtsMarshallerTests.cs Tests union-result marshalling.
tests/Aspire.Hosting.Azure.Provisioning.Tests/AspireProvisioningProxyGeneratorTests.cs Updates provisioning SDK test doubles.
src/Aspire.Hosting.Azure.Provisioning.AppConfiguration/README.md Documents the App Configuration proxy.
src/Aspire.Hosting.Azure.Provisioning.AppConfiguration/AtsTypeMappings.cs Selects the App Configuration root.
src/Aspire.Hosting.Azure.Provisioning.AppConfiguration/Aspire.Hosting.Azure.Provisioning.AppConfiguration.csproj Defines the App Configuration package.
src/Aspire.Hosting.Azure.Provisioning.AppContainers/README.md Documents the Container Apps proxy.
src/Aspire.Hosting.Azure.Provisioning.AppContainers/AtsTypeMappings.cs Selects Container Apps roots and exclusions.
src/Aspire.Hosting.Azure.Provisioning.AppContainers/Aspire.Hosting.Azure.Provisioning.AppContainers.csproj Defines the Container Apps package.
src/Aspire.Hosting.Azure.Provisioning.AppService/README.md Documents the App Service proxy.
src/Aspire.Hosting.Azure.Provisioning.AppService/AtsTypeMappings.cs Selects App Service roots and exclusions.
src/Aspire.Hosting.Azure.Provisioning.AppService/Aspire.Hosting.Azure.Provisioning.AppService.csproj Defines the App Service package.
src/Aspire.Hosting.Azure.Provisioning.Cdn/README.md Documents the Front Door/CDN proxy.
src/Aspire.Hosting.Azure.Provisioning.Cdn/AtsTypeMappings.cs Selects the CDN profile root.
src/Aspire.Hosting.Azure.Provisioning.Cdn/Aspire.Hosting.Azure.Provisioning.Cdn.csproj Defines the CDN package.
src/Aspire.Hosting.Azure.Provisioning.ContainerService/README.md Documents the AKS proxy.
src/Aspire.Hosting.Azure.Provisioning.ContainerService/AtsTypeMappings.cs Selects the AKS root and exclusion.
src/Aspire.Hosting.Azure.Provisioning.ContainerService/Aspire.Hosting.Azure.Provisioning.ContainerService.csproj Defines the Container Service package.
src/Aspire.Hosting.Azure.Provisioning.Kusto/README.md Documents the Kusto proxy.
src/Aspire.Hosting.Azure.Provisioning.Kusto/AtsTypeMappings.cs Selects the Kusto root.
src/Aspire.Hosting.Azure.Provisioning.Kusto/Aspire.Hosting.Azure.Provisioning.Kusto.csproj Defines the Kusto package.
src/Aspire.Hosting.Azure.Provisioning.Network/README.md Documents the Network proxy.
src/Aspire.Hosting.Azure.Provisioning.Network/AtsTypeMappings.cs Selects Network roots and exclusions.
src/Aspire.Hosting.Azure.Provisioning.Network/Aspire.Hosting.Azure.Provisioning.Network.csproj Defines the Network package.
src/Aspire.Hosting.Azure.Provisioning.PostgreSql/README.md Documents the PostgreSQL proxy.
src/Aspire.Hosting.Azure.Provisioning.PostgreSql/AtsTypeMappings.cs Selects the PostgreSQL root.
src/Aspire.Hosting.Azure.Provisioning.PostgreSql/Aspire.Hosting.Azure.Provisioning.PostgreSql.csproj Defines the PostgreSQL package.
src/Aspire.Hosting.Azure.Provisioning.PrivateDns/README.md Documents the Private DNS proxy.
src/Aspire.Hosting.Azure.Provisioning.PrivateDns/AtsTypeMappings.cs Selects the Private DNS root.
src/Aspire.Hosting.Azure.Provisioning.PrivateDns/Aspire.Hosting.Azure.Provisioning.PrivateDns.csproj Defines the Private DNS package.
src/Aspire.Hosting.Azure.Provisioning.Redis/README.md Documents the legacy Redis proxy.
src/Aspire.Hosting.Azure.Provisioning.Redis/AtsTypeMappings.cs Selects the Redis root and exclusion.
src/Aspire.Hosting.Azure.Provisioning.Redis/Aspire.Hosting.Azure.Provisioning.Redis.csproj Defines the Redis package.
src/Aspire.Hosting.Azure.Provisioning.RedisEnterprise/README.md Documents the Managed Redis proxy.
src/Aspire.Hosting.Azure.Provisioning.RedisEnterprise/AtsTypeMappings.cs Selects the Redis Enterprise root.
src/Aspire.Hosting.Azure.Provisioning.RedisEnterprise/Aspire.Hosting.Azure.Provisioning.RedisEnterprise.csproj Defines the Redis Enterprise package.
src/Aspire.Hosting.Azure.Provisioning.SignalR/README.md Documents the SignalR proxy.
src/Aspire.Hosting.Azure.Provisioning.SignalR/AtsTypeMappings.cs Selects the SignalR root.
src/Aspire.Hosting.Azure.Provisioning.SignalR/Aspire.Hosting.Azure.Provisioning.SignalR.csproj Defines the SignalR package.
tests/PolyglotAppHosts/Aspire.Hosting/TypeScript/aspire.config.json Adds the Container Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting/TypeScript/apphost.mts Exercises AKS provisioning from TypeScript.
tests/PolyglotAppHosts/Aspire.Hosting/Python/aspire.config.json Adds the Container Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting/Python/apphost.py Exercises AKS provisioning from Python.
tests/PolyglotAppHosts/Aspire.Hosting/Java/aspire.config.json Adds the Container Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting/Java/AppHost.java Exercises AKS provisioning from Java.
tests/PolyglotAppHosts/Aspire.Hosting/Go/aspire.config.json Adds Kubernetes and Container Service packages.
tests/PolyglotAppHosts/Aspire.Hosting/Go/apphost.go Exercises AKS provisioning from Go.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/TypeScript/aspire.config.json Adds Front Door and CDN packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/TypeScript/apphost.mts Exercises CDN provisioning from TypeScript.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Python/aspire.config.json Adds Front Door and CDN packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Python/apphost.py Exercises CDN provisioning from Python.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Java/aspire.config.json Adds Front Door and CDN packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Java/AppHost.java Exercises CDN provisioning from Java.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Go/aspire.config.json Adds Front Door and CDN packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure/Go/apphost.go Exercises CDN provisioning from Go.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/TypeScript/aspire.config.json Adds the SignalR proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/TypeScript/apphost.mts Exercises SignalR provisioning from TypeScript.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Python/aspire.config.json Adds the SignalR proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Python/apphost.py Exercises SignalR provisioning from Python.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Java/aspire.config.json Adds the SignalR proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Java/AppHost.java Exercises SignalR provisioning from Java.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Go/aspire.config.json Adds the SignalR proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.SignalR/Go/apphost.go Exercises SignalR provisioning from Go.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/TypeScript/aspire.config.json Adds both Redis proxy dependencies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/TypeScript/apphost.mts Exercises managed and legacy Redis proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Python/aspire.config.json Adds both Redis proxy dependencies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Python/apphost.py Exercises managed and legacy Redis proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Java/aspire.config.json Adds both Redis proxy dependencies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Java/AppHost.java Exercises managed and legacy Redis proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Go/aspire.config.json Adds both Redis proxy dependencies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Redis/Go/apphost.go Exercises managed and legacy Redis proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/TypeScript/aspire.config.json Adds the PostgreSQL proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/TypeScript/apphost.mts Exercises PostgreSQL provisioning from TypeScript.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Python/aspire.config.json Adds the PostgreSQL proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Python/apphost.py Exercises PostgreSQL provisioning from Python.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Java/aspire.config.json Adds the PostgreSQL proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Java/AppHost.java Exercises PostgreSQL provisioning from Java.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Go/aspire.config.json Adds the PostgreSQL proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.PostgreSQL/Go/apphost.go Exercises PostgreSQL provisioning from Go.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/TypeScript/aspire.config.json Adds Network, Private DNS, and Storage packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/TypeScript/apphost.mts Exercises Network and Private DNS proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Python/aspire.config.json Adds Network, Private DNS, and Storage packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Python/apphost.py Exercises Network and Private DNS proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Java/aspire.config.json Adds Network, Private DNS, and Storage packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Java/AppHost.java Exercises Network proxies and enum collisions.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Go/aspire.config.json Adds Network, Private DNS, and Storage packages.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Network/Go/apphost.go Exercises Network and Private DNS proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/TypeScript/aspire.config.json Adds the Kusto proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/TypeScript/apphost.mts Exercises Kusto resources and inherited AddTo.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Python/aspire.config.json Adds the Kusto proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Python/apphost.py Exercises Kusto resources and inherited AddTo.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Java/aspire.config.json Adds the Kusto proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Java/AppHost.java Exercises Kusto resources and inherited AddTo.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Go/aspire.config.json Adds the Kusto proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.Kusto/Go/apphost.go Exercises Kusto resources and inherited AddTo.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/TypeScript/aspire.config.json Adds the App Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/TypeScript/apphost.mts Exercises plan, site, and location proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Python/aspire.config.json Adds the App Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Python/apphost.py Exercises plan, site, and location proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Java/aspire.config.json Adds the App Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Java/AppHost.java Exercises plan, site, and location proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Go/aspire.config.json Adds the App Service proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppService/Go/apphost.go Exercises plan, site, and location proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/TypeScript/aspire.config.json Adds the Container Apps proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/TypeScript/apphost.mts Exercises environment, app, and job proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Python/aspire.config.json Adds the Container Apps proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Python/apphost.py Exercises environment, app, and job proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Java/aspire.config.json Adds the Container Apps proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Java/AppHost.java Exercises environment, app, and job proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Go/aspire.config.json Adds the Container Apps proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppContainers/Go/apphost.go Exercises environment, app, and job proxies.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/TypeScript/aspire.config.json Adds the App Configuration proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/TypeScript/apphost.mts Exercises App Configuration provisioning.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Python/aspire.config.json Adds the App Configuration proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Python/apphost.py Exercises App Configuration provisioning.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Java/aspire.config.json Adds the App Configuration proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Java/AppHost.java Exercises App Configuration provisioning.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Go/aspire.config.json Adds the App Configuration proxy dependency.
tests/PolyglotAppHosts/Aspire.Hosting.Azure.AppConfiguration/Go/apphost.go Exercises App Configuration provisioning.
Review details
  • Files reviewed: 123/123 changed files
  • Comments generated: 3
  • Review effort level: Balanced

Comment thread src/Aspire.Hosting.Azure.Provisioning.Redis/README.md Outdated
Comment thread src/Aspire.Hosting.Azure.Provisioning/README.md Outdated
Comment thread src/Aspire.Hosting.Azure.Provisioning/README.md Outdated
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

App Service and Container Apps expose no-argument root getters whose lookup identifiers cannot match the generated resources.

Get a fresh assessment by requesting another Copilot review.

Review details
  • Files reviewed: 125/125 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment thread src/Aspire.Hosting.Azure.Provisioning.AppContainers/AtsTypeMappings.cs Outdated
Comment thread src/Aspire.Hosting.Azure.Provisioning.AppService/AtsTypeMappings.cs Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions

Copy link
Copy Markdown
Contributor

Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt.

@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions
github-actions Bot deployed to deployment-testing September 22, 2026 04:38 Active
@github-actions

Copy link
Copy Markdown
Contributor

🚀 Deployment tests starting on PR #20131...

This will deploy to real Azure infrastructure. Results will be posted here when complete.

View workflow run

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ CI Failure Analysis: Possible Flaky Test(s)

The CI build failed due to test failure(s) that appear unrelated to the PR changes. These may be flaky tests.

Suspected flaky test(s):

  • Infrastructure.Tests.Hex1bNativePublishingTests.NativeAssetsKeepTheirLayoutAndContents(rid: "win-arm64", singleFile: True) in job Tests / No-package tests (regular, Infrastructure.Tests, Infrastructure, Infrastructure, tests/Infrastruc... / Infrastructure (ubuntu-latest)
    • Error: System.Text.Json.JsonReaderException : 'M' is invalid after a single JSON value. Expected end of data. LineNumber: 164 | BytePositionInLine: 0.
    • Stack Trace (first frames):
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
   at System.Text.Json.Utf8JsonReader.ConsumeNextToken(Byte marker)
   at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
   at System.Text.Json.JsonDocument.Parse(ReadOnlySpan`1 utf8JsonSpan, JsonReaderOptions readerOptions, MetadataDb& database, StackRowStack& stack)
   at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 utf8Json, JsonReaderOptions readerOptions, Byte[] extraRentedArrayPoolBytes, PooledByteBufferWriter extraPooledByteBufferWriter, Boolean allowDuplicateProperties)
  • Why likely flaky: This test parses MSBuild-generated JSON item output which is intermittently truncated/corrupted mid-stream, causing a JsonReaderException unrelated to any PR code. This matches a previously identified recurring cause (hex1bnativepublishingtests-json-parse-error, issue [CI Failure] Flaky: Hex1bNativePublishingTests.NativeAssetsKeepTheirLayoutAndContents fails parsing truncated/corrupted MSBuild JSON item output #20272) seen with a different rid parameter.
  • Aspire Blazor browser debugger E2E hits a managed breakpoint for hosted-global in job Tests / Run VS Code extension E2E tests / VS Code extension E2E (Linux, browser-debugger)
    • Error: Failed to apply E2E control revision 1790097247080: Error: Timed out after 299622ms waiting for Blazor WASM root session for resource 'hosted-global'. Last error: .
    • Stack Trace (first frames):
Error: Failed to apply E2E control revision 1790097247080: Error: Timed out after 299622ms waiting for Blazor WASM root session for resource 'hosted-global'. Last error: <none>. State: {"debugSessions":[{"id":"e57b6881-8753-463f-a4b2-0cf4a96924da","type":"monovsdbg_wasm","name":"Wasm Managed Debugger"...}]}
  • Why likely flaky: Timeout waiting for the Blazor WASM root debug session, matching the known recurring VS Code extension E2E flaky pattern on Linux (vscode-extension-e2e-blazordebugger-timeout-linux, issue [CI Failure] Flaky: VS Code extension Blazor browser debugger E2E tests fail with websocket proxy launch failure and WASM root session timeouts on Linux #20184). Not related to PR changes, which only touch Azure provisioning proxies.
  • Aspire Blazor browser debugger E2E hits a managed breakpoint for hosted-per-page in job Tests / Run VS Code extension E2E tests / VS Code extension E2E (Linux, browser-debugger)
    • Error: Failed to apply E2E control revision 1790097247083: Error: Timed out after 299727ms waiting for Blazor WASM root session for resource 'hosted-per-page'. Last error: .
    • Stack Trace (first frames):
Error: Failed to apply E2E control revision 1790097247083: Error: Timed out after 299727ms waiting for Blazor WASM root session for resource 'hosted-per-page'. Last error: <none>. State: {"debugSessions":[{"id":"2ca89458-b4f1-470b-913e-dedc86f53793","type":"monovsdbg_wasm","name":"Wasm Managed Debugger"...}]}
  • Why likely flaky: Timeout waiting for the Blazor WASM root debug session, matching the known recurring VS Code extension E2E flaky pattern on Linux (vscode-extension-e2e-blazordebugger-timeout-linux, issue [CI Failure] Flaky: VS Code extension Blazor browser debugger E2E tests fail with websocket proxy launch failure and WASM root session timeouts on Linux #20184). Not related to PR changes.
  • Aspire Blazor browser debugger E2E hits a managed breakpoint for standalone in job Tests / Run VS Code extension E2E tests / VS Code extension E2E (Windows, browser-debugger)
    • Error: Failed to apply E2E control revision 1790097345455: Error: Timed out after 295198ms waiting for pwa-msedge child session for Blazor WASM root '781e45be-0148-4e1a-8c1b-6344165ed815'. Last error: .
    • Stack Trace (first frames):
Error: Failed to apply E2E control revision 1790097345455: Error: Timed out after 295198ms waiting for pwa-msedge child session for Blazor WASM root '781e45be-0148-4e1a-8c1b-6344165ed815'. Last error: <none>. State: {"debugSessions":[{"id":"620228cd-88d2-45e4-866c-5126c586757b","type":"monovsdbg_wasm","name":"Wasm Managed Debugger"...}]}

Suggested actions:

  • Re-run the failed CI jobs to confirm if the failure is intermittent
  • If the test continues to fail, consider quarantining it using /quarantine-test <test name> <issue URL>
  • Search existing issues to see if this test is already known to be flaky

You can re-run the failed jobs from the workflow run page.

@aspire-repo-bot

This comment has been minimized.

@sebastienros

Copy link
Copy Markdown
Contributor Author

Documentation has been drafted in microsoft/aspire.dev#1748, targeting release/13.6.

Updated the existing Azure customization guide with service-specific provisioning package/model mappings, separate SDK opt-ins, Container Apps and App Service lookup identifiers, IPv4/IPv6 and Bicep-handle collections, read-only output restrictions, and explicit projection exclusions. Existing foundational examples are retained.

Triggered signals: integration_readme_changed (12 package READMEs and shared inventory), new_hosting_integration_project and new_package_added (12 provisioning projects), target_framework_changed (DefaultTargetFramework in those new projects), polyglot_code_generator_changed (Java enum collision handling), and pr_body_has_user_facing_section (aspire add and customization usage). No changed runtime prerequisite or unsupported API is inferred from internal generator changes.

The draft's repository, base/head, state, changed file and label were verified; the shared outcome validator passed.

Note

Human review is required before merging.

This branch was successfully deployed

1 active deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants