Skip to content

Disable dashboard telemetry in Docker and Kubernetes deployments - #20906

Open
James Newton-King (JamesNK) wants to merge 1 commit into
mainfrom
jamesnk/dashboard-deployment-telemetry-optout
Open

James Newton-King (JamesNK) wants to merge 1 commit into
mainfrom
jamesnk/dashboard-deployment-telemetry-optout

Conversation

@JamesNK

Copy link
Copy Markdown
Member

Description

Dashboards included in published Docker Compose files and Kubernetes Helm charts should not report dashboard product usage and errors by default. Set ASPIRE_DASHBOARD_TELEMETRY_OPTOUT=true on both generated dashboard containers.

This only opts out of the dashboard's own usage/error reporting. Application OpenTelemetry ingestion and local AppHost dashboard telemetry behavior are unchanged.

  • Centralize the environment-variable key in the shared internal KnownConfigNames.DashboardTelemetryOptOut constant.
  • Source-link the shared configuration type into the Docker and Kubernetes integrations, and use the constant in the publishers, AppHost dashboard configuration, dashboard telemetry configuration, and related test helpers.
  • Update Docker Compose and Kubernetes snapshots, including multi-environment output. Add explicit snapshot coverage for the generated dashboard ConfigMap and its Deployment reference.
  • Document the deployment telemetry default in both hosting integration READMEs.

No new dependencies or public APIs are introduced. Azure Container Apps and Azure App Service provision platform-managed dashboards and are not changed by this PR.

User-facing usage

Existing deployment environment configuration automatically applies the opt-out:

C#

builder.AddDockerComposeEnvironment("compose");
// Alternatively: builder.AddKubernetesEnvironment("k8s");

TypeScript

await builder.addDockerComposeEnvironment("compose");
// Alternatively: await builder.addKubernetesEnvironment("k8s");

The generated Compose dashboard service now includes:

environment:
  ASPIRE_DASHBOARD_TELEMETRY_OPTOUT: "true"

Kubernetes emits the same setting through the dashboard ConfigMap and references that ConfigMap from the dashboard Deployment.

Validation

The repository was restored with .\restore.cmd — passed. The following targeted commands compiled the affected projects and verified configuration parsing, AppHost forwarding, dashboard startup, and generated deployment output:

  • dotnet test --project .\tests\Aspire.Dashboard.Tests\Aspire.Dashboard.Tests.csproj --no-launch-profile -- --filter-method '*.DashboardTelemetryConfigurationTests.*' --filter-method '*.DashboardTelemetryServiceTests.*' --filter-method '*.Configuration_LegacyDebugSession_DisablesTelemetryAndIgnoresTransportSettings' --filter-method '*.Startup_HttpJsonWithoutReflection_UsesGeneratedMetadata' --filter-not-trait 'quarantined=true' --filter-not-trait 'outerloop=true' — passed, 32 tests.
  • dotnet test --project .\tests\Aspire.Hosting.Tests\Aspire.Hosting.Tests.csproj --no-launch-profile -- --filter-class '*.DashboardOptionsTests' --filter-class '*.DashboardEventHandlersTests' --filter-not-trait 'quarantined=true' --filter-not-trait 'outerloop=true' — passed, 59 tests.
  • dotnet test --project .\tests\Aspire.Hosting.Docker.Tests\Aspire.Hosting.Docker.Tests.csproj --no-launch-profile -- --filter-method '*.PublishAsync_WithDashboardEnabled_IncludesDashboardService' --filter-method '*.PublishAsync_WithDashboard_UsesCustomConfiguration' --filter-method '*.PublishAsync_InRunMode_DoesNotCreateDashboard' --filter-method '*.DashboardWithForwardedHeadersWritesEnvVar' --filter-not-trait 'quarantined=true' --filter-not-trait 'outerloop=true' — passed, 4 tests.
  • dotnet test --project .\tests\Aspire.Hosting.Kubernetes.Tests\Aspire.Hosting.Kubernetes.Tests.csproj --no-build --no-launch-profile -- --filter-method '*.PublishAsync_GeneratesValidHelmChart' --filter-method '*.Dashboard_HonorsRequiredOtlpProtocol' --filter-method '*.AddKubernetesEnvironment_CreatesDashboardByDefault' --filter-not-trait 'quarantined=true' --filter-not-trait 'outerloop=true' — passed, 5 tests after building the project in the same session. Existing CRLF baselines were temporarily normalized to LF for Verify and their original checkout line endings were restored afterward.
  • git -c core.safecrlf=false --no-pager diff --check — passed.

