-
Notifications
You must be signed in to change notification settings - Fork 63
First Version of E2E Validation Infrastructure #809
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Elliot (theelliotm)
merged 103 commits into
main
from
user/emichlin/validation-infra-lite
Aug 17, 2026
Merged
Changes from all commits
Commits
Show all changes
103 commits
Select commit
Hold shift + click to select a range
332bc6e
lite implementation of validation infra with placeholders for image nβ¦
theelliotm 03fc97e
aliging with similar projects over naming of prerelease
theelliotm cc38e54
changing what's enabled for testing
theelliotm a8040c1
test run with one windows and one linux runner
theelliotm 04a6cf8
removed tests from build workflows
theelliotm 1b88616
lite implementation of validation infra with placeholders for image nβ¦
theelliotm 94cf6d7
aliging with similar projects over naming of prerelease
theelliotm 01996fe
changing what's enabled for testing
theelliotm 5de032e
test run with one windows and one linux runner
theelliotm 39c63f8
removed tests from build workflows
theelliotm 723caa2
Merge branch 'user/emichlin/validation-infra-lite' of https://github.β¦
theelliotm c8db517
Fix naming + re-running failed action
theelliotm d951ef9
ci: add throwaway 1ES connectivity smoke workflow
huzaifa-msft 81fc367
ci: restructure 1ES smoke to push-trigger, drop ImageOverride
huzaifa-msft c4fbae4
ci: add unique JobId label to 1ES runs-on
huzaifa-msft c52e17d
migrating APIs
theelliotm 11c7cd7
ci: use scale-set targeting (pool name only) for 1ES pool
huzaifa-msft 157df5f
ci: revert to webhook multi-label format after removing UseScaleSet
huzaifa-msft b004f5e
changing format of runs-on to match similar projects
theelliotm 2750006
ci: retrigger 1ES smoke after pool re-save (webhook mode)
huzaifa-msft afd00da
ci: target fresh webhook-mode pool ...-wh (clean experiment)
huzaifa-msft 7d99dc7
ci: target repo-level pool 1es-mxc-test-2 (bypasses org group gate)
huzaifa-msft e7e0822
ci: fix shell to powershell (client image has no pwsh); repo-level poβ¦
huzaifa-msft af27bed
updated powershell to use 5.1
theelliotm 1903465
adding bubblewrap install for linux test prereq. for windows, revertiβ¦
theelliotm 0954172
triggering linux test scripts via bash
theelliotm 2c05316
bubblewrap test now owns files it delegates
theelliotm d932a42
diagnosing interactive desktop issues
theelliotm 6af23d8
diagnostics should continue on error
theelliotm 8a22379
Removing diagnostics - intended behavior.
theelliotm ba25dba
Testing MacOS runners with sample e2e test script
theelliotm 7fc8290
fix bugs in e2e test for macos
theelliotm 8d3dfb5
better naming conventions
theelliotm 6be9109
Merge branch 'main' into user/emichlin/validation-infra-lite
theelliotm 5ec57a3
fixed naming since github truncates things
theelliotm 03f26ff
test(wslc): add WSLC e2e suite, guards, and 1ES workflow
huzaifa-msft f3ecca1
Clearer file naming and debloated matrix generator script. Disabled nβ¦
theelliotm fc95d8f
Added new pools for rest of x64 OS versions.
theelliotm 894a095
Merge remote-tracking branch 'origin/main' into user/emichlin/validatβ¦
theelliotm 05e2cb8
bug fix
theelliotm d2320d5
Testing additional OS versions
theelliotm 840d361
ci(wslc): target new 1es-mxc-e2e-windows-25h2-wsl2 pool (WSL2 baked iβ¦
huzaifa-msft ba633ed
ci(wslc): make workflow bash-free for the bare 1ES client image
huzaifa-msft cf66010
ci(wslc): probe WSL2 feature state before build (image verification)
huzaifa-msft cbf4264
added additional package manager support for linux prereq installs
theelliotm 0038997
fixing debain package manager issue
theelliotm bc0e731
Merge remote-tracking branch 'origin/main' into user/emichlin/validatβ¦
theelliotm 8dd44ac
ci(wslc): enable WSL2 on stateful pool VM (enable + reboot if needed)
huzaifa-msft 7cbb52f
ci(wslc): make WSL2 probe non-fatal so prep step runs
huzaifa-msft 28ee1d2
ci(wslc): fix prep step PowerShell parse error (plain ASCII, simpler β¦
huzaifa-msft ceef61f
force github to run action after downtime
theelliotm d40bf3d
added support for more microvm, lxc. and hyperlight. they should failβ¦
theelliotm 428ac49
testing microvm on 23H2 with additional optional features. also correβ¦
theelliotm 4ca3db1
Testing process-t1 on unsuitable host. And network test for debian.
theelliotm 7aa0d46
Added additional opt. features to Windows for WSLC and microvm support.
theelliotm cb51bdd
fix microvm install for windows
theelliotm c3fcc0a
added a ton of diagnosis and redundancy to microvm tests to determineβ¦
theelliotm daed2e6
experimenting with cold start for nanvix
theelliotm 957f953
additional nanvix debugging. last effort
theelliotm e758336
WHP probe
theelliotm aae46a2
last ditch effort to see why nanvix is failing
theelliotm b6973d9
Merge remote-tracking branch 'origin/user/modanish/1es-github-runner-β¦
theelliotm 223fd43
adding limited WSLC support, changing how windows hosts are setup
theelliotm c30e47b
cold start for microvm on windows, and adding wslc test suite
theelliotm c8bdb8a
fix incorrect pwsh ver call
theelliotm de534cf
removed wslc cargo tests
theelliotm af7134b
installing wsl
theelliotm 5430ce5
disabling support for microvm, for now
theelliotm 3686d6b
prerelease windows tests
theelliotm 57b2f42
added wsl install, modified isolation session test script
theelliotm 23ed9e6
prev. commit, continued
theelliotm e1c05eb
Merge remote-tracking branch 'origin/main' into user/emichlin/validatβ¦
theelliotm c3930fa
Adjusting WSLC install
theelliotm 68a96e1
made changes to images for wslc and isolation session
theelliotm bb27b47
force new test
theelliotm ccd5bbd
force again
theelliotm 9c95106
force attempt 3
theelliotm 3d002a1
pausing isolation session before getting feedback, and last effort toβ¦
theelliotm fdbf531
correcting order of wsl commands
theelliotm 49ba4e4
trying with wsl.exe
theelliotm a8ab3c1
reverted some WSL changes.
theelliotm 6d71a80
quick redattempt with a few options to install WSL
theelliotm 2f708e8
testing pre-release build for WSLC
theelliotm 2d8f16e
getting ready for PR by double-checking lxc and bubblewrap
theelliotm 8de15cb
Removing PR trigger
theelliotm adec4f1
Removed temp macOS testing suite
theelliotm 990357c
Cleanup unnecessary changes + address feedback
theelliotm 56c4b45
Merge remote-tracking branch 'origin/main' into user/emichlin/validatβ¦
theelliotm 7f0629b
update copilot documentation + fix microvm still causing issues
theelliotm f6f5936
adding cargo e2e tests back, for now
theelliotm e9229de
Running full nightly matrix
theelliotm 8a37be4
Fixing action SHAs
theelliotm 3cd8a62
Added additional documentation
theelliotm f18c791
Addressed PR feedback, removed handler-backend distinction
theelliotm f5c161b
Don't greenlight prereq skips
theelliotm 8752bed
moved wxc-ui-probe and wxc-test-driver to optional binaries. removed β¦
theelliotm 63193e0
Merge branch 'user/emichlin/validation-infra-lite' of https://github.β¦
theelliotm d53b85b
moved wxc-ui probe and wxc-test-driver to optional binaries. removed β¦
theelliotm 7af3059
testing with baked-in EPEL
theelliotm f7445c6
re-enabling EPEL download
theelliotm 1376cb9
Merge branch 'main' into user/emichlin/validation-infra-lite
theelliotm 3e9b9a6
Addressing final feedback
theelliotm 8235c91
Merge branch 'user/emichlin/validation-infra-lite' of https://github.β¦
theelliotm File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -18,6 +18,7 @@ concurrency: | |
| cancel-in-progress: true | ||
|
|
||
| permissions: | ||
| actions: read | ||
| contents: read | ||
|
|
||
| jobs: | ||
|
|
||
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,173 @@ | ||
| name: Create Validation Test Matrix | ||
|
|
||
| on: | ||
| workflow_call: | ||
| inputs: | ||
| plan: | ||
| description: Test plan to resolve. | ||
| required: true | ||
| type: string | ||
|
|
||
| permissions: | ||
| actions: read | ||
| contents: read | ||
|
|
||
| jobs: | ||
| resolve: | ||
| name: resolve "${{ inputs.plan }}" test matrix | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| windows: ${{ steps.matrix.outputs.windows }} | ||
| linux: ${{ steps.matrix.outputs.linux }} | ||
| macos: ${{ steps.matrix.outputs.macos }} | ||
| has_windows: ${{ steps.matrix.outputs.has_windows }} | ||
| has_linux: ${{ steps.matrix.outputs.has_linux }} | ||
| has_macos: ${{ steps.matrix.outputs.has_macos }} | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | ||
|
|
||
| - name: Resolve test combinations | ||
| id: matrix | ||
| run: node scripts/ci/resolve-validation-test-matrix.mjs --plan "${{ inputs.plan }}" | ||
|
|
||
| windows: | ||
| name: ${{ matrix.os }}, ${{ matrix.architecture }}, ${{ matrix.backend }} | ||
| needs: resolve | ||
| if: needs.resolve.outputs.has_windows == 'true' | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: ${{ fromJSON(needs.resolve.outputs.windows) }} | ||
| runs-on: [ self-hosted, "1ES.Pool=${{ matrix.pool }}", "JobId=mxc-e2e-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ] | ||
| timeout-minutes: 60 | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | ||
|
|
||
| - name: Download ${{ matrix.target }} artifact | ||
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: artifacts/bin | ||
|
|
||
| - name: Prepare backend prerequisites | ||
| timeout-minutes: 15 | ||
| shell: pwsh | ||
| run: | | ||
|
bbonaby marked this conversation as resolved.
|
||
| & ./scripts/ci/prepare-windows-host.ps1 ` | ||
| -Backend '${{ matrix.backend }}' ` | ||
| -BinaryDirectory (Join-Path $env:GITHUB_WORKSPACE 'artifacts\bin') *>&1 | | ||
| Tee-Object -FilePath (Join-Path $env:RUNNER_TEMP 'mxc-ci.log') -Append | ||
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | ||
|
|
||
| - name: Run backend tests | ||
| # A backend that hangs (rather than failing) would otherwise burn the | ||
| # full job timeout. Fail fast enough to keep the log useful. | ||
| timeout-minutes: 45 | ||
| shell: pwsh | ||
| run: | | ||
| & ./tests/scripts/run_ci_backend_tests.ps1 ` | ||
| -Backend '${{ matrix.backend }}' ` | ||
| -BinaryDirectory (Join-Path $env:GITHUB_WORKSPACE 'artifacts\bin') ` | ||
| -Architecture '${{ matrix.architecture }}' *>&1 | | ||
| Tee-Object -FilePath (Join-Path $env:RUNNER_TEMP 'mxc-ci.log') -Append | ||
| if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } | ||
|
|
||
| - name: Upload failure logs | ||
| if: failure() || cancelled() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | ||
| with: | ||
| name: logs-${{ inputs.plan }}-${{ matrix.os }}-${{ matrix.architecture }}-${{ matrix.backend }}-${{ github.run_attempt }} | ||
| path: | | ||
| ${{ runner.temp }}/mxc-ci.log | ||
| ${{ runner.temp }}/mxc-wpc-tests/logs | ||
| ${{ runner.temp }}/WinProcessContainer-Tests.results.* | ||
| ${{ runner.temp }}/mxc_concurrent_oneshot | ||
| if-no-files-found: ignore | ||
| retention-days: 7 | ||
|
|
||
| linux: | ||
| name: ${{ matrix.os }}, ${{ matrix.architecture }}, ${{ matrix.backend }} | ||
| needs: resolve | ||
| if: needs.resolve.outputs.has_linux == 'true' | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: ${{ fromJSON(needs.resolve.outputs.linux) }} | ||
| runs-on: [ self-hosted, "1ES.Pool=${{ matrix.pool }}", "JobId=mxc-e2e-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" ] | ||
| timeout-minutes: 60 | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | ||
|
|
||
| - name: Download ${{ matrix.target }} artifact | ||
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: artifacts/bin | ||
|
|
||
| - name: Prepare backend prerequisites | ||
| timeout-minutes: 15 | ||
| shell: bash | ||
| run: | | ||
| set -euo pipefail | ||
| bash scripts/ci/prepare-linux-host.sh \ | ||
| '${{ matrix.backend }}' "$GITHUB_WORKSPACE/artifacts/bin" 2>&1 | | ||
| tee -a "$RUNNER_TEMP/mxc-ci.log" | ||
|
|
||
| - name: Run backend tests | ||
| timeout-minutes: 45 | ||
| shell: bash | ||
| run: | | ||
| set -euo pipefail | ||
| if [[ '${{ matrix.backend }}' == 'lxc' ]]; then | ||
| sudo --preserve-env=RUNNER_TEMP bash tests/scripts/run_ci_backend_tests.sh \ | ||
| '${{ matrix.backend }}' "$GITHUB_WORKSPACE/artifacts/bin" 2>&1 | | ||
| tee -a "$RUNNER_TEMP/mxc-ci.log" | ||
| else | ||
| bash tests/scripts/run_ci_backend_tests.sh \ | ||
| '${{ matrix.backend }}' "$GITHUB_WORKSPACE/artifacts/bin" 2>&1 | | ||
| tee -a "$RUNNER_TEMP/mxc-ci.log" | ||
| fi | ||
|
|
||
| - name: Upload failure logs | ||
| if: failure() || cancelled() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | ||
| with: | ||
| name: logs-${{ inputs.plan }}-${{ matrix.os }}-${{ matrix.architecture }}-${{ matrix.backend }}-${{ github.run_attempt }} | ||
| path: ${{ runner.temp }}/mxc-ci.log | ||
| if-no-files-found: ignore | ||
| retention-days: 7 | ||
|
|
||
| macos: | ||
| name: ${{ matrix.os }}, ${{ matrix.backend }} | ||
| needs: resolve | ||
| if: needs.resolve.outputs.has_macos == 'true' | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: ${{ fromJSON(needs.resolve.outputs.macos) }} | ||
| runs-on: ${{ matrix.runner }} | ||
| timeout-minutes: 60 | ||
| steps: | ||
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 | ||
|
|
||
| - name: Download ${{ matrix.target }} artifact | ||
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: artifacts/bin | ||
|
|
||
| - name: Run backend tests | ||
| timeout-minutes: 60 | ||
| shell: bash | ||
| run: | | ||
| set -euo pipefail | ||
| chmod +x artifacts/bin/mxc-exec-mac artifacts/bin/unix-test-proxy | ||
| bash tests/scripts/run_ci_backend_tests.sh \ | ||
| '${{ matrix.backend }}' "$GITHUB_WORKSPACE/artifacts/bin" 2>&1 | | ||
| tee "$RUNNER_TEMP/mxc-ci.log" | ||
|
|
||
| - name: Upload failure logs | ||
| if: failure() || cancelled() | ||
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | ||
| with: | ||
| name: logs-${{ inputs.plan }}-${{ matrix.os }}-${{ matrix.architecture }}-${{ matrix.backend }}-${{ github.run_attempt }} | ||
| path: ${{ runner.temp }}/mxc-ci.log | ||
| if-no-files-found: ignore | ||
| retention-days: 7 | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.