ci: switch the satellite packages to the steady-state prerelease bump - #2415
Merged
Conversation
Phase 4a of the v1/v2 branch split. Puts client, react-sdk, react-bindings, react-native-sdk and styling on the 2.0.0-beta line and marks their GitHub releases as prereleases, so a beta does not outrank the real 1.x releases on the repo page. `releaseAs: premajor` is deliberate and temporary. It is what lifts a package from 1.x to 2.0.0-beta.0, and unlike a global --releaseAs flag it is scoped per package, so the 0.x satellites and the dogfood app keep their own version lines. It is strictly single-use: from 2.0.0-beta.0 premajor yields 3.0.0-beta.0, so a follow-up flips these five to `releaseAs: prerelease` once the bootstrap release has published. Steady-state `prerelease` alone cannot do the bootstrap. From 1.42.0 it computes 1.43.0-beta.0, because it only promotes to premajor when the recommended bump is already major, and relying on a breaking commit per package would lift only the package that commit touches. scripts/release/beta-line-config.test.mts guards both halves of the split: the five must share one supported releaseAs and the `beta` preid, and the independent packages must set neither. Verified that it fails on drift, not just vacuously. Note that setting releaseAs disables dependency tracking, so on the beta line each of the five releases only when it has its own qualifying commits. Beta runs therefore need to cover the whole dependency closure; the publish guard added in #2411 catches a mismatch before it reaches npm.
Phase 4b of the v1/v2 branch split. Merge this only after the bootstrap release from #2412 has published 2.0.0-beta.0. `releaseAs: premajor` did its single job of lifting the five packages from 1.x onto the 2.0.0-beta line. Leaving it in place would compute 3.0.0-beta.0 on the next release, so the five move to `releaseAs: prerelease`, which increments beta.N and keeps the 2.0.0 core sticky. The config test no longer accepts `premajor`, so a forgotten flip fails CI rather than silently shipping a new major.
Resolves the conflict left by #2412 being squash-merged: keep this branch's steady-state `prerelease` config and its tightened config test.
The satellites shared a version line between the two release branches, and the collision was already armed: `main` published `video-filters-web@0.9.0` and `react-native-callingx@0.11.1`, and `release-v1` computes exactly those versions next, so whichever published second would have been rejected as an overwrite. Giving `main` a disjoint major fixes it. The six publishable satellites move to a `1.0.0-beta.N` line while `release-v1` keeps them on 0.x. They publish under the `beta` dist-tag, so `latest` still serves 0.x to v1 users, and react-sdk's exact `workspace:*` pin resolves the beta. `preset.preMajor` flips to false on the five that had it. It demotes a bump one level, treating BREAKING CHANGE as minor and feat as patch, which is a sub-1.0.0 assumption and wrong once these are on a 1.x line. `releaseAs: premajor` is temporary here for the same reason as the core packages: it lifts 0.x to 1.0.0-beta.0 and would walk the major forward if left in place, so a follow-up flips these six to `prerelease`.
…nges The satellite peers are declared as literal ranges rather than `workspace:` specs, so yarn does not rewrite them at pack time and they ship verbatim. A prerelease only satisfies a range that carries a prerelease at the same version tuple, so `>=0.1.0` excludes every `1.0.0-beta.N` and would leave consumers of the v2 beta with unmet peer dependencies once the satellites move to their own beta line. Widened to `>=1.0.0-beta.0`, which admits the beta line and the stable 1.x that follows it, so this needs no revert when the satellites graduate. Typed as a fix so the corrected ranges actually reach npm: the published 2.0.0-beta.0 still carries the old `>=0.1.0`, and a `ci` commit is in this package's skipCommitTypes and would not trigger a release.
Merge this only after the satellite bootstrap release has published 1.0.0-beta.0. `releaseAs: premajor` did its single job of lifting the six satellites from 0.x onto the 1.0.0-beta line. Left in place it would compute 2.0.0-beta.0 on the next release, so they move to `releaseAs: prerelease`, which increments beta.N and keeps the 1.0.0 core sticky. The steady-state assertion now covers every beta-line package rather than just the core five, so `premajor` left anywhere fails CI.
Contributor
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
The peer-range change altered packages/react-native-sdk/package.json without regenerating yarn.lock, so `yarn install --immutable` refused the install and every CI job failed at setup.
Bundle sizeBuilt package output. Sizes in KB; delta vs No significant package size increase vs |
Resolves the conflict left by #2414 being squash-merged. Keeps this branch's flip to `prerelease` on the six satellites and the steady-state assertion widened to every beta-line package.
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.
💡 Overview
The second half of #2414, and the last step of the v1/v2 split.
Important
Do not merge until the satellite bootstrap release from #2414 has published
1.0.0-beta.0. Merging early would put the satellites onprereleasebefore they reach the 1.0 line, and the next release would compute0.x.y-beta.Ninstead.releaseAs: premajorhas done its single job of lifting the six satellites from0.xonto1.0.0-beta.0. Left in place it would compute2.0.0-beta.0next, so this flips them toreleaseAs: prerelease, which incrementsbeta.Nand keeps the1.0.0core sticky.📝 Implementation notes
The steady-state assertion widens from the core five to every beta-line package, so
premajorleft anywhere fails CI. Negative-tested: puttingpremajorback on one satellite failsevery beta-line package uses the steady-state releaseAs.Stacked on
chore/v2-satellite-beta-line.🎫 Ticket: https://linear.app/stream/issue/REACT-1166/v1v2-branch-split-release-v1-maintenance-branch-v2-on-main
📑 Docs: n/a (internal release tooling)