No live Docker or Kubernetes deployment was performed.

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

Opt out dashboard containers in Docker Compose and Kubernetes output, share the telemetry configuration key, and update documentation and snapshot coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@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 -- 20906

Or

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

@aspire-repo-bot
aspire-repo-bot Bot requested a balanced review from Copilot October 12, 2026 00:21
@github-actions github-actions Bot added the area-integrations Issues pertaining to Aspire Integrations packages label Oct 12, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Tests selector

56 / 98 PR test projects · 7 PR jobs, from 69 changed files.

Selected PR test projects (56 / 98)

Aspire.Cli.EndToEnd.Tests, Aspire.Cli.Tests, Aspire.Dashboard.Components.Tests, Aspire.Dashboard.Tests, Aspire.Hosting.Analyzers.Tests, Aspire.Hosting.Azure.Kubernetes.Tests, Aspire.Hosting.Azure.Kusto.Tests, Aspire.Hosting.Azure.Provisioning.Tests, Aspire.Hosting.Azure.Tests, Aspire.Hosting.Blazor.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.CodeGeneration.Go.Tests, Aspire.Hosting.CodeGeneration.Java.Tests, Aspire.Hosting.CodeGeneration.Python.Tests, Aspire.Hosting.CodeGeneration.Rust.Tests, Aspire.Hosting.CodeGeneration.TypeScript.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.DevTunnels.Tests, Aspire.Hosting.Docker.Tests, Aspire.Hosting.Dotnet.Tests, Aspire.Hosting.DotnetTool.Tests, Aspire.Hosting.EntityFrameworkCore.Tests, Aspire.Hosting.Foundry.Tests, Aspire.Hosting.Garnet.Tests, Aspire.Hosting.Go.Tests, Aspire.Hosting.Java.Tests, Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Kafka.Tests, Aspire.Hosting.Keycloak.Tests, Aspire.Hosting.Kubernetes.Tests, Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests, Aspire.Hosting.MongoDB.Tests, Aspire.Hosting.MySql.Tests, Aspire.Hosting.Nats.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Oracle.Tests, Aspire.Hosting.Orleans.Tests, Aspire.Hosting.PostgreSQL.Tests, Aspire.Hosting.Python.Tests, Aspire.Hosting.Qdrant.Tests, Aspire.Hosting.RabbitMQ.Tests, Aspire.Hosting.Radius.Tests, Aspire.Hosting.Redis.Tests, Aspire.Hosting.RemoteHost.Tests, Aspire.Hosting.Rust.Tests, Aspire.Hosting.Seq.Tests, Aspire.Hosting.SqlServer.Tests, Aspire.Hosting.Testing.Tests, Aspire.Hosting.Tests, Aspire.Hosting.Valkey.Tests, Aspire.Hosting.Yarp.Tests, Aspire.Managed.Tests, Aspire.Playground.Tests, Aspire.Templates.Tests, Aspire.TerminalHost.Tests

Selected PR jobs (7)

cli-starter-validation, extension-e2e, homebrew-installer, native-dashboard-validation, polyglot, typescript-api-compat, winget-installer


How these were chosen — grouped by what changed

⚠️ 34 of the 56 selected test projects come from a single change — src/Aspire.Hosting/Dashboard/DashboardOptions.cs.

