Repository navigation
Add Aspire Dashboard support to update-dependencies tooling - #6726
Conversation
There was a problem hiding this comment.
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); |
There was a problem hiding this comment.
As FYI, we should be able to upload checksums for the dashboard very easily if you prefer.
There was a problem hiding this comment.
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.
…e path for static tags tests
|
|
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>
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
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/aspireCurrent Aspire channels that I see at https://aka.ms/bar:
8103: daily builds8104: release candidates8105: GAThey all work fine with this new code.
Summary of changes
IBuildUpdaterService-BuildUpdaterServiceis nowVmrBuildUpdaterServiceFromBuildCommandandFromChannelCommandnow support multiple repos by resolving different updater services using DIAspireUpdaterServiceAspireUpdaterServiceto compute its own variable names and values while still using existing infrastructure. This was done by adding custom updater support toSpecificCommand. 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:
Follow-ups
eng/pipelines/pipelines/update-dependencies.ymlwhich already runs every day targeting the nightly branch.