Skip to content

[15.5.x] Release pipeline updates - #95161

Merged
eps1lon merged 5 commits into
next-15-5from
sebbie/backport-release-pipeline-to-next-15-5
Jun 30, 2026
Merged

[15.5.x] Release pipeline updates#95161
eps1lon merged 5 commits into
next-15-5from
sebbie/backport-release-pipeline-to-next-15-5

Conversation

@eps1lon

@eps1lon eps1lon commented Jun 25, 2026

Copy link
Copy Markdown
Member

Backports the following release-pipeline PRs from canary to next-15-5, one commit per PR. In the past, a diverging release pipeline had bugs that were blocking urgent releases. Generally, we should immediately backport release pipeline changes. Since the new pipeline has been tested (@next/swc-wasm-* is out, @preview is working), it's time to backport.

Convergence with canary

next-15-5 carried an experimental, unused changesets-based release path. To keep a consistent release pipeline across canary/next-16-2/next-15-5, these commits also discard it:

  • removed the changesets publish steps (changesets/action, pnpm ci:publish, Slack notification) and the legacy scripts/publish-native.js step
  • removed the __NEW_RELEASE env and the new-release deploy-target branch
  • converged the publish job to a single scripts/publish-release.js + pnpm publish summary upload

Adapted for 15-5: native dir crates/napi/npm (not canary's crates/next-napi-bindings), next-15-5 branch refs, and the RELEASE_CHECK variable name.

Leftover (not removed here): .changeset/, scripts/release/*, and @changesets/* / ci:publish in package.json are now unused — can be cleaned up separately if desired.

Not runtime-tested (release pipeline) — verified via node --check and prettier --check.

test plan

Preparation regardless of release/semver type
pnpm install && \
pnpm build && \
pnpm dlx turbo@2.9.4 run build-native-release -- --target aarch64-apple-darwin && \
strip -x packages/next-swc/native/next-swc.*.node && \
ls -lh packages/next-swc/native/ && \
rm -rf crates/wasm/pkg crates/wasm/pkg-nodejs && \
pnpm --filter=@next/swc build-wasm --target nodejs && \
mv crates/wasm/pkg crates/wasm/pkg-nodejs && \
rm -rf crates/wasm/pkg crates/wasm/pkg-web && \
pnpm --filter=@next/swc build-wasm --target web && \
mv crates/wasm/pkg crates/wasm/pkg-web && \
ls crates/wasm/pkg-nodejs crates/wasm/pkg-web
$ NEXT_SKIP_NATIVE_POSTINSTALL=1 node scripts/start-release.js --release-type stable --semver-type patch --dry-run
[...]
> lerna "version" "patch" "--force-publish" "-y" "--no-push" "--allow-branch" "**"
[...]
Changes:
 - create-next-app: 15.5.19 => 15.5.20
[...]
$ git log --oneline -1
11e2c54ad4 (HEAD -> sebbie/backport-release-pipeline-to-next-15-5, tag: v15.5.20) v15.5.20
$ node scripts/publish-release.js --dry-run
Dry run: not publishing to npm
Publishing 15.5.20
Publishing as "backport" dist tag...
[...]
+ @next/react-refresh-utils@15.5.20
[...]

eps1lon and others added 5 commits June 25, 2026 13:19
…94912)

#94622 tried to be more strict
with when a release is considered healthy. However, `@next/swc-wasm-web`
is not enrolled in Trusted Publishing and blocks the release train.

This PR restores the behavior for `@next/swc-wasm-*` packages prior to
#94622 i.e. we continue the
release train even if any `@next/swc-wasm-*` fails. Other NAPI bindings
will continue to block the release train if they fail to publish.

The bail vs no-bail behavior is controlled with a repository variable so
that we can mor easily test if `@next/swc-wasm-web` is enrolled in
Trusted Publishing.

(cherry picked from commit 47c8c6f)
That way we can push multiple commits when doing a release. For
canaries, nothing will change.

In a follow-up, we'll start cutting `@preview` from the `canary` branch.
To support that case, we need to immediately revert the version in
`lerna.json`. We shouldn't push commits indidually to avoid having an
incomplete release if something else is pushed between `@preview`
version bumps and `@canary` version reverts.

After merge, the next canary release should publish from the
`v…-canary.N` tag run (`deploy-target = production`), while the canary
branch push for the same commit shows `skipped` — exactly one production
run per release.

<!-- NEXT_JS_LLM_PR -->

(cherry picked from commit c8ff8b1)
@github-actions

github-actions Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Tests Passed

Commit: 35fc2f7

@eps1lon eps1lon changed the title [backport] Release pipeline updates (15.5.x) [15.5.x] Release pipeline updates Jun 25, 2026
@eps1lon
eps1lon requested a review from bgw June 25, 2026 12:32
@eps1lon
eps1lon marked this pull request as ready for review June 25, 2026 12:32
@eps1lon
eps1lon merged commit 99ebaab into next-15-5 Jun 30, 2026
376 of 381 checks passed
@eps1lon
eps1lon deleted the sebbie/backport-release-pipeline-to-next-15-5 branch June 30, 2026 15:55
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.

3 participants