🔧 src/Aspire.Hosting/Dashboard/DashboardOptions.cs (changed source)
→ 34 via the project graph

show 34

Aspire.Hosting.Analyzers.Tests (2 hops), Aspire.Hosting.Azure.Kusto.Tests (2 hops), Aspire.Hosting.Azure.Provisioning.Tests (3 hops), Aspire.Hosting.Azure.Tests, Aspire.Hosting.CodeGeneration.Go.Tests, Aspire.Hosting.CodeGeneration.Java.Tests, Aspire.Hosting.CodeGeneration.Python.Tests, Aspire.Hosting.CodeGeneration.Rust.Tests, Aspire.Hosting.DevTunnels.Tests (2 hops), Aspire.Hosting.EntityFrameworkCore.Tests (2 hops), Aspire.Hosting.Foundry.Tests (2 hops), Aspire.Hosting.Garnet.Tests (2 hops), Aspire.Hosting.Go.Tests (2 hops), Aspire.Hosting.Java.Tests (2 hops), Aspire.Hosting.Kafka.Tests (2 hops), Aspire.Hosting.Keycloak.Tests (2 hops), Aspire.Hosting.Maui.Tests, Aspire.Hosting.Milvus.Tests (2 hops), Aspire.Hosting.MongoDB.Tests (2 hops), Aspire.Hosting.MySql.Tests (2 hops), Aspire.Hosting.Nats.Tests (2 hops), Aspire.Hosting.Oracle.Tests (2 hops), Aspire.Hosting.Orleans.Tests (2 hops), Aspire.Hosting.PostgreSQL.Tests (2 hops), Aspire.Hosting.Python.Tests (2 hops), Aspire.Hosting.Qdrant.Tests (2 hops), Aspire.Hosting.RabbitMQ.Tests (2 hops), Aspire.Hosting.Redis.Tests (2 hops), Aspire.Hosting.RemoteHost.Tests, Aspire.Hosting.Rust.Tests (2 hops), Aspire.Hosting.Seq.Tests (2 hops), Aspire.Hosting.SqlServer.Tests (2 hops), Aspire.Hosting.Valkey.Tests (2 hops), Aspire.Playground.Tests

🔧 src/Shared/KnownConfigNames.cs (changed source)
→ 8 via the project graph: Aspire.Cli.Tests, Aspire.Hosting.Browsers.Tests, Aspire.Hosting.Containers.Tests, Aspire.Hosting.OpenAI.Tests, Aspire.Hosting.Testing.Tests, Aspire.Managed.Tests, Aspire.Templates.Tests, Aspire.TerminalHost.Tests

🔧 src/Aspire.Dashboard/Telemetry/DashboardTelemetryConfiguration.cs (changed source)
→ 7 via the project graph: Aspire.Dashboard.Components.Tests, Aspire.Hosting.Blazor.Tests (2 hops), Aspire.Hosting.Dotnet.Tests (2 hops), Aspire.Hosting.DotnetTool.Tests (2 hops), Aspire.Hosting.JavaScript.Tests, Aspire.Hosting.Radius.Tests (2 hops), Aspire.Hosting.Tests

🔧 src/Aspire.Hosting.Kubernetes/Aspire.Hosting.Kubernetes.csproj (changed source)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests
→ 2 via the project graph: Aspire.Hosting.Azure.Kubernetes.Tests (2 hops), Aspire.Hosting.CodeGeneration.TypeScript.Tests

🔧 src/Aspire.Hosting.Docker/Aspire.Hosting.Docker.csproj (changed source)
→ 1 directly: Aspire.Hosting.Docker.Tests
→ 1 via the project graph: Aspire.Hosting.Yarp.Tests

📦 affected project Aspire.Dashboard
→ 1 test: Aspire.Templates.Tests

📦 affected project Aspire.Hosting.Docker
→ 1 test: Aspire.Cli.EndToEnd.Tests

📦 affected project Aspire.TerminalHost
→ 1 test: Aspire.Cli.EndToEnd.Tests

