Skip to content

Split x64/arm64 builds into parallel pipeline stages#14497

Open
benhillis wants to merge 2 commits intomasterfrom
user/benhill/split_pipeline
Open

Split x64/arm64 builds into parallel pipeline stages#14497
benhillis wants to merge 2 commits intomasterfrom
user/benhill/split_pipeline

Conversation

@benhillis
Copy link
Copy Markdown
Member

@benhillis benhillis commented Mar 21, 2026

Restructure the CI/CD pipeline to build x64 and arm64 in parallel instead of sequentially, reducing end-to-end build time.

Pipeline shapes

PR: build_x64 ∥ build_arm64 → test (tests use installer.msix directly)
Nightly: build_x64 ∥ build_arm64 → package → test (dev-cert signed bundle)
Release: build_x64 ∥ build_arm64 → package → test (ESRP-signed bundle)

Key changes

  • Extract shared build-job.yml template parameterized by platform
  • Add package-stage.yml that creates msixbundle from both platform artifacts, ESRP-signs for release, dev-cert signs for nightly
  • PR tests run immediately after x64 build using installer.msix (no package stage, no bundle needed)
  • Release/nightly tests wait for the package stage and test the real signed bundle that gets published
  • CloudTest configs are parameterized: release tests pull the bundle from the [package] artifact, PR tests use installer.msix from [drop]
  • arm64 + formatting checks always run in parallel with x64 but don't block the PR test gate
  • CodeQL runs in the arm64 stage (off the critical path)
  • flight-stage and nuget-stage updated for new stage names

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR restructures the Azure Pipelines build flow to run x64 and arm64 builds in parallel so test execution can start as soon as the x64 build finishes, while packaging waits for both architectures.

Changes:

  • Split the monolithic build stage into parallel build_x64 and build_arm64 stages, and update test dependencies to only wait for build_x64.
  • Introduce a new package stage to produce the msixbundle/appxupload and NuGet artifacts after both builds complete.
  • Update CloudTest setup to install and test using the x64 MSI instead of the combined msixbundle.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
tools/test/test-setup.ps1 Adds MSI install/uninstall support alongside existing MSIX setup logic for tests.
cloudtest/TestGroup.xml.in Switches CloudTest inputs from msixbundle to x64 MSI.
.pipelines/build-stage.yml Splits build into parallel x64/arm64 stages and updates artifact outputs.
.pipelines/package-stage.yml New packaging stage to bundle outputs from both builds and create NuGet/appxupload artifacts.
.pipelines/test-stage.yml Makes tests depend only on build_x64.
.pipelines/flight-stage.yml Updates flight stage dependencies and artifact source to the new package stage.
.pipelines/nuget-stage.yml Updates NuGet publish stage to depend on/package artifacts from the new package stage.
.pipelines/wsl-build-pr.yml Wires the new package stage into the PR pipeline.
.pipelines/wsl-build-pr-onebranch.yml Wires the new package stage into the OneBranch PR pipeline.
.pipelines/wsl-build-nightly-onebranch.yml Wires the new package stage into the nightly OneBranch pipeline.
.pipelines/wsl-build-release-onebranch.yml Wires the new package stage into the release OneBranch pipeline.

Copilot AI review requested due to automatic review settings March 21, 2026 19:49
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (1)

.pipelines/build-stage.yml:60

  • In the new checks stage, the first job is declared as - job: without an identifier. Azure Pipelines requires each job to have a name (e.g., job: checks) and this will fail YAML compilation as-is.
    jobs:
      - job:

        displayName: "Formatting & localization checks"
        timeoutInMinutes: 30

@benhillis benhillis force-pushed the user/benhill/split_pipeline branch 2 times, most recently from 3f8148b to ee56eac Compare March 21, 2026 20:25
Copilot AI review requested due to automatic review settings March 21, 2026 20:25
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.

Copilot AI review requested due to automatic review settings March 23, 2026 17:18
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

@benhillis benhillis marked this pull request as draft March 23, 2026 18:06
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 168b58b to 83741bf Compare March 23, 2026 20:17
@benhillis benhillis requested a review from Copilot March 23, 2026 20:21
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Copilot AI review requested due to automatic review settings March 30, 2026 20:10
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch 2 times, most recently from 2792cbd to 769b30c Compare March 30, 2026 20:10
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 769b30c to 1c1c0ce Compare March 30, 2026 20:32
Copilot AI review requested due to automatic review settings March 30, 2026 21:09
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 1c1c0ce to 60653db Compare March 30, 2026 21:09
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.

@benhillis benhillis force-pushed the user/benhill/split_pipeline branch 2 times, most recently from c2105c0 to 078ce32 Compare March 31, 2026 00:54
Copilot AI review requested due to automatic review settings March 31, 2026 00:54
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 078ce32 to c2c647d Compare March 31, 2026 00:54
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from c2c647d to e9d452f Compare March 31, 2026 01:23
Copilot AI review requested due to automatic review settings March 31, 2026 05:40
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch 2 times, most recently from 6f1f719 to 081385e Compare March 31, 2026 05:40
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Restructure the CI/CD pipeline to build x64 and arm64 in parallel
instead of sequentially, reducing end-to-end build time.

Pipeline shapes:
- PR: build_x64 ∥ build_arm64 → test (uses installer.msix directly)
- Nightly: build_x64 ∥ build_arm64 → package → test (dev-cert bundle)
- Release: build_x64 ∥ build_arm64 → package → test (ESRP-signed bundle)

Key changes:
- Extract shared build-job.yml template parameterized by platform
- Add package-stage.yml that creates msixbundle from both platform
  artifacts, ESRP-signs for release, dev-cert signs for nightly
- PR tests run immediately after x64 build using installer.msix
  (no package stage, no bundle needed)
- Release/nightly tests wait for the package stage and test the real
  signed bundle that gets published
- CloudTest configs are parameterized: release tests pull the bundle
  from the [package] artifact, PR tests use installer.msix from [drop]
- arm64 + formatting checks always run in parallel with x64 but don't
  block the PR test gate
- CodeQL runs in the arm64 stage (off the critical path)
- flight-stage and nuget-stage updated for new stage names
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 081385e to 45e246b Compare March 31, 2026 17:05
Copilot AI review requested due to automatic review settings March 31, 2026 17:10
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

@benhillis benhillis marked this pull request as ready for review March 31, 2026 19:35
@benhillis benhillis force-pushed the user/benhill/split_pipeline branch from 44e026c to bc7c330 Compare March 31, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants