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

@theelliotm Elliot (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>
Copilot AI 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-service microsoft-github-policy-service Bot 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 owner September 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.

Copilot AI 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
File Description
tests/scripts/WinProcessContainer-Tests.ps1 Makes OS discovery resilient.
tests/scripts/T3-Workloads.ps1 Adds skips, drive-root grants, ownership repair, and JSON results.
tests/scripts/README.md Documents suites and relocated dispatchers.
scripts/ci/validation-test-matrix.json Updates canary backends and removes staggering.
scripts/ci/run_backend_validation_tests.sh Uses relocated test-script paths.
scripts/ci/run_backend_validation_tests.ps1 Dispatches T3 workloads and relocated suites.
scripts/ci/prepare-windows-host.ps1 Inventories and installs Windows tooling.
scripts/ci/prepare-macos-host.sh Adds macOS host preparation.
scripts/ci/prepare-linux-host.sh Centralizes package installation and inventories tooling.
docs/playground-limitations.md Documents elevated Git repository ownership behavior.
docs/ci-validation-infrastructure.md Documents the revised validation infrastructure.
.github/workflows/Validation.Tests.Matrix.Job.yml Uses new preparation and dispatcher paths.
.github/copilot-instructions.md Updates 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 thread tests/scripts/T3-Workloads.ps1
Comment thread scripts/ci/prepare-windows-host.ps1
Copilot AI review requested due to automatic review settings September 2, 2026 22:22

Copilot AI 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 thread scripts/ci/validation-test-matrix.json
Copilot AI review requested due to automatic review settings September 3, 2026 17:31

Copilot AI 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 thread scripts/ci/prepare-windows-host.ps1
Comment thread docs/ci-validation-infrastructure.md Outdated
Copilot AI review requested due to automatic review settings September 3, 2026 18:53

Copilot AI 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 thread tests/scripts/T3-Workloads.ps1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Copilot-Instructions PR 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