[automated] ci: streamline test job fan-out - #19761
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19761Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19761" |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Pull request overview
Streamlines PR CI test fan-out while preserving extension and rolling-build coverage.
Changes:
- Extracts extension unit testing and VSIX packaging into a reusable workflow.
- Replaces six matrix buckets with five named lanes and explicit size validation.
- Removes the trusted extension-release fast path and routes release files through selective CI.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/actions/is-trusted-extension-release-pr/action.yml |
Removes the obsolete classifier action. |
.github/actions/is-trusted-extension-release-pr/validate.ps1 |
Removes classifier validation logic. |
.github/workflows/ci.yml |
Uses one selector-driven CI path. |
.github/workflows/extension-unit-tests.yml |
Adds reusable extension testing and packaging. |
.github/workflows/tests.yml |
Uses five named matrix lanes and the extension workflow. |
docs/ci/TestingOnCI.md |
Documents revised selection and matrix behavior. |
docs/ci/ci-pipeline-optimizations.md |
Removes the overflow lane documentation. |
eng/github-ci/test-trigger-map.yml |
Routes the new extension workflow. |
eng/scripts/expand-test-matrix-github.ps1 |
Removes obsolete overflow documentation. |
eng/scripts/split-test-matrix-by-deps.ps1 |
Removes overflow and enforces the 256-entry limit. |
extension/src/test/e2eBridgeProductionGate.test.ts |
Targets the extracted packaging workflow. |
tests/Infrastructure.Tests/Pipelines/ExtensionE2eWorkflowTests.cs |
Verifies extracted VSIX production behavior. |
tests/Infrastructure.Tests/PowerShellScripts/ExpandTestMatrixGitHubTests.cs |
Updates matrix assertions for five lanes. |
tests/Infrastructure.Tests/PowerShellScripts/SplitTestMatrixByDepsTests.cs |
Tests explicit matrix-limit failure. |
tests/Infrastructure.Tests/PowerShellScripts/TrustedExtensionReleasePrTests.cs |
Removes obsolete classifier tests. |
tests/Infrastructure.Tests/TestTriggerMap/SelectTestsAcceptanceTests.cs |
Covers extension release-file selection. |
tests/Infrastructure.Tests/TestTriggerMap/TestTriggerMapTests.cs |
Verifies workflow-to-job routing. |
tests/Infrastructure.Tests/WorkflowScripts/ExtensionWorkflowTests.cs |
Verifies the consolidated CI workflow contracts. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
5f1e17d to
7e6f8e2
Compare
This comment has been minimized.
This comment has been minimized.
7e6f8e2 to
ecf3fad
Compare
This comment has been minimized.
This comment has been minimized.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
VS Code extension unit testing and optional VSIX packaging were embedded in tests.yml, while the matrix splitter maintained a dormant overflow lane. This coupled extension artifacts to the full test workflow and made matrix selection and aggregation harder to follow. Move extension unit testing and packaging into a focused reusable workflow, and point the production-gate assertions at their new owner. Replace the overflow lane with an explicit 256-entry guard, give package lanes stable OS-qualified names, and route the focused jobs through the test selector. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 062c6fdf-bd7d-4ceb-926e-ebe8a10eecda
Extension release PRs used a dedicated trusted classifier and workflow call to avoid the full test graph. With selective test enforcement on main, the exact release file set selects extension unit and E2E jobs without selecting any .NET test projects. Remove the classifier and special job so release PRs use selector-driven CI. Add regression coverage for the release file set and document that non-PR rolling builds still force full test selection. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 062c6fdf-bd7d-4ceb-926e-ebe8a10eecda
ecf3fad to
4d0e5ca
Compare
Tests selectorSelects the full PR test matrix + all PR-gated jobs (ALL) — a rule matching '.github/actions/is-trusted-extension-release-pr/action.yml' selects ALL Advisory workflow impact (4)
Selection computed for commit |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
✅ No documentation update needed. Step 5 branch taken: Triggered signals: none (signal_count = 0). recommendation was Allowlist justification: All 18 changed files fall under CI/build infrastructure or internal engineering docs, matching the
This PR restructures CI job fan-out/matrix splitting for internal test infrastructure. It has no user-facing behavior, no new/changed public API, CLI options, MCP tools, dashboard pages, or configuration surface. No documentation update is needed on microsoft/aspire.dev. |
|
The CI build failed due to test failure(s) that appear unrelated to the PR changes. These may be flaky tests. Suspected flaky test(s):
Suggested actions:
You can re-run the failed jobs from the workflow run page. |
[automated]
Description
PR CI now uses five selector-friendly matrix lanes and one extension test path. This removes the unused overflow lane and the dedicated extension-release check from ordinary job graphs while making matrix lanes easier to identify.
Root cause. Extension unit testing and VSIX packaging were embedded in
tests.yml, while trusted extension release PRs bypassed that workflow through a separate classifier and top-level job. The matrix splitter also maintained a sixth overflow lane even though current lanes fit under GitHub's 256-job limit.The fix. Extension unit testing and optional packaging now live in
extension-unit-tests.yml. All required PRs enter the selector-driventests.ymlgraph; changes limited toextension/package.jsonandextension/CHANGELOG.mdselect extension unit and E2E validation without selecting any .NET test projects. That coverage is a strict superset of the removed release job, so its classifier and special aggregation path are no longer needed.The matrix splitter now emits five dependency lanes with static OS-qualified names. It fails explicitly if any lane exceeds 256 entries instead of keeping an unused overflow path that could silently complicate selection and aggregation.
Coverage is preserved for rolling builds. Non-PR events still force
SelectTeststo selectALL, so rolling builds run the complete test graph. Matrix enumeration criteria are unchanged; this PR only repartitions those entries. PRs use the selector from #19688, and an exact release-file regression test verifies that extension unit and E2E jobs are selected with no .NET matrix.Validation.
4d0e5caede677d03cc0abd1e8bb3030b4e44046d, with 385 successful checks and two intended skips.Aspire.Hosting.RemoteHost.Testsnamed-pipe startup timeout; its automatic retry passed.actionlintreported no new diagnostics after excluding the repository's existing custom-runner and local-action metadata diagnostics.Checklist
<remarks />and<code />elements on your triple slash comments?