Skip to content

Add Aspire Dashboard support to update-dependencies tooling - #6726

Merged
lbussell merged 22 commits into
dotnet:nightlyfrom
lbussell:aspire-automation
Oct 16, 2025
Merged

lbussell merged 22 commits into
dotnet:nightlyfrom
lbussell:aspire-automation

Conversation

@lbussell

@lbussell lbussell commented Oct 14, 2025 •

Copy link
Copy Markdown
Member

Part 1/2 of #5154

Usage

Running the following command successfully updates the dashboard to version 13.0.0-preview.1.25514.9 (current daily build) with 0 interaction.

dotnet run --project ./eng/update-dependencies -- from-channel 8103 https://github.com/dotnet/aspire

Current Aspire channels that I see at https://aka.ms/bar:

  • 8103: daily builds
  • 8104: release candidates
  • 8105: GA

They all work fine with this new code.

Summary of changes

  • Allow multiple implementations of IBuildUpdaterService - BuildUpdaterService is now VmrBuildUpdaterService
  • FromBuildCommand and FromChannelCommand now support multiple repos by resolving different updater services using DI
  • Added a new AspireUpdaterService
  • Allow AspireUpdaterService to compute its own variable names and values while still using existing infrastructure. This was done by adding custom updater support to SpecificCommand. While it looks like a lot of changes, this keeps the new code decoupled from the old code so that Remove dependency on Microsoft.DotNet.VersionTools docker-tools#1658 will be easier (that change will be in the near future).

Dockerfile and metadata template simplification:

Aspire has a tip-only release/support model and versions quickly. To better support that the following changes were made:

  • Removed hardcoded versions from Aspire variable names
  • Moved Aspire Dashboard Dockerfiles out of version/OS directories

Follow-ups

  • Add a stage to eng/pipelines/pipelines/update-dependencies.yml which already runs every day targeting the nightly branch.

@lbussell
lbussell requested review from a team and joperezr as code owners October 14, 2025 22:23
@lbussell
lbussell requested a review from Copilot October 14, 2025 22:27

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.

Pull Request Overview

This PR refactors the update-dependencies tooling to support multiple build sources (repositories) for updating dependencies, specifically adding support for Aspire builds alongside VMR builds. The primary goal is to enable automated updates of Aspire Dashboard dependencies from different .NET Build Asset Registry (BAR) channels.

  • Introduces a service-based architecture for handling updates from different repositories
  • Adds dedicated Aspire build update support while maintaining existing VMR functionality
  • Simplifies Aspire Dashboard metadata by removing hardcoded version paths

Reviewed Changes

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

Show a summary per file
File Description
manifest.versions.json Removes version-specific prefixes from Aspire Dashboard variable names
manifest.json Updates Dockerfile paths to remove version/OS directory structure
VmrBuildUpdaterService.cs Refactored from BuildUpdaterService, now specific to VMR builds
VariableUpdater.cs New class for updating individual variables in manifest.versions.json
VariableUpdateInfo.cs New record for representing variable update information
SpecificCommandOptions.cs Makes DockerfileVersion property optional
SpecificCommand.cs Adds support for custom dependency updaters
Program.cs Updates DI registration for multiple build updater services
ManifestVariables.cs Implements IManifestVariables interface
IManifestVariables.cs New interface for accessing manifest variables
IBuildUpdaterService.cs Extracted interface from BuildUpdaterService
FromChannelCommand.cs Updated to support multiple repos via keyed services
FromBuildCommand.cs Updated to support multiple repos via keyed services
BuildRepo.cs New enum defining supported build repositories
BuildExtensions.cs Extension methods for mapping builds to repository types
AspireBuildUpdaterService.cs New service for handling Aspire build updates
aspire-dashboard-tags.yml Updates tag group from version-specific to latest
Dockerfile.linux Removes version-specific variable references
README.aspire-dashboard.md Updates Dockerfile paths in documentation

/// <remarks>
/// Remove once https://github.com/dotnet/dotnet-docker/issues/6568 is completed.
/// </remarks>
private Task<string?> GetChecksumAsync(string url) => ChecksumHelper.ComputeChecksumShaAsync(_httpClient, url);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

As FYI, we should be able to upload checksums for the dashboard very easily if you prefer.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

That's tracked by microsoft/aspire#10605. If that could be done soon that'd be awesome.

We still need to leave this code in until both microsoft/aspire#10605 and #6568 are complete.

@joperezr joperezr left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Left a couple of comments but this looks super awesome @lbussell thank you so much for working on this!

Comment thread eng/shared/DotNetVersion.cs Resolved
@lbussell

Copy link
Copy Markdown
Member Author

DotNetVersion was pretty much copied wholesale from update-dependencies. I moved it to a shared project.

@lbussell
lbussell enabled auto-merge (squash) October 16, 2025 18:27
@lbussell
lbussell merged commit 9e9b732 into dotnet:nightly Oct 16, 2025
@lbussell
lbussell deleted the aspire-automation branch October 16, 2025 18:45
lbussell added a commit to lbussell/dotnet-docker that referenced this pull request Oct 22, 2025
lbussell added a commit to lbussell/dotnet-docker that referenced this pull request Oct 1, 2026
Aspire Dashboard Dockerfiles moved to src/aspire-dashboard/<arch> in dotnet#6726,
but ProductImageData.GetDockerfilePath still computed a versioned/OS path.
Path-filtered CI test runs therefore matched no test data and silently
skipped all Aspire Dashboard image tests.

Add a pre-build test that verifies test data maps to Dockerfile paths in
the manifest so this can't regress silently.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
lbussell added a commit that referenced this pull request Oct 9, 2026
Aspire Dashboard Dockerfiles moved to src/aspire-dashboard/<arch> in #6726,
but ProductImageData.GetDockerfilePath still computed a versioned/OS path.
Path-filtered CI test runs therefore matched no test data and silently
skipped all Aspire Dashboard image tests.

Add a pre-build test that verifies test data maps to Dockerfile paths in
the manifest so this can't regress silently.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

(cherry picked from commit 4a798ae)

Copilot-Session: 10a275cc-6f7f-4e59-a93e-cfa7cb8e68f1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants