Skip to content

[CI] Support pre-provisioned images, migrate CI scripts, add macOS host prep, support T3-Workloads - #1089

Open
Elliot (theelliotm) wants to merge 47 commits into
mainfrom
user/emichlin/validation-infra-3
Open

[CI] Support pre-provisioned images, migrate CI scripts, add macOS host prep, support T3-Workloads#1089
Elliot (theelliotm) wants to merge 47 commits into
mainfrom
user/emichlin/validation-infra-3

Conversation

@theelliotm

@theelliotmElliot (theelliotm) commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

📖 Description

Images now come pre-provisioned with pwsh, git, node, npm,
npx, python, pip, dotnet, az, gh, openssl, plus nuget, winapp,
winget, scoop, and choco on Windows only, and brew on MacOS only.

All three OS host prep scripts (including the new MacOS script) verify the pre-provisioned software
and install any remaining software the provisioning step isn't capable of installing (e.g. winget) or is only relevant for
the backend being tested (e.g. bwrap or lxc)

T3-Workloads now runs in CI

T3-Workloads.ps1 now runs during the Windows process-t3 CI workflows. This script runs real-world E2E tests and submits results. This is in preparation for all backends to have tests created both internally and from industry partners that depend on a variety of programs and interpreters. T3-Workloads.ps1 now also has an optional parameter that overrides the dependency on pwsh 7.7 while pwsh 7.7 is still in preview.

Additional Changes

  • Added distinct mac host prep script: prepare-macos-host.sh
  • Moved tests/scripts/run_ci_backend_tests.{ps1,sh}scripts/ci/run_backend_validation_tests.{ps1,sh}

🔍 Validation

Ran the nightly CI workflow, which covers all supported OS versions and backends. Separately run a dummy MacOS test. All now properly inventory installed software.

✅ Checklist

📋 Issue Type

  • Bug fix
  • Feature
  • Task
Microsoft Reviewers: Open in CodeFlow

Elliot (theelliotm)and others added 30 commits August 17, 2026 16:14
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CopilotAI balanced review requested due to automatic review settings September 2, 2026 22:03
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@microsoft-github-policy-servicemicrosoft-github-policy-serviceBot added the Copilot-Instructions PR modifies Copilot instruction files (.github/copilot-instructions.md or .github/instructions/) label Sep 2, 2026
@theelliotm
Elliot (theelliotm) marked this pull request as ready for review September 2, 2026 22:05
@theelliotm
Elliot (theelliotm) requested a review from a team as a code ownerSeptember 2, 2026 22:05
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Exception masking in the T3 suite and destructive PATH rebuilding can produce incorrect CI outcomes.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Modernizes validation CI for pre-provisioned hosts, relocates dispatchers, adds macOS preparation, and enables T3 workload testing.

Changes:

  • Adds cross-platform tooling inventory and macOS host preparation.
  • Runs real-world workloads for process-t3.
  • Migrates CI dispatchers and updates documentation/matrix configuration.
File summaries
FileDescription
tests/scripts/WinProcessContainer-Tests.ps1Makes OS discovery resilient.
tests/scripts/T3-Workloads.ps1Adds skips, drive-root grants, ownership repair, and JSON results.
tests/scripts/README.mdDocuments suites and relocated dispatchers.
scripts/ci/validation-test-matrix.jsonUpdates canary backends and removes staggering.
scripts/ci/run_backend_validation_tests.shUses relocated test-script paths.
scripts/ci/run_backend_validation_tests.ps1Dispatches T3 workloads and relocated suites.
scripts/ci/prepare-windows-host.ps1Inventories and installs Windows tooling.
scripts/ci/prepare-macos-host.shAdds macOS host preparation.
scripts/ci/prepare-linux-host.shCentralizes package installation and inventories tooling.
docs/playground-limitations.mdDocuments elevated Git repository ownership behavior.
docs/ci-validation-infrastructure.mdDocuments the revised validation infrastructure.
.github/workflows/Validation.Tests.Matrix.Job.ymlUses new preparation and dispatcher paths.
.github/copilot-instructions.mdUpdates repository CI guidance.
Review details

Suppressed comments (1)

docs/ci-validation-infrastructure.md:223

  • This paragraph duplicates lines 209–215 verbatim. Remove the repeated block so the delayed-start guidance appears only once.
Leave the section out (or empty) and every job starts as soon as its runner is
ready. A backend id that no plan schedules is accepted; it just never applies.
Do keep in mind that the runner is held while it sleeps — Actions can't defer
allocating a matrix job, so the wait has to happen inside it. Use no more than
the contention calls for. This spreads simultaneous load and nothing else; a
single download that stalls on its own is unaffected.
  • Files reviewed: 13/13 changed files
  • Comments generated: 2
  • Review effort level: Balanced

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment threadtests/scripts/T3-Workloads.ps1
Comment threadscripts/ci/prepare-windows-host.ps1
CopilotAI review requested due to automatic review settings September 2, 2026 22:22

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The drive-root workaround fails when the workload scratch directory is located outside the system drive.

Review details

Suppressed comments (3)

Previously missed (3) — in code that hasn't changed since the last review.

tests/scripts/T3-Workloads.ps1:335

  • This always grants the system drive, but the ancestor chain being fixed belongs to the caller-selectable $ScratchRoot. If TEMP/RUNNER_TEMP or a manual scratch directory is on D:, W4/W5/W17 still cannot traverse that drive and fail despite -GrantDriveRoot. Keep the system-drive grant needed by pre-7.7 pwsh, but also grant the scratch drive root.
    .github/copilot-instructions.md:106
  • This says jobs never install workload interpreters, but the newly documented Install-PackagedTooling directly below installs winapp and openssl in every Windows job. State that exception here so these repository instructions are internally consistent.
    docs/ci-validation-infrastructure.md:215
  • This paragraph is duplicated verbatim immediately below at lines 217–223. Remove one copy so the backendDelayedStart guidance is not repeated.
  • Files reviewed: 13/13 changed files
  • Comments generated: 0 new
  • Review effort level: Balanced

Comment threadscripts/ci/validation-test-matrix.json
CopilotAI review requested due to automatic review settings September 3, 2026 17:31

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The winget repair cannot find App Installer when it is unregistered for the current CI account.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

scripts/ci/prepare-windows-host.ps1:259

  • The Windows PowerShell fallback repeats the current-user-only package query, so it still cannot locate App Installer when that package is registered for another image account but not the CI account. Use the all-users inventory here as well.
 $package = Get-AppxPackage -Name Microsoft.DesktopAppInstaller -ErrorAction Stop |
  • Files reviewed: 13/13 changed files
  • Comments generated: 2
  • Review effort level: Balanced

Comment threadscripts/ci/prepare-windows-host.ps1
Comment threaddocs/ci-validation-infrastructure.md Outdated
CopilotAI review requested due to automatic review settings September 3, 2026 18:53

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The drive-root workaround targets the system drive rather than the volume containing the configured scratch directory.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details
  • Files reviewed: 13/13 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment threadtests/scripts/T3-Workloads.ps1
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Copilot-InstructionsPR modifies Copilot instruction files (.github/copilot-instructions.md or .github/instructions/)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@theelliotm@adpa-ms