chore: move release publishing to Azure pipelines - #7674
Open
Jane Chu (janechu) wants to merge 21 commits into
Open
chore: move release publishing to Azure pipelines#7674Jane Chu (janechu) wants to merge 21 commits into
Jane Chu (janechu) wants to merge 21 commits into
Conversation
Move release publishing off GitHub Actions and onto two Azure Pipelines under .ado/pipelines/ (FAST CD Build and FAST CD), so release credentials never leave the Azure environment. FAST CD Build packs pending npm tarballs and paired Rust crates on every push to main; FAST CD signs those artifacts, publishes to npm/crates.io, and only then creates the git tag and GitHub release per package, so a publish failure never strands a tag. Replaces the nightly cd-github-releases.yml GitHub Actions workflow and the old download-github-releases.mjs/create-github-releases.mjs pair with pack-pending-releases.mjs, check-release-tags.mjs, read-release-manifest.mjs, and a shared publishable-workspaces.mjs helper. Updates check-publish-pipeline.mjs, CONTRIBUTING.md, and .github/workflows/README.md to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5e1aa6a9-5ec9-4b4a-b088-9181bf93a95d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5e1aa6a9-5ec9-4b4a-b088-9181bf93a95d
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9c779966-eecf-4fcc-a215-679e3cf03da9
Jane Chu (janechu)
left a comment
Collaborator
Author
There was a problem hiding this comment.
Requesting changes for release-path consistency and retry safety.
Jane Chu (janechu)
left a comment
Collaborator
Author
There was a problem hiding this comment.
A few remaining release-validation guardrails should be closed before landing.
Jane Chu (janechu)
left a comment
Collaborator
Author
There was a problem hiding this comment.
One remaining release-pipeline consistency gap should be addressed.
Jane Chu (janechu)
marked this pull request as ready for review
August 12, 2026 18:56
Jane Chu (janechu)
requested review from
Chris Holt (chrisdholt) and
John Kreitlow (radium-v)
as code owners
August 12, 2026 18:56
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Pull Request
📖 Description
Moves FAST release publishing from the nightly GitHub Actions workflow and legacy
root-level Azure definition to two release pipelines under
.ado/pipelines/, keepingrelease credentials and registry publication in Azure:
FAST - CD Buildruns on pushes tomain, selects every publishable workspacewhose
${name}_v${version}tag is missing, and preserves that exact comma-separatedselection through npm and paired Rust crate packing.
metadata, output prefixes, exact asset filenames, and SHA-256 hashes. Packing and
validation reject malformed selections, version drift, partial batches, duplicate
output contracts, and missing, modified, nested, or unexpected files.
FAST - CDvalidates the selected build and artifacts, creates annotated releasetags at the validated commit, publishes npm and crates.io assets, records
deployed/<release-tag>markers, and then creates package-specific GitHub Releases.same-commit idempotency. GitHub Release retries skip only complete releases and fail
explicitly when an existing release is malformed or missing manifest assets.
counts, strict
npm pack --jsonvalidation, and regression coverage for pipelineordering, output-variable wiring, release-check wiring, package/task coverage, and
structured Azure errors.
workflow, testing, and Azure pipeline documentation for the new release process.
👩💻 Reviewer Notes
FAST - CD Buildand
FAST - CD, with the pipeline resource and service connections configured asdocumented in
.ado/pipelines/README.md.publication fails, the release tag remains without a deployment marker; after
diagnosing the failure, a maintainer must delete the affected release tag before
rebuilding and retrying that version.
validationMode: truein both pipelines. Validation modebuilds and verifies already-tagged releases without creating tags, publishing
packages, adding deployment markers, or creating GitHub Releases.
📑 Test Plan
npm run buildnpm run testnpm run test:scripts— 43 tests pass.npm run biome:checknpm run checkchange✅ Checklist
General
$ npm run changeAgents