microsoft / microsoft/aspire

[automated] fix(ci): explicitly classify benchmark projects for selective CI

Open
#19,986 0 comments 0 reactions 0 assignees View on GitHub
area-engineering-systems
Dominant language
C#
Stars
6.3k
Forks
991
Avg merge
2d 15h
Merged PRs (30d)
196

Description

[automated]

### Is there an existing issue for this?

- [x] I have searched the existing issues

### Describe the bug

The selective PR CI map does not explicitly classify the benchmark projects outside the `Aspire.slnx`-rooted ProjectGraph.

Run [34247134578](https://github.com/microsoft/aspire/actions/runs/34247134578) for #19431 reported `benchmarks/Aspire.Dashboard.Benchmarks/Aspire.Dashboard.Benchmarks.csproj` in `unattributedFiles`. The run still selected `ALL` because `Directory.Packages.props` independently triggered the broad rule, so no test coverage was lost in this run. However, an isolated benchmark-project change relies on the conservative unattributed-file fallback instead of an intentional route or explicit no-PR-CI classification.

The same structural gap exists for `benchmarks/Aspire.Cli.Benchmarks/Aspire.Cli.Benchmarks.csproj`.

The benchmark projects predate selective CI: the dashboard benchmark project was added in #17299 and the CLI benchmark project in #16982. The initial selector map in #18127 did not cover them. The current real-map invariants check projects under `src/` and `tests/`, but not `benchmarks/`.

### Expected Behavior

Every tracked project outside `Aspire.slnx` should be explicitly accounted for by `eng/github-ci/test-trigger-map.yml`: routed to its actual PR-CI consumer, routed to `ALL` when broadly shared, or classified as having no PR-CI consumer. Real-map tests should fail when a benchmark project is neither in the solution graph nor covered by a curated rule.

### Steps To Reproduce

1. Change `benchmarks/Aspire.Dashboard.Benchmarks/Aspire.Dashboard.Benchmarks.csproj` in a pull request.
2. Run the enforcing test selector.
3. Inspect `select-tests-selection.json`.
4. Observe the project file under `unattributedFiles`; without another broad trigger, it falls back to `ALL`.

### Exceptions (if any)

N/A

### Aspire doctor output

N/A — this is GitHub Actions selector infrastructure.

### Anything else?

Observed evidence: https://github.com/microsoft/aspire/actions/runs/34247134578

Related rollout tracking: #19787

Contributor guide

Open the contributing guide

Research direction

Start with eng/github-ci/test-trigger-map.yml and run the enforcing test selector, then inspect select-tests-selection.json for the benchmark project entries. Check the real-map invariants described in the issue and account for both benchmark projects through a curated route, ALL, or an explicit no-consumer classification. Done means isolated benchmark changes are no longer unattributed and the real-map tests reject uncovered benchmark projects.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, github-actions
Domain
ci-cd, tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.