Skip to content

Upgrade Aspire to 13.4.2, refresh all dependencies, and document ATS availability - #2

Merged
EmmittJ merged 5 commits into
mainfrom
copilot/evaluation-aspire-13-4-2
Jun 4, 2026
Merged

EmmittJ merged 5 commits into
mainfrom
copilot/evaluation-aspire-13-4-2

Conversation

Copilot AI commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Upgrades the Aspire stack to 13.4.2 (required for GA), brings every other dependency to its latest stable version, and corrects the README's now-inaccurate note about Aspire Type System (ATS) attributes.

Aspire 13.4.2

  • Bumped Aspire.AppHost.Sdk and all Aspire.* package versions (central + playground/AppHost projects) to 13.4.2.
  • Migrated the container-image push path off the removed IResourceContainerImageBuilder. The replacement IResourceContainerImageManager.PushImageAsync(resource, ct) resolves the local image name, computes the registry-qualified remote tag, tags, and pushes internally — collapsing the prior manual tag+push:
var manager = context.Services.GetRequiredService<IResourceContainerImageManager>();
await manager.PushImageAsync(resource, context.CancellationToken);
  • Updated verified Aspire manifest snapshots: 13.4.2 no longer emits the $schema line.

Other dependencies

  • Test: Microsoft.NET.Test.Sdk 18.6.0, xunit 2.9.3, xunit.runner.visualstudio 3.1.5, coverlet.collector 10.0.1, Verify.Xunit 31.12.5.
  • Roslyn: Microsoft.CodeAnalysis.CSharp/.Analyzers 5.3.0. SourceLink 10.0.300. Microsoft.Extensions.* 10.6.0, OpenTelemetry.* 1.15.x.

ATS attributes

  • [AspireExport]/[AspireDto]/[AspireExportIgnore] are present in Aspire.Hosting 13.4.2; their validating analyzer is opt-in behind the EnableAspireIntegrationAnalyzers MSBuild flag (default false). README note corrected accordingly.
  • Annotating the public surface is deferred: enabling the analyzer raises ASPIREEXPORT008 on every extension method over the Aspire-exported IResourceBuilder<T>, and several domain types (TerraformOutputReference, configuration/block types) must first be made ATS-compatible. Scope flagged for a follow-up.

@EmmittJ
EmmittJ marked this pull request as ready for review June 4, 2026 13:04
Copilot AI review requested due to automatic review settings June 4, 2026 13:04
@EmmittJ
EmmittJ merged commit df9d108 into main Jun 4, 2026
1 check passed
Copilot stopped work on behalf of EmmittJ due to an error June 4, 2026 13:06

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Updates the repository’s Aspire/AppHost integration and overall dependency set to align with Aspire 13.4.2, while adding a cross-language “raw HCL” value-provider escape hatch (TerraformRawExpression) that can flow through Aspire’s expression/value-provider system into the Terraform AST.

Changes:

  • Upgraded Aspire (AppHost SDK + Aspire.* packages) to 13.4.2 and refreshed other centrally-managed dependency versions.
  • Replaced container image push logic to use IResourceContainerImageManager.PushImageAsync(resource, ct) instead of the removed IResourceContainerImageBuilder.
  • Introduced TerraformRawExpression with tests and documentation, and refreshed Verify manifest snapshots to match Aspire 13.4.2 output (no $schema line).

Reviewed changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformRawExpressionTests.cs Adds unit tests validating raw/unquoted HCL lowering and interaction with ReferenceExpression.
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformPipelineIntegrationTests.TerraformStack_WithParentConfiguration_UsesParentDirectory/aspire-manifest.verified.json Updates Verify snapshot to match Aspire 13.4.2 manifest output (drops $schema).
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformPipelineIntegrationTests.TerraformStack_WithOutputDirectory_GeneratesFileInSpecifiedLocation/aspire-manifest.verified.json Updates Verify snapshot to match Aspire 13.4.2 manifest output (drops $schema).
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformPipelineIntegrationTests.TerraformStack_WithComplexConfiguration_GeneratesValidHCL/aspire-manifest.verified.json Updates Verify snapshot to match Aspire 13.4.2 manifest output (drops $schema).
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformPipelineIntegrationTests.TerraformStack_GeneratesFileInDefaultLocation/aspire-manifest.verified.json Updates Verify snapshot to match Aspire 13.4.2 manifest output (drops $schema).
tests/EmmittJ.Aspire.Hosting.Terraform.Tests/TerraformPipelineIntegrationTests.MultipleAnnotations_ContributeToSingleStack/aspire-manifest.verified.json Updates Verify snapshot to match Aspire 13.4.2 manifest output (drops $schema).
src/EmmittJ.Terraform.Sdk.AppHost/EmmittJ.Terraform.Sdk.AppHost.csproj Bumps AppHost SDK to Aspire 13.4.2.
src/EmmittJ.Aspire.Hosting.Terraform/TerraformRawExpression.cs Adds a new Aspire value provider to carry verbatim/unquoted HCL into Terraform expressions.
src/EmmittJ.Aspire.Hosting.Terraform/TerraformPublishingContext.cs Teaches module-parameter resolution to lower TerraformRawExpression as TerraformExpression.Raw(...).
src/EmmittJ.Aspire.Hosting.Terraform/TerraformProvisioningResource.cs Migrates container image push to IResourceContainerImageManager and adds support for resolving TerraformRawExpression.
src/EmmittJ.Aspire.Hosting.Terraform/README.md Documents the cross-language expression contract, raw-HCL escape hatch, and ATS attribute availability/analyzer opt-in.
playground/getting-started/GettingStarted.csproj Updates Aspire AppHost SDK and Aspire.Hosting.AppHost dependency to 13.4.2.
playground/azure-container-apps/apphost/AppHost.csproj Updates Aspire AppHost SDK and Aspire.Hosting.* dependencies to 13.4.2.
Directory.Packages.props Refreshes centrally-managed versions (Aspire, testing, Roslyn, SourceLink, OpenTelemetry, etc.).

Comment on lines 949 to 952
/// <list type="bullet">
/// <item><see cref="string"/>: Returned as-is</item>
/// <item><see cref="TerraformRawExpression"/>: Lowered to a verbatim (unquoted) HCL expression</item>
/// <item><see cref="EndpointReference"/>: Resolved via <see cref="ResolveEndpointReference"/></item>
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.

3 participants