Skip to content

chore: move release publishing to Azure pipelines - #7674

Open
Jane Chu (janechu) wants to merge 21 commits into
mainfrom
chore/ado-release-pipelines
Open

chore: move release publishing to Azure pipelines#7674
Jane Chu (janechu) wants to merge 21 commits into
mainfrom
chore/ado-release-pipelines

Conversation

@janechu

@janechu Jane Chu (janechu) commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

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/, keeping
release credentials and registry publication in Azure:

  • FAST - CD Build runs on pushes to main, selects every publishable workspace
    whose ${name}_v${version} tag is missing, and preserves that exact comma-separated
    selection through npm and paired Rust crate packing.
  • The build produces a strict release manifest containing source provenance, package
    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 - CD validates the selected build and artifacts, creates annotated release
    tags at the validated commit, publishes npm and crates.io assets, records
    deployed/<release-tag> markers, and then creates package-specific GitHub Releases.
  • Git tag operations use targeted remote queries and isolated refs with race-safe,
    same-commit idempotency. GitHub Release retries skip only complete releases and fail
    explicitly when an existing release is malformed or missing manifest assets.
  • Adds queue-time validation mode, shallow tag-free checkouts, run-number package
    counts, strict npm pack --json validation, and regression coverage for pipeline
    ordering, output-variable wiring, release-check wiring, package/task coverage, and
    structured Azure errors.
  • Removes the superseded GitHub release workflow and scripts, and updates contributor,
    workflow, testing, and Azure pipeline documentation for the new release process.

👩‍💻 Reviewer Notes

  • The Azure definitions must be registered with the exact names FAST - CD Build
    and FAST - CD, with the pipeline resource and service connections configured as
    documented in .ado/pipelines/README.md.
  • Release tags are intentionally created before registry publication. If registry
    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.
  • End-to-end dry runs can use validationMode: true in both pipelines. Validation mode
    builds and verifies already-tagged releases without creating tags, publishing
    packages, adding deployment markers, or creating GitHub Releases.

📑 Test Plan

  • npm run build
  • npm run test
  • npm run test:scripts — 43 tests pass.
  • npm run biome:check
  • npm run checkchange
  • Parsed the new and modified Azure pipeline YAML files successfully.

✅ Checklist

General

  • I have included a change request file using $ npm run change
  • I have added tests for my changes.
  • I have tested my changes.
  • I have updated the project documentation to reflect my changes.
  • I have read the CONTRIBUTING documentation and followed the standards for this project.

Agents

  • I have linked to an existing issue in this project that this change addresses
  • I have read the skills
  • I have read the DESIGN.md file(s) in packages relevant to my changes
  • I have updated the DESIGN.md file(s) in packages relevant to my changes

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
@janechu
Jane Chu (janechu) requested a lite review from Copilot August 6, 2026 20:57

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@janechu
Jane Chu (janechu) requested a balanced review from Copilot August 6, 2026 21:34

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Jane Chu (janechu) and others added 16 commits August 11, 2026 11:23
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

@janechu Jane Chu (janechu) left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Requesting changes for release-path consistency and retry safety.

Comment thread .ado/pipelines/azure-pipelines-cd.yml
Comment thread build/scripts/check-github-releases.mjs
Comment thread build/scripts/prepare-release-artifacts.mjs Outdated

@janechu Jane Chu (janechu) left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

A few remaining release-validation guardrails should be closed before landing.

Comment thread build/scripts/release-artifacts.test.mjs
Comment thread build/scripts/validate-release-artifacts.mjs Outdated

@janechu Jane Chu (janechu) left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

One remaining release-pipeline consistency gap should be addressed.

Comment thread .ado/pipelines/azure-pipelines-cd.yml
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