ci: harden publish path and add release-automation helpers - #17345
Merged
Conversation
…ithRebaseRetry spec
…-check, retry guard, docs)
…try error handling) - Replace execa (reject:true) with child_process.spawn for publish calls so the non-zero-exit retry and 'landed despite error' recovery are actually reachable - isVersionPublished: distinguish 404 (not published) from other statuses (throw) instead of conflating registry errors with 'not published' - Make the pre-publish idempotency check non-fatal (warn + proceed on error) - Detect npm EPUBLISHCONFLICT from publish output as an authoritative already-published signal, short-circuiting a doomed retry
…itHubRelease Only PATCH a matched release when it is still a draft; a matching published release means the tag already shipped, so throw rather than clobber its live notes (the caller falls back to the manual-link path).
Releases list newest-first by created_at and a draft we would update is created recently, so it sits on the first page. Scan only the newest page (was an unbounded walk of the full ~550-release history) and warn if a full page has no match, keeping the lookup O(1) as the release history grows.
The release URL is written to stdout, so auto-opening a browser is non-essential and could throw on a headless host (aborting the release before the publish confirm). Drop the option, the open() call, the CLI flag, and the now-unused 'open' dependency.
Assert a JSON object is present before slicing so a turbo error or flag change surfaces diagnosably instead of an opaque 'Unexpected end of JSON input'.
# Conflicts: # tools/releaser/src/lib/publishList.ts
Contributor
📦 esbuild Bundle Analysis for payloadThis analysis was generated by esbuild-bundle-analyzer. 🤖
Largest pathsThese visualization shows top 20 largest paths in the bundle.Meta file: packages/next/meta_index.json, Out file: esbuild/index.js
Meta file: packages/payload/meta_index.json, Out file: esbuild/index.js
Meta file: packages/payload/meta_shared.json, Out file: esbuild/exports/shared.js
Meta file: packages/richtext-lexical/meta_client.json, Out file: esbuild/exports/client_optimized/index.js
Meta file: packages/ui/meta_client.json, Out file: esbuild/exports/client_optimized/index.js
Meta file: packages/ui/meta_shared.json, Out file: esbuild/exports/shared_optimized/index.js
DetailsNext to the size is how much the size has increased or decreased compared with the base branch of this PR.
|
denolfe
marked this pull request as ready for review
July 17, 2026 19:56
Member
Author
|
✅ Successfully published a pre-release off of this branch |
paulpopus
approved these changes
Jul 20, 2026
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.
Phase 1 of the release-automation rework for v4. It makes changes to the release tooling that are safe to merge while the current release flow keeps running. Some new helpers are added but do not have callers yet. Entry scripts and workflows follow in later phases.
Resolves PYLD-3215
Motivation
The release process runs locally and interactively today. That gates releases on a single maintainer and a manual branch freeze. The target design splits the bump from the publish across two workflows joined by a git tag. It also moves publishing to tokenless npm OIDC. Migrating is time-sensitive: npm is deprecating the token path the current flow relies on. This phase prepares the tooling without altering the live flow.
Key Changes
publishSynctopublish. The prior unused parallelpublishwas removed.Design Decisions
References / Links