🔧 src/Aspire.Hosting.Docker/DockerComposeAspireDashboardResourceBuilderExtensions.cs (changed source)
→ 1 directly: Aspire.Hosting.Docker.Tests

🔧 src/Aspire.Hosting.Kubernetes/KubernetesAspireDashboardResourceBuilderExtensions.cs (changed source)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Dashboard.Tests/Integration/IntegrationTestHelpers.cs (changed test)
→ 1 directly: Aspire.Dashboard.Tests

🧪 tests/Aspire.Dashboard.Tests/Integration/Playwright/Infrastructure/DashboardServerFixture.cs (changed test)
→ 1 directly: Aspire.Dashboard.Tests

🧪 tests/Aspire.Dashboard.Tests/Integration/StartupTests.cs (changed test)
→ 1 directly: Aspire.Dashboard.Tests

🧪 tests/Aspire.Dashboard.Tests/Telemetry/DashboardTelemetryConfigurationTests.cs (changed test)
→ 1 directly: Aspire.Dashboard.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.DockerComposeAppliesServiceCustomizations.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.DockerComposeCorrectlyEmitsPortMappings.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.DockerComposeWithProjectResources.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PrepareStep_ResolvesArbitraryIValueProviderSource.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_GeneratesValidDockerComposeFile.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_HandlesConditionalReferenceExpression.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_MultipleResourcesWithOtlp_ConfiguresAllForDashboard.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_WithDashboardEnabled_IncludesDashboardService.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_WithDashboard_HonorsRequiredOtlpProtocols.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposePublisherTests.PublishAsync_WithDashboard_UsesCustomConfiguration.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.DashboardWithForwardedHeadersWritesEnvVar.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.DockerComposeOnlyExposesExternalEndpoints.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.DockerSwarmDeploymentLabelsSerializedCorrectly.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.DockerSwarmUpdateConfigSerializedCorrectly.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.MultipleDockerComposeEnvironmentsSupported/env1/docker-compose.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Docker.Tests/Snapshots/DockerComposeTests.MultipleDockerComposeEnvironmentsSupported/env2/docker-compose.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Docker.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/KubernetesPublisherTests.cs (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=Grpc.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=HttpJson.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=HttpProtobuf.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesDeployTests.DeferredValueProvider_EndToEnd_PublishAndResolve#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/env1-dashboard/config.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/templates/env1-dashboard/deployment.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env1/values.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/env2-dashboard/config.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/templates/env2-dashboard/deployment.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/env2/values.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesEndpointReferenceUsesServicePortNotTargetPort#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesMapsPortsForBaitAndSwitchResources#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesMapsPortsForBaitAndSwitchResources#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesWithDotnetProjectUsesImageParameterAndProjectEndpoint#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesWithProjectResources#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.KubernetesWithProjectResources#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CompositeExpressionPreservesExpressionShape#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_ConditionalBranchesCaptureEmbeddedParameters#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_ConditionalWithParameterBranch_UsesIfElseSyntax#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_ConditionalWithParameterBranch_UsesIfElseSyntax#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_EmbeddedParametersInEnvironmentExpressionsPopulateValues#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#10.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpression#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpression#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesScalarEnvironmentVariableTypes#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#01.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_ProjectAndExecutableVolumesUseDefaultStorageAndEnvironmentPaths#04.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_ResourceWithProbes#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_SharedEmbeddedParameterIsScopedPerResource#00.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_WithFirstClassPersistentVolume_EnvironmentUsesDeploymentMountPath#03.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

🧪 tests/Aspire.Hosting.Kubernetes.Tests/Snapshots/KubernetesPublisherTests.PublishAsync_WithPersistentVolumeEnvironment_OnContainerAndExecutable#06.verified.yaml (changed test)
→ 1 directly: Aspire.Hosting.Kubernetes.Tests

Job reasons

Job Triggered by
cli-starter-validation • affected project Aspire.TerminalHost
• affected project Aspire.Cli
extension-e2e • src/Aspire.Dashboard/Telemetry/DashboardTelemetryConfiguration.cs, src/Aspire.Dashboard/Telemetry/DashboardTelemetryService.cs, src/Aspire.Hosting.Docker/Aspire.Hosting.Docker.csproj, src/Aspire.Hosting.Docker/DockerComposeAspireDashboardResourceBuilderExtensions.cs, src/Aspire.Hosting/Dashboard/DashboardOptions.cs
• affected project Aspire.TerminalHost
• affected project Aspire.Dashboard
homebrew-installer affected project Aspire.TerminalHost
native-dashboard-validation affected project Aspire.Dashboard
polyglot • affected project Aspire.Hosting.Docker
• affected project Aspire.Hosting.Azure.Provisioning.AppService
typescript-api-compat affected project Aspire.Hosting.Docker
winget-installer affected project Aspire.TerminalHost

Selection computed for commit 44fac1e.

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.

🟢 Approval recommended

The shared configuration key, deployment defaults, documentation, and generated-artifact coverage are consistent across the affected components.

0 open findings

What changed in this PR

This PR disables dashboard product telemetry by default in Docker Compose and Kubernetes artifact publishers while preserving application OpenTelemetry ingestion.

Changes:

  • Centralizes the telemetry opt-out configuration key.
  • Adds the opt-out to generated Compose and Helm dashboard containers.
  • Updates documentation and snapshot coverage, including multi-environment charts.
File Description
src/​Shared/​KnownConfigNames.cs Adds shared opt-out key.
src/​Aspire.Hosting/​Dashboard/​DashboardOptions.cs Uses the shared key.
src/​Aspire.Dashboard/​Telemetry/​DashboardTelemetryService.cs Removes duplicate key.
src/​Aspire.Dashboard/​Telemetry/​DashboardTelemetryConfiguration.cs Uses the shared key.
src/​Aspire.Hosting.Docker/​Aspire.Hosting.Docker.csproj Links shared configuration names.
src/​Aspire.Hosting.Docker/​DockerComposeAspireDashboardResourceBuilderExtensions.cs Sets the Compose dashboard default.
src/​Aspire.Hosting.Docker/​README.md Documents the default.
src/​Aspire.Hosting.Kubernetes/​Aspire.Hosting.Kubernetes.csproj Links shared configuration names.
src/​Aspire.Hosting.Kubernetes/​KubernetesAspireDashboardResourceBuilderExtensions.cs Sets the Kubernetes dashboard default.
src/​Aspire.Hosting.Kubernetes/​README.md Documents the default.
tests/​Aspire.Dashboard.Tests/​Telemetry/​DashboardTelemetryConfigurationTests.cs Uses the shared key in telemetry tests.
tests/​Aspire.Dashboard.Tests/​Integration/​StartupTests.cs Uses the shared key in startup tests.
tests/​Aspire.Dashboard.Tests/​Integration/​Playwright/​Infrastructure/​DashboardServerFixture.cs Updates Playwright configuration.
tests/​Aspire.Dashboard.Tests/​Integration/​IntegrationTestHelpers.cs Updates dashboard test setup.
tests/​Aspire.Hosting.Kubernetes.Tests/​KubernetesPublisherTests.cs Verifies the dashboard ConfigMap output.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_WithPersistentVolumeEnvironment_OnContainerAndExecutable#06.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_WithFirstClassPersistentVolume_EnvironmentUsesDeploymentMountPath#03.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_SharedEmbeddedParameterIsScopedPerResource#00.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_ResourceWithProbes#00.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_ProjectAndExecutableVolumesUseDefaultStorageAndEnvironmentPaths#04.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesSpecialResourceName#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesScalarEnvironmentVariableTypes#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpression#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_HandlesConditionalReferenceExpression#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#10.verified.yaml Adds dashboard ConfigMap snapshot.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_GeneratesValidHelmChart#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_EmbeddedParametersInEnvironmentExpressionsPopulateValues#00.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_CustomWorkloadAndResourceType#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_ConditionalWithParameterBranch_UsesIfElseSyntax#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_ConditionalWithParameterBranch_UsesIfElseSyntax#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_ConditionalBranchesCaptureEmbeddedParameters#00.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.PublishAsync_CompositeExpressionPreservesExpressionShape#00.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesWithProjectResources#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesWithProjectResources#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesWithDotnetProjectUsesImageParameterAndProjectEndpoint#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesMapsPortsForBaitAndSwitchResources#02.verified.yaml Adds ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesMapsPortsForBaitAndSwitchResources#01.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesPublisherTests.KubernetesEndpointReferenceUsesServicePortNotTargetPort#00.verified.yaml Updates named-environment values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.PublishingKubernetesEnvironmentPublishesFile#01.verified.yaml Adds default dashboard configuration.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env2/​values.verified.yaml Updates env2 values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env2/​templates/​env2-dashboard/​deployment.verified.yaml Adds env2 ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env2/​templates/​env2-dashboard/​config.verified.yaml Adds env2 ConfigMap.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env1/​values.verified.yaml Updates env1 values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env1/​templates/​env1-dashboard/​deployment.verified.yaml Adds env1 ConfigMap reference.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesEnvironmentResourceTests.MultipleKubernetesEnvironmentsSupported/​env1/​templates/​env1-dashboard/​config.verified.yaml Adds env1 ConfigMap.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesDeployTests.DeferredValueProvider_EndToEnd_PublishAndResolve#00.verified.yaml Updates Helm values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=HttpProtobuf.verified.yaml Updates HTTP/protobuf values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=HttpJson.verified.yaml Updates HTTP/JSON values.
tests/​Aspire.Hosting.Kubernetes.Tests/​Snapshots/​KubernetesDeployTests.Dashboard_HonorsRequiredOtlpProtocol_protocol=Grpc.verified.yaml Updates gRPC values.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.MultipleDockerComposeEnvironmentsSupported/​env2/​docker-compose.verified.yaml Adds env2 Compose opt-out.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.MultipleDockerComposeEnvironmentsSupported/​env1/​docker-compose.verified.yaml Adds env1 Compose opt-out.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.DockerSwarmUpdateConfigSerializedCorrectly.verified.yaml Updates Swarm snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.DockerSwarmDeploymentLabelsSerializedCorrectly.verified.yaml Updates Swarm snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.DockerComposeOnlyExposesExternalEndpoints.verified.yaml Updates endpoint snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposeTests.DashboardWithForwardedHeadersWritesEnvVar.verified.yaml Preserves forwarded-header configuration.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_WithDashboardEnabled_IncludesDashboardService.verified.yaml Verifies default opt-out.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_WithDashboard_UsesCustomConfiguration.verified.yaml Preserves custom dashboard settings.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_WithDashboard_HonorsRequiredOtlpProtocols.verified.yaml Updates OTLP snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_MultipleResourcesWithOtlp_ConfiguresAllForDashboard.verified.yaml Updates multi-resource snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_HandlesConditionalReferenceExpressionWithParameterCondition.verified.yaml Updates conditional snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_HandlesConditionalReferenceExpression.verified.yaml Updates conditional snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PublishAsync_GeneratesValidDockerComposeFile.verified.yaml Updates primary Compose snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.PrepareStep_ResolvesArbitraryIValueProviderSource.verified.yaml Updates provider snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.DockerComposeWithProjectResources.verified.yaml Updates project snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.DockerComposeCorrectlyEmitsPortMappings.verified.yaml Updates port snapshot.
tests/​Aspire.Hosting.Docker.Tests/​Snapshots/​DockerComposePublisherTests.DockerComposeAppliesServiceCustomizations.verified.yaml Updates customization snapshot.

🧠 Review effort: Balanced


💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

@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.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-integrations Issues pertaining to Aspire Integrations packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants