ci: streamline test job fan-out - #19758
Closed
Ankit Jain (radical) wants to merge 2 commits into
Closed
Ankit Jain (radical) wants to merge 2 commits into
Ankit Jain (radical) wants to merge 2 commits into
Conversation
Move VS Code extension unit testing and optional VSIX packaging into a focused reusable workflow. This lets trusted extension release PRs avoid the full tests workflow while preserving the artifact needed by extension E2E jobs after unit-test failures. Replace the overflow matrix lane with a hard 256-entry limit so tests can never be silently omitted. Give package-dependent lanes stable OS-qualified names and route changes to the new workflow through the test selector. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 062c6fdf-bd7d-4ceb-926e-ebe8a10eecda
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19758Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19758" |
Contributor
There was a problem hiding this comment.
Pull request overview
Streamlines CI by separating extension validation and consolidating test fan-out into five bounded lanes.
Changes:
- Extracts extension unit tests and optional VSIX packaging into a reusable workflow.
- Removes the overflow lane and fails matrices exceeding GitHub’s 256-job limit.
- Updates routing, documentation, job names, and contract tests.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/ci.yml |
Calls focused extension validation for release PRs. |
.github/workflows/tests.yml |
Uses five named test lanes and the extracted extension workflow. |
.github/workflows/extension-unit-tests.yml |
Adds reusable extension unit testing and optional packaging. |
eng/scripts/split-test-matrix-by-deps.ps1 |
Removes overflow splitting and enforces lane limits. |
eng/scripts/expand-test-matrix-github.ps1 |
Updates matrix-splitting documentation. |
eng/github-ci/test-trigger-map.yml |
Routes extension workflow changes to unit and E2E validation. |
tests/Infrastructure.Tests/WorkflowScripts/ExtensionReleaseFastPathWorkflowTests.cs |
Verifies workflow extraction, callers, permissions, and lane names. |
tests/Infrastructure.Tests/TestTriggerMap/TestTriggerMapTests.cs |
Verifies extension workflow routing. |
tests/Infrastructure.Tests/PowerShellScripts/SplitTestMatrixByDepsTests.cs |
Tests five-lane output and limit failures. |
tests/Infrastructure.Tests/PowerShellScripts/ExpandTestMatrixGitHubTests.cs |
Updates end-to-end matrix assertions. |
tests/Infrastructure.Tests/Pipelines/ExtensionE2eWorkflowTests.cs |
Verifies VSIX production despite unit-test failures. |
docs/ci/TestingOnCI.md |
Documents the five-lane model and explicit limit failure. |
docs/ci/ci-pipeline-optimizations.md |
Removes the obsolete overflow lane. |
💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.
Contributor
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
The extension production-gate tests still read .github/workflows/tests.yml after VSIX packaging moved into the focused extension workflow. This made CI fail even though packaging and artifact upload completed successfully. Point the assertions at extension-unit-tests.yml so they continue guarding the workflow that owns the packaging steps. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 062c6fdf-bd7d-4ceb-926e-ebe8a10eecda
Member
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[automated]
Description
PR CI now uses focused extension validation and five stable test-matrix lanes. This makes selector-driven skips and job names easier to interpret, while trusted extension release PRs avoid starting the full test workflow.
Root cause. Extension unit testing and VSIX packaging were embedded in
tests.yml, so the release fast path had to thread anextensionReleaseOnlymode through the full workflow. The matrix splitter also maintained a sixth overflow lane even though the measured no-package matrix has 204 entries.The fix. Extension unit testing and optional packaging now live in
extension-unit-tests.yml, called directly by normal and release CI. Packaging still runs after unit-test failures when extension E2E needs the VSIX. The splitter emits five dependency lanes and fails explicitly if any lane exceeds GitHub's 256-job limit, rather than silently dropping tests. Static OS-qualified lane names remain distinct in CI timeline rendering, and selector routing covers both extension unit and E2E consumers.Why the skipped extension-release job remains. It is the pre-existing, mutually exclusive fast path for trusted bot-authored extension release PRs. Ordinary PRs show it as skipped because GitHub renders conditional jobs in the check graph, but it consumes no runner time.
Coverage is unchanged. Normal PR CI still covers the rolling-build test set and adds the existing PR-only CLI E2E and starter-validation checks. The selector and enumeration criteria are unchanged; the passing run executed all 313 matrix entries exactly once plus all 34 extension E2E shards.
Validation.
cccd63256d.Infrastructure.Testspassed locally.actionlintreported no new diagnostics in the changed workflows.Fixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?