Repository navigation
Conversation
…usted publishing Replaces the Buildkite-driven, NPM_TOKEN-based publisher of react-native-ui-lib and uilib-native with a manually dispatched Release workflow on master, ported from react-native-navigation's release contract: dry-run / publish / resume, immutable artifacts, npm trusted publishing via GitHub OIDC, registry-integrity recovery, package-qualified tags, GitHub release, and a version PR.
Contributor
✅ PR Description Validation PassedAll required sections are properly filled out:
Your PR is good for review! 🚀 This validation ensures all sections from the PR template are properly filled. |
This branch has not been deployed
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.
Description
Replaces the Buildkite-driven,
NPM_TOKEN-based publisher ofreact-native-ui-libanduilib-nativewith an admin-dispatched Release GitHub Actions workflow that publishes through npm trusted publishing (GitHub OIDC). This is a port of the contract introduced in wix/react-native-navigation#8366, adapted to this monorepo:uilib-nativefirst (only whennative_versionis given, or for snapshots), thenreact-native-ui-lib. Resume skips packages whose registry bytes already match the artifact; versions are never incremented to recover."uilib-native": "workspace:*"is rewritten to the planned (or npmlatest) native version beforenpm pack; the packed manifest is checked for leftoverworkspace:ranges.yarn build) rewritespackages/in place, so the release commit (version fields only) and its Git bundle are created from the clean tree before building.react-native-ui-lib@<v>/uilib-native@<v>on the source commit; GitHub release named after the barereact-native-ui-libversion; version PRci/update-version-<v>with thereleaselabel.feat/,web/,fix/,infra/) using each PR's## Changelogsection, matchingprReleaseNotesCommon.js(which is shipped in the package and left untouched).Release checksworkflow runs thenode:testsuite, a clean Linuxyarn build, andpack-checkfor both packages on PRs.Removed:
scripts/release/release.js,releaseUtils.js, their Jest spec, the token-basedscripts/release/.npmrc, rootrelease/test:releaseScriptscripts. Addedrepositorytouilib-native(required for provenance).Out of scope (left untouched, listed in
docs/RELEASING.mdas follow-up):demo/,docuilib/,eslint-rules/publishers; the stalepeerDependencies.uilib-nativesnapshot range.Open questions for maintainers (why this is a draft):
master. The old flow tagged on thereleasebranch (308 commits ahead ofmaster, not an ancestor), anddeployDocs.ymldeploys only fromrelease. Should the release branch bereleaseinstead? (One-line change inscripts/release/uilib.cjs+ workflow guard.)react-native-ui-lib@*tags are not reachable frommaster; the firstkind=releaserun needs a baseline tag (documented indocs/RELEASING.md, step 5). Snapshots need none.ci/update-version-<v>like RNN; the localyarn constraintspre-push hook only allowsfeat|web|fix|infra/prefixes (the workflow pushes without hooks, so it is unaffected). Rename toinfra/update-version-<v>if preferred.release.ymldoes not runyarn test(lint + jest): jest is unreliable after the destructive build and slow before it; the Buildkite status on the exact commit is the test gate.One-time setup (npm trusted publishers for both packages,
npm-releaseenvironment,RELEASE_PUBLISH_ENABLED, Buildkite cleanup) is documented indocs/RELEASING.md. Nothing publishes until that is done.Changelog
none
Additional info
node --test scripts/release/*.test.cjs(30/30),yarn install --immutable,yarn build,pack-checkfor both tarballs;set-version→ build → pack →readManifest+verifyReleaseCommitround-trip in a scratch clone.