Skip to content

Unified CI/PR Pipeline - #15848

Merged
Vladimir Morozov (vmoroz) merged 2 commits into
microsoft:mainfrom
vmoroz:PR/new-PR-and-CI-pipelines
Mar 26, 2026
Merged

Unified CI/PR Pipeline#15848
Vladimir Morozov (vmoroz) merged 2 commits into
microsoft:mainfrom
vmoroz:PR/new-PR-and-CI-pipelines

Conversation

@vmoroz

@vmorozVladimir Morozov (vmoroz) commented Mar 26, 2026

Copy link
Copy Markdown
Member

Description

Type of Change

  • New feature (non-breaking change which adds functionality)
  • Automation (AI changes or Github Actions to reduce effort of manual tasks)

Why

The existing six Azure DevOps pipelines (publish.yml, continuous.yml, compliance.yml, prepare-release-bot.yml, windows-vs-pr.yml, windows-vs-pr-secure.yml) evolved independently, causing config drift between CI and PR builds. CI built with .Publish.slnf (shipping only) while PR built with full .sln (tests only), meaning we never tested the binaries we shipped. Maintaining six pipelines with overlapping logic was error-prone.

What

Consolidated into two entry points (ci-pipeline.yml, pr-pipeline.yml) sharing a single build-template.yml. A buildEnvironment parameter (Continuous / PullRequest) controls CI-only features (ESRP signing, release tagging).

Key changes:

  • Unified build+test jobs — new desktop-single.yml and universal-single.yml step templates build the full .sln, run tests, and stage shipping artifacts in one pass. We test what we ship.
  • Inline Setup stage — auto-detects release vs developer builds, runs beachball bump, publishes version variables.
  • SDL via 1ES template — removed manual compliance.yml and prebuild/postbuild compliance templates. CredScan, BinSkim, Component Governance, CodeQL, and ESLint configured via the sdl: block.
  • CLI init simplified — downloads final signed NuGet artifact instead of re-packing from raw build outputs.
  • Release tagging — CI tags source commit (react-native-windows_v<version>) on successful RELEASE builds.
  • PowerShell modernization — replaced all 41 - powershell: with - pwsh: and added pwsh: true to all 13 active PowerShell@2 tasks.
  • Node.js 24.x — updated all pipeline Node.js references from 22.x to 24.x.
  • Cleanup — removed SecurePullRequest build environment, unused artifactName2 parameter, Attack Surface Analyzer (never produced actionable findings for a library package).

See docs/build-pipelines.md for the new pipeline architecture.

Files created

FilePurpose
.ado/ci-pipeline.ymlCI entry point
.ado/pr-pipeline.ymlPR entry point
.ado/build-template.ymlShared build/test/pack template
.ado/jobs/desktop-single.ymlUnified Desktop build+test steps
.ado/jobs/universal-single.ymlUnified Universal build+test steps
docs/build-pipelines.mdPipeline architecture documentation

Files deleted

FileReason
.ado/compliance.ymlReplaced by 1ES SDL
.ado/continuous.ymlReplaced by ci-pipeline.yml
.ado/stages.ymlLogic moved to build-template.yml
.ado/windows-vs-pr-secure.ymlReplaced by pr-pipeline.yml
.ado/jobs/setup.ymlInlined into build-template.yml
.ado/jobs/universal.ymlReplaced by universal-single.yml
.ado/jobs/desktop.ymlReplaced by desktop-single.yml
.ado/jobs/nuget-desktop.ymlRedundant with RNWNuget job
.ado/jobs/attack-surface-analyzer.ymlNot actionable for library packages
.ado/templates/run-compliance-prebuild.ymlReplaced by 1ES SDL
.ado/templates/run-compliance-postbuild.ymlReplaced by 1ES SDL
docs/attack-surface-analyzer.mdRemoved with ASA

Backward-compat copies (for *-stable branches)

FileCopies
.ado/publish.ymlci-pipeline.yml
.ado/windows-vs-pr.ymlpr-pipeline.yml

These can be deleted once all stable branches pick up build-template.yml.

Screenshots

N/A — pipeline infrastructure change, no UI changes.

Testing

  • CI pipeline validated end-to-end in microsoft/ReactNative ADO project (Setup, Build, Tests, CLI stages all pass).
  • PR pipeline validation pending on test PR in ms/react-native-windows.

Changelog

Should this change be included in the release notes: no

Internal pipeline infrastructure change. No user-facing behavior changes.

Microsoft Reviewers: Open in CodeFlow

@vmoroz
Vladimir Morozov (vmoroz) merged commit 68f49d6 into microsoft:mainMar 26, 2026
33 checks passed
@vmoroz
Vladimir Morozov (vmoroz) deleted the PR/new-PR-and-CI-pipelines branch March 26, 2026 05:26
Vladimir Morozov (vmoroz) added a commit to vmoroz/microsoft-react-native-windows that referenced this pull request Mar 26, 2026
Vladimir Morozov (vmoroz) added a commit to vmoroz/microsoft-react-native-windows that referenced this pull request Mar 28, 2026
Vladimir Morozov (vmoroz) added a commit to vmoroz/microsoft-react-native-windows that referenced this pull request Mar 28, 2026
Vladimir Morozov (vmoroz) added a commit to vmoroz/microsoft-react-native-windows that referenced this pull request Mar 30, 2026
Vladimir Morozov (vmoroz) added a commit that referenced this pull request Mar 30, 2026
* Unified CI/PR Pipeline (#15848)
* Fix tagging and improve security (#15860)
* Increase timeout for CodeQL
Vladimir Morozov (vmoroz) added a commit that referenced this pull request Mar 30, 2026
* Fix release pipeline (#15821)
* Unified CI/PR Pipeline (#15848)
* Fix tagging and improve security (#15860)
* Use double quotes
* Increase timeout for CodeQL
Sign up for freeto 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

@vmoroz@Saadnajmi