From 9631c3d2a061a2b59cbd7da3870db86b9eb9aae7 Mon Sep 17 00:00:00 2001 From: David Pine <7679720+IEvangelist@users.noreply.github.com> Date: Wed, 26 Aug 2026 10:07:00 -0500 Subject: [PATCH] Rename Aspire Dashboard image family Publish Aspire Dashboard under the aspire family while syndicating Aspire 13 tags to the legacy dotnet repositories. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../docker-hub/README.aspire-dashboard.md | 153 ------------------ .portal-docs/docker-hub/README.aspnet.md | 1 - .../docker-hub/README.monitor-base.md | 1 - .portal-docs/docker-hub/README.monitor.md | 1 - .../docker-hub/README.runtime-deps.md | 1 - .portal-docs/docker-hub/README.runtime.md | 1 - .portal-docs/docker-hub/README.samples.md | 1 - .portal-docs/docker-hub/README.sdk.md | 1 - .portal-docs/docker-hub/README.yarp.md | 1 - .../mar/README.aspire-dashboard.portal.md | 11 +- .portal-docs/mar/README.aspnet.portal.md | 1 - .../mar/README.monitor-base.portal.md | 1 - .portal-docs/mar/README.monitor.portal.md | 1 - .../mar/README.runtime-deps.portal.md | 1 - .portal-docs/mar/README.runtime.portal.md | 1 - .portal-docs/mar/README.samples.portal.md | 1 - .portal-docs/mar/README.sdk.portal.md | 1 - .portal-docs/mar/README.yarp.portal.md | 1 - README.aspire-dashboard.md | 13 +- README.aspnet.md | 1 - README.md | 2 - README.monitor-base.md | 1 - README.monitor.md | 1 - README.runtime-deps.md | 1 - README.runtime.md | 1 - README.samples.md | 1 - README.sdk.md | 1 - README.yarp.md | 1 - documentation/image-signatures.md | 1 + .../About.aspire-dashboard.md | 2 +- eng/readme-templates/About.md | 4 +- eng/readme-templates/Announcement.md | 6 +- eng/readme-templates/FeaturedTags.md | 2 +- eng/readme-templates/Get-GeneratedReadmes.ps1 | 1 - eng/readme-templates/GitHub.header.md | 6 +- eng/readme-templates/ReposProvider.md | 3 +- eng/readme-templates/Support.md | 4 +- eng/readme-templates/Url.md | 8 +- eng/readme-templates/Use.md | 4 +- manifest.json | 59 +++++-- .../AspireDashboardManifestTests.cs | 135 ++++++++++++++++ .../ImageData.cs | 4 +- .../Microsoft.DotNet.Docker.Tests/Manifest.cs | 1 + .../StaticTagTests.cs | 8 +- 44 files changed, 225 insertions(+), 226 deletions(-) delete mode 100644 .portal-docs/docker-hub/README.aspire-dashboard.md create mode 100644 tests/Microsoft.DotNet.Docker.Tests/AspireDashboardManifestTests.cs diff --git a/.portal-docs/docker-hub/README.aspire-dashboard.md b/.portal-docs/docker-hub/README.aspire-dashboard.md deleted file mode 100644 index 47b4bdad8d..0000000000 --- a/.portal-docs/docker-hub/README.aspire-dashboard.md +++ /dev/null @@ -1,153 +0,0 @@ -> **Important**: The images from the dotnet/nightly repositories include last-known-good (LKG) builds for the next release of [.NET](https://github.com/dotnet/core). -> -> See [dotnet](https://hub.docker.com/r/microsoft/dotnet-aspire-dashboard/) for images with official releases of [.NET](https://github.com/dotnet/core). - -# Featured Tags - -* `13` - * `docker pull mcr.microsoft.com/dotnet/nightly/aspire-dashboard:13` - -# About - -This image contains the Aspire Dashboard. - -Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements. - -# Usage - -The Aspire Dashboard is a browser-based app to view run-time information about your distributed application. - -The dashboard shows: - -* Resources that make up your app, such as .NET projects, executables and containers. -* Live console logs of resources. -* Live telemetry, such as structured logs, traces and metrics. - -## Configuration - -The dashboard must be configured when it is started. The configuration is done via environment variables. The following environment variables are supported: - -* `ASPNETCORE_URLS` specifies one or more HTTP endpoints through which the dashboard frontend is served. The frontend endpoint is used to view the dashboard in a browser. Defaults to `http://localhost:18888`. -* `DOTNET_DASHBOARD_OTLP_ENDPOINT_URL` specifies the [OTLP/gRPC](https://opentelemetry.io/docs/specs/otlp/#otlpgrpc) endpoint. This endpoint hosts an OTLP service and receives telemetry using gRPC. When the dashboard is launched by the Aspire app host this address is secured with HTTPS. Securing the dashboard with HTTPS is recommended. Defaults to `http://localhost:18889`. -* `DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` specifies the [OTLP/HTTP](https://opentelemetry.io/docs/specs/otlp/#otlphttp) endpoint. This endpoint hosts an OTLP service and receives telemetry using Protobuf over HTTP. Defaults to `http://localhost:18890`. -* `ASPIRE_DASHBOARD_MCP_ENDPOINT_URL` specifies the Aspire MCP endpoint. When this value isn't specified then the MCP server is hosted with an `ASPNETCORE_URLS` endpoint. The MCP server can be disabled by configuring `Dashboard:Mcp:Disabled` to `true`. Defaults to `http://localhost:18891`. -* `DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS` specifies the dashboard doesn't use authentication and accepts anonymous access. This setting is a shortcut to configuring `Dashboard:Frontend:AuthMode`, `Dashboard:Otlp:AuthMode` and `Dashboard:Mcp:AuthMode` to `Unsecured`. -* `DOTNET_DASHBOARD_CONFIG_FILE_PATH` specifies the path for an optional JSON configuration file. - -### Frontend authentication - -The dashboard's frontend supports OpenID Connect (OIDC). Set `Dashboard__Frontend__AuthMode` to `OpenIdConnect`, then add the following configuration: - -* `Authentication__Schemes__OpenIdConnect__Authority` — URL to the identity provider (IdP) -* `Authentication__Schemes__OpenIdConnect__ClientId` — Identity of the relying party (RP) -* `Authentication__Schemes__OpenIdConnect__ClientSecret`— A secret that only the real RP would know -* Other properties of [`OpenIdConnectOptions`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.builder.openidconnectoptions) specified in configuration container `Authentication__Schemes__OpenIdConnect__*` - -It may also be run unsecured. Set `Dashboard__Frontend__AuthMode` to `Unsecured`. The frontend endpoint will allow anonymous access. This setting is used during local development, but is not recommended if you attempt to host the dashboard in other settings. - -## OTLP authentication - -The OTLP endpoint can be secured with [client certificate](https://learn.microsoft.com/aspnet/core/security/authentication/certauth) or API key authentication. - -For client certification authentication, set `Dashboard__Otlp__AuthMode` to `Certificate`. - -For API key authentication, set `Dashboard__Otlp__AuthMode` to `ApiKey`, then add the following configuration: - -* `Dashboard__Otlp__PrimaryApiKey` specifies the primary API key. (required, string) -* `Dashboard__Otlp__SecondaryApiKey` specifies the secondary API key. (optional, string) - -It may also be run unsecured. Set `Dashboard__Otlp__AuthMode` to `Unsecured`. The OTLP endpoint will allow anonymous access. This setting is used during local development, but is not recommended if you attempt to host the dashboard in other settings. - -## Resources - -* `Dashboard__ResourceServiceClient__Url` specifies the gRPC endpoint to which the dashboard connects for its data. There's no default. If this variable is unspecified, the dashboard shows OTEL data but no resource list or console logs. - -The resource service client supports certificates. Set `Dashboard__ResourceServiceClient__AuthMode` to `Certificate`, then add the following configuration: - -* `Dashboard__ResourceServiceClient__ClientCertificate__Source` (required) one of: - * `File` to load the cert from a file path, configured with: - * `Dashboard__ResourceServiceClient__ClientCertificate__FilePath` (required, string) - * `Dashboard__ResourceServiceClient__ClientCertificate__Password` (optional, string) - * `KeyStore` to load the cert from a key store, configured with: - * `Dashboard__ResourceServiceClient__ClientCertificate__Subject` (required, string) - * `Dashboard__ResourceServiceClient__ClientCertificate__Store` (optional, [`StoreName`](https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.storename), defaults to `My`) - * `Dashboard__ResourceServiceClient__ClientCertificate__Location` (optional, [`StoreLocation`](https://learn.microsoft.com/dotnet/api/system.security.cryptography.x509certificates.storelocation), defaults to `CurrentUser`) - -To opt-out of authentication, set `Dashboard__ResourceServiceClient__AuthMode` to `Unsecured`. This completely disables all security for the resource service client. This setting is used during local development, but is not recommended if you attempt to host the dashboard in other settings. - -### Telemetry Limits - -Telemetry is stored in-memory. To avoid excessive memory usage, the dashboard has limits on the count and size of stored telemetry. When a count limit is reached, new telemetry is added, and the oldest telemetry is removed. When a size limit is reached, data is truncated to the limit. - -* `Dashboard__TelemetryLimits__MaxLogCount` specifies the maximum number of log entries. Defaults to 10,000. -* `Dashboard__TelemetryLimits__MaxTraceCount` specifies the maximum number of traces. Defaults to 10,000. -* `Dashboard__TelemetryLimits__MaxMetricsCount` specifies the maximum number of metric data points. Defaults to 50,000. -* `Dashboard__TelemetryLimits__MaxAttributeCount` specifies the maximum number of attributes on telemetry. Defaults to 128. -* `Dashboard__TelemetryLimits__MaxAttributeLength` specifies the maximum length of attributes. Defaults to unlimited. -* `Dashboard__TelemetryLimits__MaxSpanEventCount` specifies the maximum number of events on span attributes. Defaults to unlimited. - -Limits are per-resource. For example, a `MaxLogCount` value of 10,000 configures the dashboard to store up to 10,000 log entries per-resource. - -## Other - -* `Dashboard__ApplicationName` specifies the application name to be displayed in the UI. This applies only when no resource service URL is specified. When a resource service exists, the service specifies the application name. - -# Related Repositories - -.NET: - -* [dotnet](https://hub.docker.com/r/microsoft/dotnet/): .NET -* [dotnet/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-aspire-dashboard/): Aspire Dashboard -* [dotnet/nightly/sdk](https://hub.docker.com/r/microsoft/dotnet-nightly-sdk/): .NET SDK (Preview) -* [dotnet/nightly/aspnet](https://hub.docker.com/r/microsoft/dotnet-nightly-aspnet/): ASP.NET Core Runtime (Preview) -* [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) -* [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) -* [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) -* [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples - -.NET Framework: - -* [dotnet/framework](https://hub.docker.com/r/microsoft/dotnet-framework/): .NET Framework, ASP.NET and WCF -* [dotnet/framework/samples](https://hub.docker.com/r/microsoft/dotnet-framework-samples/): .NET Framework, ASP.NET and WCF Samples - -# Full Tag Listing - -View the current tags at the [Microsoft Artifact Registry portal](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/tags) or on [GitHub](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md#full-tag-listing). - -# Support - -## Lifecycle - -* [Microsoft Support for .NET](https://github.com/dotnet/core/blob/main/support.md) -* [Supported Container Platforms Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md) -* [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md) - -## Image Update Policy - -* **Base Image Updates:** Images are re-built within 12 hours of any updates to their base images (e.g. debian:bookworm-slim, windows/nanoserver:ltsc2022, etc.). -* **.NET Releases:** Images are re-built as part of releasing new .NET versions. This includes new major versions, minor versions, and servicing releases. -* **Critical CVEs:** Images are re-built to pick up critical CVE fixes as described by the CVE Update Policy below. -* **Monthly Re-builds:** Images are re-built monthly, typically on the second Tuesday of the month, in order to pick up lower-severity CVE fixes. -* **Out-Of-Band Updates:** Images can sometimes be re-built when out-of-band updates are necessary to address critical issues. If this happens, new fixed version tags will be updated according to the [Fixed version tags documentation](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md#fixed-version-tags). - -### CVE Update Policy - -.NET container images are regularly monitored for the presence of CVEs. A given image will be rebuilt to pick up fixes for a CVE when: - -* We detect the image contains a CVE with a [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) score of "Critical" -* **AND** the CVE is in a package that is added in our Dockerfile layers (meaning the CVE is in a package we explicitly install or any transitive dependencies of those packages) -* **AND** there is a CVE fix for the package available in the affected base image's package repository. - -Please refer to the [Security Policy](https://github.com/dotnet/dotnet-docker/blob/main/SECURITY.md) and [Container Vulnerability Workflow](https://github.com/dotnet/dotnet-docker/blob/main/documentation/vulnerability-reporting.md) for more detail about what to do when a CVE is encountered in a .NET image. - -## Feedback - -* [File an issue](https://github.com/dotnet/dotnet-docker/issues/new/choose) -* [Contact Microsoft Support](https://support.microsoft.com/contactus/) - -# License - -* Legal Notice: [Container License Information](https://aka.ms/mcr/osslegalnotice) -* [.NET license](https://github.com/dotnet/dotnet-docker/blob/main/LICENSE) -* [Discover licensing for Linux image contents](https://github.com/dotnet/dotnet-docker/blob/main/documentation/image-artifact-details.md) diff --git a/.portal-docs/docker-hub/README.aspnet.md b/.portal-docs/docker-hub/README.aspnet.md index 0aa53efdce..3bcf37d145 100644 --- a/.portal-docs/docker-hub/README.aspnet.md +++ b/.portal-docs/docker-hub/README.aspnet.md @@ -72,7 +72,6 @@ For more information, see the [composite images section in the Image Variants do * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.monitor-base.md b/.portal-docs/docker-hub/README.monitor-base.md index d698ef95fb..5b6a39521d 100644 --- a/.portal-docs/docker-hub/README.monitor-base.md +++ b/.portal-docs/docker-hub/README.monitor-base.md @@ -37,7 +37,6 @@ The following Dockerfiles demonstrate how you can use this base image to build a * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.monitor.md b/.portal-docs/docker-hub/README.monitor.md index 115af8162a..b8be4d38ac 100644 --- a/.portal-docs/docker-hub/README.monitor.md +++ b/.portal-docs/docker-hub/README.monitor.md @@ -38,7 +38,6 @@ See [documentation](https://go.microsoft.com/fwlink/?linkid=2158052) for how to * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor/base](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor-base/): .NET Monitor Base (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.runtime-deps.md b/.portal-docs/docker-hub/README.runtime-deps.md index ced5e565c1..5e1e1102ec 100644 --- a/.portal-docs/docker-hub/README.runtime-deps.md +++ b/.portal-docs/docker-hub/README.runtime-deps.md @@ -54,7 +54,6 @@ They contain the following features: * [dotnet/nightly/aspnet](https://hub.docker.com/r/microsoft/dotnet-nightly-aspnet/): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.runtime.md b/.portal-docs/docker-hub/README.runtime.md index d0bcc35e2a..06ab1706a6 100644 --- a/.portal-docs/docker-hub/README.runtime.md +++ b/.portal-docs/docker-hub/README.runtime.md @@ -61,7 +61,6 @@ They contain the following features: * [dotnet/nightly/aspnet](https://hub.docker.com/r/microsoft/dotnet-nightly-aspnet/): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.samples.md b/.portal-docs/docker-hub/README.samples.md index cc93ea8fba..7a6ef01d83 100644 --- a/.portal-docs/docker-hub/README.samples.md +++ b/.portal-docs/docker-hub/README.samples.md @@ -71,7 +71,6 @@ They contain the following features: * [dotnet/runtime](https://hub.docker.com/r/microsoft/dotnet-runtime/): .NET Runtime * [dotnet/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-runtime-deps/): .NET Runtime Dependencies * [dotnet/monitor](https://hub.docker.com/r/microsoft/dotnet-monitor/): .NET Monitor Tool -* [dotnet/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-aspire-dashboard/): Aspire Dashboard .NET Framework: diff --git a/.portal-docs/docker-hub/README.sdk.md b/.portal-docs/docker-hub/README.sdk.md index 060fc44fcc..08420638e8 100644 --- a/.portal-docs/docker-hub/README.sdk.md +++ b/.portal-docs/docker-hub/README.sdk.md @@ -57,7 +57,6 @@ The [Image Variants documentation](https://github.com/dotnet/dotnet-docker/blob/ * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://hub.docker.com/r/microsoft/dotnet-nightly-yarp/): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples diff --git a/.portal-docs/docker-hub/README.yarp.md b/.portal-docs/docker-hub/README.yarp.md index 7697aaf08d..494404a566 100644 --- a/.portal-docs/docker-hub/README.yarp.md +++ b/.portal-docs/docker-hub/README.yarp.md @@ -95,7 +95,6 @@ You can skip HTTPS validation for the OTLP endpoint only by passing the environm * [dotnet/nightly/runtime](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime/): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://hub.docker.com/r/microsoft/dotnet-nightly-runtime-deps/): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://hub.docker.com/r/microsoft/dotnet-nightly-monitor/): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://hub.docker.com/r/microsoft/dotnet-nightly-aspire-dashboard/): Aspire Dashboard (Preview) * [dotnet/samples](https://hub.docker.com/r/microsoft/dotnet-samples/): .NET Samples .NET Framework: diff --git a/.portal-docs/mar/README.aspire-dashboard.portal.md b/.portal-docs/mar/README.aspire-dashboard.portal.md index 3e948caf59..7c71e6c620 100644 --- a/.portal-docs/mar/README.aspire-dashboard.portal.md +++ b/.portal-docs/mar/README.aspire-dashboard.portal.md @@ -1,24 +1,21 @@ ## About -> **Important**: The images from the dotnet/nightly repositories include last-known-good (LKG) builds for the next release of [.NET](https://github.com/dotnet/core). -> -> See [dotnet](https://mcr.microsoft.com/artifact/mar/dotnet/aspire-dashboard/about) for images with official releases of [.NET](https://github.com/dotnet/core). +> **Important**: The aspire/nightly/dashboard image is a preview build of the Aspire Dashboard and is not signed. See [aspire/dashboard](https://mcr.microsoft.com/artifact/mar/aspire/dashboard/about) for stable releases. -This image contains the Aspire Dashboard. +This image contains the [Aspire Dashboard](https://aspire.dev/dashboard/standalone/), a standalone browser-based app for viewing telemetry and run-time information about distributed applications. The source is available in the [microsoft/aspire](https://github.com/microsoft/aspire) repository. Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements. ## Featured Tags * `13` - * `docker pull mcr.microsoft.com/dotnet/nightly/aspire-dashboard:13` + * `docker pull mcr.microsoft.com/aspire/nightly/dashboard:13` ## Related Repositories .NET: * [dotnet](https://mcr.microsoft.com/catalog?search=dotnet): .NET -* [dotnet/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/aspire-dashboard/about): Aspire Dashboard * [dotnet/nightly/sdk](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/sdk/about): .NET SDK (Preview) * [dotnet/nightly/aspnet](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspnet/about): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) @@ -115,7 +112,7 @@ Limits are per-resource. For example, a `MaxLogCount` value of 10,000 configures ### Lifecycle -* [Microsoft Support for .NET](https://github.com/dotnet/core/blob/main/support.md) +* [Microsoft Support for Aspire](https://aspire.dev/support/) * [Supported Container Platforms Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md) * [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md) diff --git a/.portal-docs/mar/README.aspnet.portal.md b/.portal-docs/mar/README.aspnet.portal.md index a2c602a1ce..3589ef988f 100644 --- a/.portal-docs/mar/README.aspnet.portal.md +++ b/.portal-docs/mar/README.aspnet.portal.md @@ -29,7 +29,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.monitor-base.portal.md b/.portal-docs/mar/README.monitor-base.portal.md index f1e84d7489..0869bd4544 100644 --- a/.portal-docs/mar/README.monitor-base.portal.md +++ b/.portal-docs/mar/README.monitor-base.portal.md @@ -28,7 +28,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.monitor.portal.md b/.portal-docs/mar/README.monitor.portal.md index 5229c759d4..1d5b59402b 100644 --- a/.portal-docs/mar/README.monitor.portal.md +++ b/.portal-docs/mar/README.monitor.portal.md @@ -28,7 +28,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor/base](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/base/about): .NET Monitor Base (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.runtime-deps.portal.md b/.portal-docs/mar/README.runtime-deps.portal.md index 9bdd888cef..90808d50bd 100644 --- a/.portal-docs/mar/README.runtime-deps.portal.md +++ b/.portal-docs/mar/README.runtime-deps.portal.md @@ -29,7 +29,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/aspnet](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspnet/about): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.runtime.portal.md b/.portal-docs/mar/README.runtime.portal.md index 038a9f48e1..4750f0dbe6 100644 --- a/.portal-docs/mar/README.runtime.portal.md +++ b/.portal-docs/mar/README.runtime.portal.md @@ -29,7 +29,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/aspnet](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspnet/about): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.samples.portal.md b/.portal-docs/mar/README.samples.portal.md index 0258c9583a..08dc3609a7 100644 --- a/.portal-docs/mar/README.samples.portal.md +++ b/.portal-docs/mar/README.samples.portal.md @@ -23,7 +23,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/runtime/about): .NET Runtime * [dotnet/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/runtime-deps/about): .NET Runtime Dependencies * [dotnet/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/monitor/about): .NET Monitor Tool -* [dotnet/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/aspire-dashboard/about): Aspire Dashboard .NET Framework: diff --git a/.portal-docs/mar/README.sdk.portal.md b/.portal-docs/mar/README.sdk.portal.md index d57955e64a..62aa3c4cbb 100644 --- a/.portal-docs/mar/README.sdk.portal.md +++ b/.portal-docs/mar/README.sdk.portal.md @@ -35,7 +35,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/yarp/about): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples diff --git a/.portal-docs/mar/README.yarp.portal.md b/.portal-docs/mar/README.yarp.portal.md index 9ae65f4c43..12eddfe2ce 100644 --- a/.portal-docs/mar/README.yarp.portal.md +++ b/.portal-docs/mar/README.yarp.portal.md @@ -23,7 +23,6 @@ Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categori * [dotnet/nightly/runtime](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime/about): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/runtime-deps/about): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/monitor/about): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://mcr.microsoft.com/artifact/mar/dotnet/nightly/aspire-dashboard/about): Aspire Dashboard (Preview) * [dotnet/samples](https://mcr.microsoft.com/artifact/mar/dotnet/samples/about): .NET Samples .NET Framework: diff --git a/README.aspire-dashboard.md b/README.aspire-dashboard.md index 7a983d4bbb..3b2085fa95 100644 --- a/README.aspire-dashboard.md +++ b/README.aspire-dashboard.md @@ -1,17 +1,15 @@ # Aspire Dashboard -> **Important**: The images from the dotnet/nightly repositories include last-known-good (LKG) builds for the next release of [.NET](https://github.com/dotnet/core). -> -> See [dotnet](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md) for images with official releases of [.NET](https://github.com/dotnet/core). +> **Important**: The aspire/nightly/dashboard image is a preview build of the Aspire Dashboard and is not signed. See [aspire/dashboard](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md) for stable releases. ## Featured Tags * `13` - * `docker pull mcr.microsoft.com/dotnet/nightly/aspire-dashboard:13` + * `docker pull mcr.microsoft.com/aspire/nightly/dashboard:13` ## About -This image contains the Aspire Dashboard. +This image contains the [Aspire Dashboard](https://aspire.dev/dashboard/standalone/), a standalone browser-based app for viewing telemetry and run-time information about distributed applications. The source is available in the [microsoft/aspire](https://github.com/microsoft/aspire) repository. Watch [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) for Docker-related .NET announcements. @@ -99,7 +97,6 @@ Limits are per-resource. For example, a `MaxLogCount` value of 10,000 configures .NET: * [dotnet](https://github.com/dotnet/dotnet-docker/blob/main/README.md): .NET -* [dotnet/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md): Aspire Dashboard * [dotnet/nightly/sdk](https://github.com/dotnet/dotnet-docker/blob/nightly/README.sdk.md): .NET SDK (Preview) * [dotnet/nightly/aspnet](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspnet.md): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) @@ -129,13 +126,13 @@ Tags | Dockerfile | OS Version -*Tags not listed in the table above are not supported. See the [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md). See the [full list of tags](https://mcr.microsoft.com/v2/dotnet/nightly/aspire-dashboard/tags/list) for all supported and unsupported tags.* +*Tags not listed in the table above are not supported. See the [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md). See the [full list of tags](https://mcr.microsoft.com/v2/aspire/nightly/dashboard/tags/list) for all supported and unsupported tags.* ## Support ### Lifecycle -* [Microsoft Support for .NET](https://github.com/dotnet/core/blob/main/support.md) +* [Microsoft Support for Aspire](https://aspire.dev/support/) * [Supported Container Platforms Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md) * [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md) diff --git a/README.aspnet.md b/README.aspnet.md index 6be58e12e2..686cf516a4 100644 --- a/README.aspnet.md +++ b/README.aspnet.md @@ -74,7 +74,6 @@ For more information, see the [composite images section in the Image Variants do * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.md b/README.md index 2e5a2fe97f..2c1e8ed894 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,6 @@ * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) ## About @@ -90,7 +89,6 @@ They contain the following features: * [dotnet/runtime](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime.md): .NET Runtime * [dotnet/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime-deps.md): .NET Runtime Dependencies * [dotnet/monitor](https://github.com/dotnet/dotnet-docker/blob/main/README.monitor.md): .NET Monitor Tool -* [dotnet/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md): Aspire Dashboard * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples .NET Framework: diff --git a/README.monitor-base.md b/README.monitor-base.md index 6828e41ad0..834ce2bc73 100644 --- a/README.monitor-base.md +++ b/README.monitor-base.md @@ -39,7 +39,6 @@ The following Dockerfiles demonstrate how you can use this base image to build a * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.monitor.md b/README.monitor.md index bba254ce1e..e57d09d291 100644 --- a/README.monitor.md +++ b/README.monitor.md @@ -40,7 +40,6 @@ See [documentation](https://go.microsoft.com/fwlink/?linkid=2158052) for how to * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor/base](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor-base.md): .NET Monitor Base (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.runtime-deps.md b/README.runtime-deps.md index 02cf4093ae..38dff1da6f 100644 --- a/README.runtime-deps.md +++ b/README.runtime-deps.md @@ -56,7 +56,6 @@ They contain the following features: * [dotnet/nightly/aspnet](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspnet.md): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.runtime.md b/README.runtime.md index 3313f03419..da52234709 100644 --- a/README.runtime.md +++ b/README.runtime.md @@ -63,7 +63,6 @@ They contain the following features: * [dotnet/nightly/aspnet](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspnet.md): ASP.NET Core Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.samples.md b/README.samples.md index 4c754488ef..7a7361ea7a 100644 --- a/README.samples.md +++ b/README.samples.md @@ -73,7 +73,6 @@ They contain the following features: * [dotnet/runtime](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime.md): .NET Runtime * [dotnet/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime-deps.md): .NET Runtime Dependencies * [dotnet/monitor](https://github.com/dotnet/dotnet-docker/blob/main/README.monitor.md): .NET Monitor Tool -* [dotnet/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md): Aspire Dashboard .NET Framework: diff --git a/README.sdk.md b/README.sdk.md index cf69c9b4b3..3d985c303d 100644 --- a/README.sdk.md +++ b/README.sdk.md @@ -59,7 +59,6 @@ The [Image Variants documentation](https://github.com/dotnet/dotnet-docker/blob/ * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/nightly/yarp](https://github.com/dotnet/dotnet-docker/blob/nightly/README.yarp.md): YARP (Yet Another Reverse Proxy) (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples diff --git a/README.yarp.md b/README.yarp.md index fb3c2026e2..1c006183b8 100644 --- a/README.yarp.md +++ b/README.yarp.md @@ -97,7 +97,6 @@ You can skip HTTPS validation for the OTLP endpoint only by passing the environm * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET Runtime (Preview) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET Runtime Dependencies (Preview) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET Monitor Tool (Preview) -* [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET Samples .NET Framework: diff --git a/documentation/image-signatures.md b/documentation/image-signatures.md index 1cf5f8cbc6..837c9092ed 100644 --- a/documentation/image-signatures.md +++ b/documentation/image-signatures.md @@ -91,6 +91,7 @@ for verifying .NET images: { "name": "supplychain", "registryScopes": [ + "mcr.microsoft.com/aspire/dashboard", "mcr.microsoft.com/dotnet/aspire-dashboard", "mcr.microsoft.com/dotnet/aspnet", "mcr.microsoft.com/dotnet/monitor", diff --git a/eng/readme-templates/About.aspire-dashboard.md b/eng/readme-templates/About.aspire-dashboard.md index 767c957485..280212b5ca 100644 --- a/eng/readme-templates/About.aspire-dashboard.md +++ b/eng/readme-templates/About.aspire-dashboard.md @@ -1 +1 @@ -This image contains the Aspire Dashboard. +This image contains the [Aspire Dashboard](https://aspire.dev/dashboard/standalone/), a standalone browser-based app for viewing telemetry and run-time information about distributed applications. The source is available in the [microsoft/aspire](https://github.com/microsoft/aspire) repository. diff --git a/eng/readme-templates/About.md b/eng/readme-templates/About.md index d2e20f9007..d9d2d63231 100644 --- a/eng/readme-templates/About.md +++ b/eng/readme-templates/About.md @@ -4,7 +4,9 @@ readme-host: Moniker of the site that will host the readme ^ set templateQualifier to when(IS_PRODUCT_FAMILY, "product-family", - when(PARENT_REPO = "monitor", cat("monitor-", SHORT_REPO), SHORT_REPO)) + when(split(REPO, "/")[0] = "aspire", + "aspire-dashboard", + when(PARENT_REPO = "monitor", cat("monitor-", SHORT_REPO), SHORT_REPO))) }}{{ARGS["top-header"]}} About {{if ARGS["readme-host"] = "mar":{{InsertTemplate("ReposProvider.md", [ diff --git a/eng/readme-templates/Announcement.md b/eng/readme-templates/Announcement.md index bc0d750f82..9a8d2392d8 100644 --- a/eng/readme-templates/Announcement.md +++ b/eng/readme-templates/Announcement.md @@ -11,6 +11,7 @@ }} ^ set nonNightlyRepo to when(IS_PRODUCT_FAMILY, "dotnet", join(split(REPO, "/nightly"), "")) ^ + set announcementFamily to split(nonNightlyRepo, "/")[0] ^ set isNightlyRepo to match(split(REPO, "/")[1], "nightly") ^ set productFamilyRepo to ARGS["product-family-repos"][0][0] ^ set isNightlyOnly to find(map(ARGS["nightly-only-repos"],getRepoName), nonNightlyRepo) >= 0 ^ @@ -21,8 +22,9 @@ }}{{if isNightlyRepo || VARIABLES["branch"] = "nightly" :{{if ARGS["leading-line-break"]: -}}> **Important**: The images from the dotnet/nightly repositories include last-known-good (LKG) builds for the next release of [.NET](https://github.com/dotnet/core). +}}{{if announcementFamily = "aspire":> **Important**: The {{REPO}} image is a preview build of the Aspire Dashboard and is not signed. See [{{nonNightlyRepo}}]({{url}}) for stable releases. +^else:> **Important**: The images from the dotnet/nightly repositories include last-known-good (LKG) builds for the next release of [.NET](https://github.com/dotnet/core). > > See [dotnet]({{url}}) for images with official releases of [.NET](https://github.com/dotnet/core). -{{if ARGS["trailing-line-break"]: +}}{{if ARGS["trailing-line-break"]: }}}} diff --git a/eng/readme-templates/FeaturedTags.md b/eng/readme-templates/FeaturedTags.md index c19ca4f345..399dbc4829 100644 --- a/eng/readme-templates/FeaturedTags.md +++ b/eng/readme-templates/FeaturedTags.md @@ -20,7 +20,7 @@ elif match(REPO, "monitor/base"):* `9` (Standard Support) * `docker pull {{FULL_REPO}}:9` * `8` (Long-Term Support) * `docker pull {{FULL_REPO}}:8`^ -elif match(REPO, "aspire-dashboard"):* `13` +elif split(REPO, "/")[0] = "aspire":* `13` * `docker pull {{FULL_REPO}}:13`^ elif match(REPO, "yarp"):* `2.3-preview` * `docker pull {{FULL_REPO}}:2.3-preview`^ diff --git a/eng/readme-templates/Get-GeneratedReadmes.ps1 b/eng/readme-templates/Get-GeneratedReadmes.ps1 index 427ea3f09d..9bc0c518fb 100644 --- a/eng/readme-templates/Get-GeneratedReadmes.ps1 +++ b/eng/readme-templates/Get-GeneratedReadmes.ps1 @@ -35,7 +35,6 @@ $onDockerfilesGenerated = { CopyReadme $ContainerName "README.samples.md" CopyReadme $ContainerName "README.sdk.md" - CopyReadme $ContainerName ".portal-docs/docker-hub/README.aspire-dashboard.md" CopyReadme $ContainerName ".portal-docs/docker-hub/README.aspnet.md" CopyReadme $ContainerName ".portal-docs/docker-hub/README.monitor.md" CopyReadme $ContainerName ".portal-docs/docker-hub/README.monitor-base.md" diff --git a/eng/readme-templates/GitHub.header.md b/eng/readme-templates/GitHub.header.md index 61a496cacd..9ab7e4661c 100644 --- a/eng/readme-templates/GitHub.header.md +++ b/eng/readme-templates/GitHub.header.md @@ -13,6 +13,10 @@ return shortRepo = SHORT_REPO }} ^ - set currentRepo to when(IS_PRODUCT_FAMILY, ARGS["product-family-repos"], cat(filter(repos, isCurrentRepo))) + set currentRepo to when(IS_PRODUCT_FAMILY, + ARGS["product-family-repos"], + when(split(REPO, "/")[0] = "aspire", + [["aspire/dashboard", "Aspire Dashboard"]], + cat(filter(repos, isCurrentRepo)))) }}# {{currentRepo[0][1]}} diff --git a/eng/readme-templates/ReposProvider.md b/eng/readme-templates/ReposProvider.md index 0431b983e0..442aa3ebe5 100644 --- a/eng/readme-templates/ReposProvider.md +++ b/eng/readme-templates/ReposProvider.md @@ -13,8 +13,7 @@ ["dotnet/runtime", ".NET Runtime"], ["dotnet/runtime-deps", ".NET Runtime Dependencies"], ["dotnet/monitor", ".NET Monitor Tool"], - ["dotnet/monitor/base", ".NET Monitor Base"], - ["dotnet/aspire-dashboard", "Aspire Dashboard"] + ["dotnet/monitor/base", ".NET Monitor Base"] ] ^ set nightlyOnlyRepos to [ ["dotnet/yarp", "YARP (Yet Another Reverse Proxy)"] diff --git a/eng/readme-templates/Support.md b/eng/readme-templates/Support.md index 5315bd4ef1..d4768f10f5 100644 --- a/eng/readme-templates/Support.md +++ b/eng/readme-templates/Support.md @@ -5,7 +5,7 @@ set isRuntimeDeps to match(SHORT_REPO, "runtime-deps") ^ set isSamples to match(SHORT_REPO, "samples") ^ set isMonitor to match(SHORT_REPO, "monitor") || match(SHORT_REPO, "base") ^ - set isAspireDashboard to match(SHORT_REPO, "aspire-dashboard") ^ + set isAspireDashboard to split(REPO, "/")[0] = "aspire" ^ set isReverseProxy to match(SHORT_REPO, "yarp") }}{{ARGS["top-header"]}} Support @@ -15,7 +15,7 @@ }}{{ARGS["top-header"]}}# Lifecycle {{if isReverseProxy:* [Microsoft Support for YARP](https://github.com/dotnet/yarp/blob/main/docs/roadmap.md) -}}* [Microsoft Support for .NET](https://github.com/dotnet/core/blob/main/support.md) +}}* [Microsoft Support for {{when(isAspireDashboard, "Aspire", ".NET")}}]({{when(isAspireDashboard, "https://aspire.dev/support/", "https://github.com/dotnet/core/blob/main/support.md")}}) * [Supported Container Platforms Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md) * [Supported Tags Policy](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md) diff --git a/eng/readme-templates/Url.md b/eng/readme-templates/Url.md index e5af2b8ba7..b8174853c3 100644 --- a/eng/readme-templates/Url.md +++ b/eng/readme-templates/Url.md @@ -15,7 +15,13 @@ set isFrameworkRepo to match(repoParts[1], "framework") ^ set readmeFileName to cat( "README.", - when(isProductFamily, "", cat(join(slice(repoParts, when(isNightlyRepo || isFrameworkRepo, 2, 1)), "-"), ".")), + when(isProductFamily, + "", + cat( + when(repoParts[0] = "aspire", + "aspire-dashboard", + join(slice(repoParts, when(isNightlyRepo || isFrameworkRepo, 2, 1)), "-")), + ".")), "md") }}{{ diff --git a/eng/readme-templates/Use.md b/eng/readme-templates/Use.md index ead99901ab..a0983080a8 100644 --- a/eng/readme-templates/Use.md +++ b/eng/readme-templates/Use.md @@ -4,7 +4,9 @@ readme-host: Moniker of the site that will host the readme ^ set templateQualifier to when(IS_PRODUCT_FAMILY, "samples", - when(PARENT_REPO = "monitor", cat("monitor-", SHORT_REPO), SHORT_REPO)) + when(split(REPO, "/")[0] = "aspire", + "aspire-dashboard", + when(PARENT_REPO = "monitor", cat("monitor-", SHORT_REPO), SHORT_REPO))) }}{{ARGS["top-header"]}} Usage {{ _ Special case while aspire-dashboard image doesn't have any samples. Remove when https://github.com/dotnet/dotnet-docker/issues/5335 is resolved. ^ if templateQualifier != "aspire-dashboard": diff --git a/manifest.json b/manifest.json index 5aa7b7d2d8..00052417b9 100644 --- a/manifest.json +++ b/manifest.json @@ -5,6 +5,7 @@ }, "registry": "mcr.microsoft.com", "variables": { + "syndicatedAspireDashboardRepo": "dotnet/nightly/aspire-dashboard", "syndicatedRuntimeDepsRepo": "dotnet/core-nightly/runtime-deps", "syndicatedRuntimeRepo": "dotnet/core-nightly/runtime", "syndicatedAspnetRepo": "dotnet/core-nightly/aspnet", @@ -14991,16 +14992,12 @@ }, { "id": "aspire-dashboard", - "name": "dotnet/nightly/aspire-dashboard", + "name": "aspire/nightly/dashboard", "readmes": [ { "path": "README.aspire-dashboard.md", "templatePath": "eng/readme-templates/README.github.md" }, - { - "path": ".portal-docs/docker-hub/README.aspire-dashboard.md", - "templatePath": "eng/readme-templates/README.dockerhub.md" - }, { "path": ".portal-docs/mar/README.aspire-dashboard.portal.md", "templatePath": "eng/readme-templates/README.mcr.md" @@ -15011,9 +15008,25 @@ { "productVersion": "$(aspire-dashboard|product-version)", "sharedTags": { - "$(aspire-dashboard|fixed-tag)": {}, - "$(aspire-dashboard|minor-tag)": {}, - "$(aspire-dashboard|major-tag)": {}, + "$(aspire-dashboard|fixed-tag)": { + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } + }, + "$(aspire-dashboard|minor-tag)": { + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } + }, + "$(aspire-dashboard|major-tag)": { + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)", + "destinationTags": [ + "$(aspire-dashboard|major-tag)", + "latest" + ] + } + }, "latest": {} }, "platforms": [ @@ -15027,13 +15040,22 @@ "osVersion": "azurelinux3.0-distroless", "tags": { "$(aspire-dashboard|fixed-tag)-amd64": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } }, "$(aspire-dashboard|minor-tag)-amd64": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } }, "$(aspire-dashboard|major-tag)-amd64": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } } } }, @@ -15048,13 +15070,22 @@ "osVersion": "azurelinux3.0-distroless", "tags": { "$(aspire-dashboard|fixed-tag)-arm64v8": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } }, "$(aspire-dashboard|minor-tag)-arm64v8": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } }, "$(aspire-dashboard|major-tag)-arm64v8": { - "docType": "Undocumented" + "docType": "Undocumented", + "syndication": { + "repo": "$(syndicatedAspireDashboardRepo)" + } } }, "variant": "v8" diff --git a/tests/Microsoft.DotNet.Docker.Tests/AspireDashboardManifestTests.cs b/tests/Microsoft.DotNet.Docker.Tests/AspireDashboardManifestTests.cs new file mode 100644 index 0000000000..a7b571bfd2 --- /dev/null +++ b/tests/Microsoft.DotNet.Docker.Tests/AspireDashboardManifestTests.cs @@ -0,0 +1,135 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using Newtonsoft.Json.Linq; +using Xunit; + +#nullable enable + +namespace Microsoft.DotNet.Docker.Tests; + +[Trait("Category", "pre-build")] +public sealed class AspireDashboardManifestTests +{ + private const string AspireDashboardId = "aspire-dashboard"; + private const string SyndicatedRepoVariable = "$(syndicatedAspireDashboardRepo)"; + + [Theory] + [InlineData("", "aspire/dashboard")] + [InlineData("/nightly", "aspire/nightly/dashboard")] + public void RepoName_UsesAspireProductFamily(string repoNameModifier, string expectedRepoName) + { + Assert.Equal(expectedRepoName, ImageData.GetRepoName(AspireDashboardId, repoNameModifier)); + } + + [Fact] + public void Manifest_UsesCanonicalRepoName() + { + string branch = Config.GetVariableValue("branch"); + string repoNameModifier = branch == "nightly" ? "/nightly" : string.Empty; + + Assert.Equal( + ImageData.GetRepoName(AspireDashboardId, repoNameModifier), + GetAspireDashboardRepo().Value("name")); + } + + [Fact] + public void LegacySyndication_IsLimitedToAspire13() + { + int majorVersion = int.Parse(Config.GetVariableValue("aspire-dashboard|major-tag")); + JObject aspireDashboardRepo = GetAspireDashboardRepo(); + List<(string Tag, string Repo)> syndications = GetSyndications(aspireDashboardRepo).ToList(); + + if (majorVersion != 13) + { + Assert.Empty(syndications); + return; + } + + string branch = Config.GetVariableValue("branch"); + string expectedLegacyRepo = branch == "nightly" + ? "dotnet/nightly/aspire-dashboard" + : "dotnet/aspire-dashboard"; + + Assert.Equal( + expectedLegacyRepo, + Config.Manifest.Value["variables"]?["syndicatedAspireDashboardRepo"]?.Value()); + Assert.All(syndications, syndication => Assert.Equal(SyndicatedRepoVariable, syndication.Repo)); + + string fixedTag = Config.GetVariableValue("aspire-dashboard|fixed-tag"); + string minorTag = Config.GetVariableValue("aspire-dashboard|minor-tag"); + string majorTag = Config.GetVariableValue("aspire-dashboard|major-tag"); + JObject sharedTags = (JObject)aspireDashboardRepo["images"]!.Single()["sharedTags"]!; + Assert.Equal( + [majorTag, "latest"], + sharedTags["$(aspire-dashboard|major-tag)"]!["syndication"]!["destinationTags"]! + .Values() + .Select(destinationTag => ResolveTag(destinationTag!))); + Assert.Null(sharedTags["latest"]!["syndication"]); + + HashSet expectedTags = + [ + fixedTag, + minorTag, + majorTag, + "latest", + $"{fixedTag}-amd64", + $"{minorTag}-amd64", + $"{majorTag}-amd64", + $"{fixedTag}-arm64v8", + $"{minorTag}-arm64v8", + $"{majorTag}-arm64v8" + ]; + + Assert.Equal(expectedTags.Count, syndications.Count); + Assert.True( + expectedTags.SetEquals(syndications.Select(syndication => syndication.Tag)), + $"Expected syndication for: {string.Join(", ", expectedTags.Order())}"); + } + + private static JObject GetAspireDashboardRepo() => + Config.Manifest.Value["repos"]! + .Children() + .Single(repo => repo.Value("id") == AspireDashboardId); + + private static IEnumerable<(string Tag, string Repo)> GetSyndications(JObject repo) + { + foreach (JObject image in repo["images"]!.Children()) + { + IEnumerable tagGroups = + [ + (JObject)image["sharedTags"]!, + .. image["platforms"]! + .Children() + .Select(platform => (JObject)platform["tags"]!) + ]; + + foreach (JProperty tag in tagGroups.SelectMany(tagGroup => tagGroup.Properties())) + { + JToken? syndication = tag.Value["syndication"]; + string? syndicatedRepo = syndication?["repo"]?.Value(); + if (syndicatedRepo is not null) + { + IEnumerable destinationTags = syndication!["destinationTags"] is JArray configuredDestinationTags + ? configuredDestinationTags.Values().Select(destinationTag => destinationTag!) + : [tag.Name]; + + foreach (string destinationTag in destinationTags) + { + yield return (ResolveTag(destinationTag), syndicatedRepo); + } + } + } + } + } + + private static string ResolveTag(string tag) => + Regex.Replace( + tag, + @"\$\((?[\w:\-.|]+)\)", + match => Config.GetVariableValue(match.Groups["variable"].Value)); +} diff --git a/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs b/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs index 9dedc1e7a9..2e6fd768dc 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/ImageData.cs @@ -143,7 +143,9 @@ public static string GetImageName(string tag, string repoName, string repoNameMo } public static string GetRepoName(string repoName, string repoNameModifier = null) => - $"dotnet{repoNameModifier ?? GetRepoNameModifier()}/{repoName}"; + repoName == "aspire-dashboard" + ? $"aspire{repoNameModifier ?? GetRepoNameModifier()}/dashboard" + : $"dotnet{repoNameModifier ?? GetRepoNameModifier()}/{repoName}"; protected string GetTagName(string tagPrefix, string os, string tagPostfix = null) { diff --git a/tests/Microsoft.DotNet.Docker.Tests/Manifest.cs b/tests/Microsoft.DotNet.Docker.Tests/Manifest.cs index 3fccb3ddf2..e946cb17f5 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/Manifest.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/Manifest.cs @@ -15,6 +15,7 @@ public class Manifest public class Repo { + public string Id { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; public List Images { get; set; } = new List(); } diff --git a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs index 8a0da029a8..2d52902c4b 100644 --- a/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs +++ b/tests/Microsoft.DotNet.Docker.Tests/StaticTagTests.cs @@ -32,7 +32,7 @@ public enum VersionType private const string SingleNumberRegex = @"\d+"; private const string MajorVersionRegex = SingleNumberRegex; private const string MajorMinorVersionRegex = @$"{SingleNumberRegex}\.{SingleNumberRegex}"; - private static readonly string[] ApplianceRepos = + private static readonly string[] ApplianceRepoIds = [ "monitor", "monitor-base", @@ -294,7 +294,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) break; case TestType.Platform: - if (ApplianceRepos.Any(repo.Name.Contains)) + if (ApplianceRepoIds.Contains(repo.Id)) { // Only appliance repos have major version tags // Only appliance repos have floating distro tags () @@ -428,7 +428,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) break; case TestType.FloatingAlpine: - if (ApplianceRepos.Any(repo.Name.Contains)) + if (ApplianceRepoIds.Contains(repo.Id)) { // Only appliance repos have major version alpine floating tags // Only appliance repos have major.minor.patch alpine floating tags @@ -482,7 +482,7 @@ private static IEnumerable GetTagTestObjects(TestType testType) break; case TestType.Version: - if (ApplianceRepos.Any(repo.Name.Contains)) + if (ApplianceRepoIds.Contains(repo.Id)) { // Only appliance repos have major version tags testObjects.Add(GetTagTestInput(