Rename Aspire Dashboard image to aspire/dashboard family#7218
Conversation
Publish the .NET Aspire Dashboard image under a dedicated 'aspire' product family (mcr.microsoft.com/aspire/dashboard, nightly: aspire/nightly/dashboard) instead of dotnet/aspire-dashboard. Hard cutover with no syndication alias. Internal identifiers (manifest id, src/aspire-dashboard paths, template dirs, version variables, README filenames, test categories) are intentionally kept as aspire-dashboard; only the published name and user-facing docs change. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Under the hard cutover to the aspire/ product family there is no microsoft/aspire-dashboard Docker Hub repo, so stop generating the Docker Hub portal README for the family and avoid emitting dead hub.docker.com links to it. - manifest.json: remove the .portal-docs/docker-hub README entry for the aspire repo (keep GitHub + MAR portal READMEs). - Get-GeneratedReadmes.ps1: stop copying the aspire docker-hub README. - Url.md: for the aspire family, emit the MAR artifact link instead of a hub.docker.com link when rendering for the dockerhub host, so other repos' Related Repositories lists point to MAR. - Remove the generated .portal-docs/docker-hub/README.aspire-dashboard.md and regenerate all docker-hub READMEs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the broad substring checks (find/match of REPO containing "aspire"), introduced when renaming the published name to the aspire/ family, with an exact first-path-segment check in the README templates. This precisely identifies the new top-level aspire/ product family and avoids false-positives on any future repo whose path merely contains the substring "aspire". Behavioral no-op for the current repo set (regenerated READMEs are unchanged). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| * [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) | ||
| * [aspire/nightly/dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): Aspire Dashboard (Preview) |
There was a problem hiding this comment.
General question: If it's not a dotnet/* repo anymore, should we remove it from the related repos lists for the dotnet/* images?
Another way of thinking about it - If the dashboard image wasn't built out of this repo, I don't think we'd go out of our way to add it to these lists.
cc @mthalman
| * [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) |
There was a problem hiding this comment.
I think that these links, in particular the first one, aren't super relevant to this repo anymore.
| > **Important**: The images from the aspire/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). | ||
| > See [aspire](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md) for images with official releases of [.NET](https://github.com/dotnet/core). |
There was a problem hiding this comment.
This comment isn't super coherent anymore.
The Aspire Dashboard nightly image typically has a stable version of .NET but a pre-release version of the Dashboard, and sometimes (rarely) has early fixes from the .NET base image. It also isn't signed.
| { | ||
| "productVersion": "$(aspire-dashboard|product-version)", | ||
| "sharedTags": { | ||
| "$(aspire-dashboard|fixed-tag)": {}, |
There was a problem hiding this comment.
Tags are missing syndication to the old dotnet/aspire-dashboard repo:
| "$(aspire-dashboard|fixed-tag)": { | |
| "syndication": { | |
| "repo": "dotnet/aspire-dashboard" | |
| } | |
| }, |
Summary
Renames the .NET Aspire Dashboard container image to a dedicated
aspireproduct family:mcr.microsoft.com/dotnet/aspire-dashboard→mcr.microsoft.com/aspire/dashboarddotnet/nightly/aspire-dashboard→aspire/nightly/dashboardThis is a hard cutover — no syndication/back-compat alias to the old repo. Tag scheme is unchanged (
13.x.y,13.x,13,latest).All internal identifiers are intentionally kept as
aspire-dashboard: manifestid, on-disksrc/aspire-dashboard/paths, template dirs (eng/dockerfile-templates/aspire-dashboard/,eng/mcr-tags-metadata-templates/aspire-dashboard-tags.yml),$(aspire-dashboard|...)version variables,README.aspire-dashboard.mdfilenames, and test categories/traits. Only the publishednameand user-facing docs change.Changes
manifest.json: reponame→aspire/nightly/dashboard(idunchanged).ImageData.GetRepoNamereconstructs the new published name for the aspire repo;StaticTagTestsappliance matcher updated.aspire/family parses (via ImageBuilder) toSHORT_REPO=dashboard/PARENT_REPO=nightly, so template special-cases map it back toaspire-dashboardfor readme-filename/qualifier derivation; the/nightlyinsertion andAnnouncement.mdfamily wording were generalized.documentation/image-signatures.md: registry-scope example updated tomcr.microsoft.com/aspire/dashboard.Validation
aspire/dashboardacross generated docs, and the dotnet product-familyREADME.mdis un-regressedaspire/nightly/dashboard; aspire image tests 7 passed, 0 faileddotnet/aspire-dashboardis the BAR version-source-name ineng/Set-DotnetVersions.ps1(build identity, not the MCR repo — correctly left unchanged)Related work