Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
1532256
chore(lint): check C++ constant mirrors on Android and JS too
sunnylqm Oct 12, 2026
0be289e
fix(flow-core): drop Object.hasOwn, missing from JSC before iOS 15.4
sunnylqm Oct 12, 2026
f8ce0f4
refactor: single jsonDeepEqual in updateFlowCore
sunnylqm Oct 12, 2026
57fdfec
refactor(error): derive UpdateErrorCode from one code list
sunnylqm Oct 12, 2026
9bb13e0
fix(harmony): stop retrying mirrors after a patch fails to apply
sunnylqm Oct 12, 2026
2d2ffc2
refactor(core): web-safe nativeMethod helper for optional native methods
sunnylqm Oct 12, 2026
c66f83b
refactor(harmony): drop dead code and generated files
sunnylqm Oct 12, 2026
b2e561c
refactor(client): trim endpoint plumbing
sunnylqm Oct 12, 2026
65e4c73
build(android): drop pre-7.5 Gradle exec path, dedupe gradle and ndk …
sunnylqm Oct 12, 2026
1e139be
fix(android-jni): build Java strings from UTF-8 with NewString, not N…
sunnylqm Oct 12, 2026
1de1fb7
refactor(client): one telemetry POST for events and exceptions
sunnylqm Oct 12, 2026
0f87872
refactor(android-jni): dedupe manifest building and exception guards
sunnylqm Oct 12, 2026
624ef5e
refactor(client): one fail() exit for caught update-flow errors
sunnylqm Oct 12, 2026
0107360
fix(android): stop retrying mirrors after PATCH_FAILED in the native …
sunnylqm Oct 12, 2026
a989041
fix(android): keep https-configured native rounds off plaintext
sunnylqm Oct 12, 2026
f01140f
refactor(client): simplify performDownload bookkeeping
sunnylqm Oct 12, 2026
78e1318
refactor(harmony): share the NAPI async-work plumbing in pushy.cpp
sunnylqm Oct 12, 2026
452b1ee
refactor(harmony): single X-macro method table in PushyTurboModule.cpp
sunnylqm Oct 12, 2026
cd08464
chore(test): share the cpp test scripts' SANITIZE/FUZZ plumbing
sunnylqm Oct 12, 2026
5e1ca68
refactor(provider): dedupe catch blocks and context actions
sunnylqm Oct 12, 2026
6117a35
chore(packlist): derive the whitelist from package.json files
sunnylqm Oct 12, 2026
2b7f243
refactor(harmony): dedupe DownloadTask file helpers
sunnylqm Oct 12, 2026
4a233f4
refactor(harmony): trim UpdateContext wrappers and the getAllSync probe
sunnylqm Oct 12, 2026
3909fee
chore: remove dead JS exports and locale keys
sunnylqm Oct 12, 2026
2492ab8
chore(flow-core): drop the unused uuid input of buildCheckFingerprint
sunnylqm Oct 12, 2026
bfe9342
refactor(harmony): dedupe SyncCoordinator query and commit paths
sunnylqm Oct 12, 2026
b527d16
refactor(harmony): one Logger.log for all levels; log constants minus…
sunnylqm Oct 12, 2026
e66970a
refactor(harmony): share the install record predicate
sunnylqm Oct 12, 2026
fb03dbf
refactor(harmony): call applicationContext.restartApp directly
sunnylqm Oct 12, 2026
7555ee0
refactor(android): one UpdateModule for both architectures
sunnylqm Oct 12, 2026
b005fc2
refactor(harmony): require hvigor task registration in the build-meta…
sunnylqm Oct 12, 2026
fc27327
ci(e2e): share the e2e setup between Android and iOS, dedupe config
sunnylqm Oct 12, 2026
21d07ea
ci(publish): move the shared publish steps into a composite action
sunnylqm Oct 12, 2026
2879337
chore(scripts): drop the stale debug e2e npm scripts
sunnylqm Oct 12, 2026
c198d72
refactor(android): lambdas and one thread helper
sunnylqm Oct 12, 2026
4c96721
build(harmony): compile shared native sources in place, drop the stag…
sunnylqm Oct 12, 2026
22af75b
refactor(android): share install presence and activation checks
sunnylqm Oct 12, 2026
b6e4c41
refactor(android): tidy UpdateContext state ops, downloads and cleanup
sunnylqm Oct 12, 2026
e66688a
build(harmony): move the CI SDK discovery into check-harmony-types.js
sunnylqm Oct 12, 2026
373a7d0
ci(harmony): dedupe trigger paths and drop checks bun lint already runs
sunnylqm Oct 12, 2026
7eef0bb
refactor(android): share the patch-task prelude in DownloadTask
sunnylqm Oct 12, 2026
3c0871f
docs: condense the native-check followups and bundleHash migration
sunnylqm Oct 12, 2026
b32291a
test: one loader for native sources and Harmony VM modules
sunnylqm Oct 12, 2026
725c3d5
test: shared client test helpers, real client in provider render tests
sunnylqm Oct 12, 2026
63b2c0c
style(client): keep UpdateErrorListener's doc comment on its type
sunnylqm Oct 12, 2026
a9e9242
refactor(android): one set of IO and HTTP helpers
sunnylqm Oct 12, 2026
3ed50e3
ci(lint): mention the constant parity check in the lint step comment
sunnylqm Oct 12, 2026
92186a3
style: biome-format the harmony sync tests
sunnylqm Oct 12, 2026
8080818
test(harmony): run the pure-logic tests under bun, drop the hypium suite
sunnylqm Oct 12, 2026
620f600
refactor(android): one endpoint attempt path in SyncCoordinator
sunnylqm Oct 12, 2026
fa7dfac
refactor(android): one entry map in BundledResourceCopier
sunnylqm Oct 12, 2026
02ba2b5
refactor(android): small cleanups across the module
sunnylqm Oct 12, 2026
d6b2201
docs(audit): compress fixed CODE_AUDIT items, keep the open ones in full
sunnylqm Oct 12, 2026
2b78967
build(android): drop two proguard rules nothing needs any more
sunnylqm Oct 12, 2026
d4c78a6
refactor(ios): Foundation-only common header for shared internals
sunnylqm Oct 12, 2026
b5f572a
fix(ios): align the native round's download and config rules with JS/…
sunnylqm Oct 12, 2026
df20ff2
Merge branch 'cleanup/core-ci' into claude/code-cleanup-refactor-dd7306
sunnylqm Oct 12, 2026
9f7a8c3
Merge branch 'cleanup/js' into claude/code-cleanup-refactor-dd7306
sunnylqm Oct 12, 2026
f4b9b39
Merge branch 'cleanup/harmony' into claude/code-cleanup-refactor-dd7306
sunnylqm Oct 12, 2026
ed9d28b
test(harmony): load Harmony sources through the shared evalHarmonyModule
sunnylqm Oct 12, 2026
dd6618f
test(text-encoding): drop stale PushyTurboModule.cpp allowlist entries
sunnylqm Oct 12, 2026
3adcffb
test(harmony): drop the stale hypium suite mention from harmonyInstal…
sunnylqm Oct 12, 2026
d5791c2
docs(harmony): point comments at scripts/check-constant-parity.js, dr…
sunnylqm Oct 12, 2026
d0a4409
chore(package): drop the files exclusion for the removed harmony/push…
sunnylqm Oct 12, 2026
97a4e8b
chore(e2e): remove the one-off iOS crash-rescue experiment scaffolding
sunnylqm Oct 12, 2026
fb234a8
refactor(ios): split RCTPushy.mm by responsibility, RCTPushyInstaller
sunnylqm Oct 12, 2026
457d65e
chore(podspec): drop dead fallbacks and search paths
sunnylqm Oct 12, 2026
3376124
fix(client): release applyingUpdate before emitting a beforeReload ho…
sunnylqm Oct 12, 2026
cae4f9d
fix(core): let a synchronous getBundleHash throw fail the module load…
sunnylqm Oct 12, 2026
1707311
refactor(harmony): build patch manifests with the shared delta::Build…
sunnylqm Oct 12, 2026
8f5b301
Merge branch 'cleanup/android' into claude/code-cleanup-refactor-dd7306
sunnylqm Oct 12, 2026
a122c32
chore(parity): check the merged Android UpdateModule and the oldarch …
sunnylqm Oct 12, 2026
26565ef
Merge branch 'cleanup/ios' into claude/code-cleanup-refactor-dd7306
sunnylqm Oct 12, 2026
e30cedf
fix(ios): include hpatch.h by relative path so use_frameworks! builds…
sunnylqm Oct 12, 2026
5a5b8e1
refactor(android): move the JNI glue out of the shared cores into cpp…
sunnylqm Oct 12, 2026
2225eba
refactor(android): fold patch_core_android.cpp into update_core_andro…
sunnylqm Oct 12, 2026
e1b039f
refactor(cpp): move the hpatch wrapper from android/jni to cpp/hpatch
sunnylqm Oct 12, 2026
6968b12
build: pick the shared C++ sources by directory on every platform
sunnylqm Oct 12, 2026
9d7fd82
chore(package): ship cpp/ as a whole and scan it in the native source…
sunnylqm Oct 12, 2026
761d40d
feat(flow-core): shared native config gate, equivalence and normalizer
sunnylqm Oct 12, 2026
f4b78e1
refactor(android): use the shared config gate, equivalence and normal…
sunnylqm Oct 12, 2026
1d95ca4
refactor(ios): use the shared config gate, equivalence and normalizer
sunnylqm Oct 12, 2026
6a606a3
refactor(harmony): use the shared config gate, equivalence and normal…
sunnylqm Oct 12, 2026
2459388
feat(flow-core): caller-chosen parse limits and linear object parsing
sunnylqm Oct 12, 2026
52b7d84
feat(patch-core): one __diff.json parser and an ApplyArchivePatch ent…
sunnylqm Oct 12, 2026
02e383d
refactor(android): hand __diff.json to the shared core as bytes
sunnylqm Oct 12, 2026
20acb8e
refactor(ios): hand __diff.json to the shared core as text
sunnylqm Oct 12, 2026
4fc51ca
refactor(harmony): hand __diff.json to the shared core as text
sunnylqm Oct 12, 2026
c4ba7ac
refactor(patch-core): drop BuildPatchManifest
sunnylqm Oct 12, 2026
555ffee
feat(patch-core): one completion record implementation in install_rec…
sunnylqm Oct 12, 2026
8966c5e
refactor(android): use the shared completion record core
sunnylqm Oct 12, 2026
bde5b2f
refactor(patch-core): define Status::Ok/Error inline
sunnylqm Oct 12, 2026
6a7e52e
refactor(ios): use the shared completion record core
sunnylqm Oct 12, 2026
7a96ce5
test(ios-purge-restore): drop the stale PushyFileStamp note
sunnylqm Oct 12, 2026
46d6d86
refactor(harmony): use the shared completion record core
sunnylqm Oct 12, 2026
e13bc05
feat(flow-core): one native round core for request, query walk and re…
sunnylqm Oct 12, 2026
1138e36
refactor(android): run the cold-start round through the shared round …
sunnylqm Oct 12, 2026
c90ac4c
refactor(ios): run the cold-start round through the shared round core
sunnylqm Oct 12, 2026
e80703f
refactor(harmony): run the cold-start round through the shared round …
sunnylqm Oct 12, 2026
a4e65b6
docs(audit): the https-only filter and round helpers live in the shar…
sunnylqm Oct 12, 2026
07717fe
feat(patch-core): one archive extraction accounting in archive_limits…
sunnylqm Oct 12, 2026
5fe601c
refactor(ios): run the unzip guard and the download probe through arc…
sunnylqm Oct 12, 2026
1c47311
refactor(android): run the archive accounting through archive_limits …
sunnylqm Oct 12, 2026
65ec36c
refactor(harmony): run the archive checks through archive_limits over…
sunnylqm Oct 12, 2026
629b641
docs(audit): the archive limit accounting lives in the shared core
sunnylqm Oct 12, 2026
6eac197
build(android): rebuild librnpushy.so for the shared-core JNI surface
sunnylqm Oct 12, 2026
163c999
fix: address self-review findings on the shared-core round
sunnylqm Oct 12, 2026
c8c77f7
test(e2e): let the previous launch's native round settle before flipp…
sunnylqm Oct 12, 2026
9f35e68
test(e2e): give the local-merge install hook its own 10min budget
sunnylqm Oct 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 13 additions & 71 deletions .github/actions/e2e-android-setup/action.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
name: E2E Android setup
description: >-
Shared setup for the Android Detox jobs: toolchains, caches, KVM, the e2e
project's dependencies and the local react-native-update link. Runs after
the react-native-update checkout (this action lives in it).
Shared setup for the Android Detox jobs: Java (+ Gradle cache) and KVM, then
the platform-neutral e2e setup (../e2e-common: toolchains, Bun cache, the
e2e project's dependencies and the local react-native-update link). Runs
after the react-native-update checkout (this action lives in it).
inputs:
project-dir:
description: E2E app directory, relative to the workspace.
Expand Down Expand Up @@ -32,32 +33,6 @@ inputs:
runs:
using: composite
steps:
- name: Checkout react-native-update-cli
if: inputs.checkout-cli == 'true'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: reactnativecn/react-native-update-cli
path: react-native-update-cli

- name: Setup Node.js
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 24

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.0

- name: Cache Bun dependencies
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-e2e${{ inputs.bun-cache-scope }}-${{ hashFiles('Example/e2etest/bun.lock', 'react-native-update-cli/bun.lock') }}${{ inputs.bun-cache-key-suffix }}
restore-keys: |
${{ runner.os }}-bun-e2e${{ inputs.bun-cache-scope }}-
${{ runner.os }}-bun-e2e-

- name: Setup Java
uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
with:
Expand All @@ -73,45 +48,12 @@ runs:
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm

- name: Create e2e project
if: inputs.create-project != ''
shell: bash
env:
CREATE_PROJECT: ${{ inputs.create-project }}
run: eval "$CREATE_PROJECT"

- name: Install e2e project dependencies
shell: bash
working-directory: ${{ inputs.project-dir }}
env:
FROZEN: ${{ inputs.frozen-lockfile }}
run: |
if [ "$FROZEN" = 'true' ]; then
bun install --frozen-lockfile
else
bun install
fi

- name: Link local react-native-update
# Mirrors what an npm install ships (package.json `files`), plus cpp/
# for the iOS/Android native builds; scripts/ is dev-only and unused
# by any build step.
shell: bash
env:
E2E_DIR: ${{ inputs.project-dir }}
run: |
set -euo pipefail
export LOCAL_RNU_VERSION="$(node -p "require('./${E2E_DIR}/node_modules/react-native-update/package.json').version")"
export LOCAL_RNU_DIR="$PWD/$E2E_DIR/.e2e-artifacts/local-react-native-update"
rm -rf "$LOCAL_RNU_DIR" "$E2E_DIR/node_modules/react-native-update"
mkdir -p "$LOCAL_RNU_DIR"
cp package.json react-native-update.podspec react-native.config.js expo-module.config.json "$LOCAL_RNU_DIR"/
rsync -a --exclude='.git' src ios android cpp "$LOCAL_RNU_DIR"/
node -e "const fs = require('fs'); const file = process.env.LOCAL_RNU_DIR + '/package.json'; const pkg = JSON.parse(fs.readFileSync(file, 'utf8')); pkg.version = process.env.LOCAL_RNU_VERSION; fs.writeFileSync(file, JSON.stringify(pkg, null, 2) + '\n');"
ln -s ../.e2e-artifacts/local-react-native-update "$E2E_DIR/node_modules/react-native-update"

- name: Install react-native-update-cli dependencies
if: inputs.checkout-cli == 'true'
shell: bash
working-directory: react-native-update-cli
run: bun install --frozen-lockfile && bun run build
- name: Common e2e setup
uses: ./.github/actions/e2e-common
with:
project-dir: ${{ inputs.project-dir }}
checkout-cli: ${{ inputs.checkout-cli }}
bun-cache-scope: ${{ inputs.bun-cache-scope }}
bun-cache-key-suffix: ${{ inputs.bun-cache-key-suffix }}
create-project: ${{ inputs.create-project }}
frozen-lockfile: ${{ inputs.frozen-lockfile }}
98 changes: 98 additions & 0 deletions .github/actions/e2e-common/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: E2E common setup
description: >-
Platform-neutral part of the Detox e2e setup: Node/Bun toolchains, the Bun
cache, the e2e project's dependencies, the local react-native-update link
and (optionally) a built react-native-update-cli. Runs after the
react-native-update checkout (this action lives in it); platform toolchains
(Java/KVM, Xcode/Homebrew) are set up by the caller.
inputs:
project-dir:
description: E2E app directory, relative to the workspace.
default: Example/e2etest
checkout-cli:
description: Check out and build react-native-update-cli (needed to prepare update artifacts).
default: 'true'
bun-cache-scope:
description: Extra bun cache key segment for jobs whose dependency set differs.
default: ''
bun-cache-key-suffix:
description: Extra hash appended to the bun cache key.
default: ''
create-project:
description: Command that generates the e2e project before its dependencies are installed.
default: ''
frozen-lockfile:
description: Install with --frozen-lockfile (false only for generated projects that have no lockfile).
default: 'true'
runs:
using: composite
steps:
- name: Checkout react-native-update-cli
if: inputs.checkout-cli == 'true'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: reactnativecn/react-native-update-cli
path: react-native-update-cli

- name: Setup Node.js
uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 24

- name: Setup Bun
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.0

- name: Cache Bun dependencies
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.bun/install/cache
key: ${{ runner.os }}-bun-e2e${{ inputs.bun-cache-scope }}-${{ hashFiles('Example/e2etest/bun.lock', 'react-native-update-cli/bun.lock') }}${{ inputs.bun-cache-key-suffix }}
restore-keys: |
${{ runner.os }}-bun-e2e${{ inputs.bun-cache-scope }}-
${{ runner.os }}-bun-e2e-

- name: Create e2e project
if: inputs.create-project != ''
shell: bash
env:
CREATE_PROJECT: ${{ inputs.create-project }}
run: eval "$CREATE_PROJECT"

- name: Install e2e project dependencies
shell: bash
working-directory: ${{ inputs.project-dir }}
env:
FROZEN: ${{ inputs.frozen-lockfile }}
run: |
if [ "$FROZEN" = 'true' ]; then
bun install --frozen-lockfile
else
bun install
fi

- name: Link local react-native-update
# Mirrors what an npm install ships (package.json `files`), plus cpp/
# for the iOS/Android native builds; scripts/ is dev-only and unused
# by any build step.
shell: bash
env:
E2E_DIR: ${{ inputs.project-dir }}
run: |
set -euo pipefail
LOCAL_RNU_VERSION="$(node -p "require('./${E2E_DIR}/node_modules/react-native-update/package.json').version")"
LOCAL_RNU_DIR="$PWD/$E2E_DIR/.e2e-artifacts/local-react-native-update"
export LOCAL_RNU_VERSION LOCAL_RNU_DIR
rm -rf "$LOCAL_RNU_DIR" "$E2E_DIR/node_modules/react-native-update"
mkdir -p "$LOCAL_RNU_DIR"
cp package.json react-native-update.podspec react-native.config.js expo-module.config.json "$LOCAL_RNU_DIR"/
rsync -a --exclude='.git' src ios android cpp "$LOCAL_RNU_DIR"/
node -e "const fs = require('fs'); const file = process.env.LOCAL_RNU_DIR + '/package.json'; const pkg = JSON.parse(fs.readFileSync(file, 'utf8')); pkg.version = process.env.LOCAL_RNU_VERSION; fs.writeFileSync(file, JSON.stringify(pkg, null, 2) + '\n');"
ln -s ../.e2e-artifacts/local-react-native-update "$E2E_DIR/node_modules/react-native-update"

- name: Install react-native-update-cli dependencies
if: inputs.checkout-cli == 'true'
shell: bash
working-directory: react-native-update-cli
run: bun install --frozen-lockfile && bun run build
118 changes: 118 additions & 0 deletions .github/actions/publish-npm/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
name: Publish to npm
description: >-
Shared body of the two publish jobs in publish.yml: toolchains, the CI-built
Android native libraries, the Harmony HAR (rebuilt, or reused from the
previous published release), the pre-publish checks and npm publish. Runs
after the react-native-update checkout (this action lives in it).
inputs:
harmony-har:
description: "'build' rebuilds harmony/pushy.har from source; 'previous' reuses the one in the previous-tag release on npm."
required: true
previous-tag:
description: Last release tag published to npm (with harmony-har 'previous').
default: ''
runs:
using: composite
steps:
- name: Check inputs
shell: bash
env:
HARMONY_HAR: ${{ inputs.harmony-har }}
PREVIOUS_TAG: ${{ inputs.previous-tag }}
run: |
case "$HARMONY_HAR" in
build) ;;
previous)
if [ -z "$PREVIOUS_TAG" ]; then
echo "::error::harmony-har 'previous' needs previous-tag"
exit 1
fi
;;
*) echo "::error::unknown harmony-har '$HARMONY_HAR'"; exit 1 ;;
esac

- name: Configure git safe.directory
shell: bash
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
# $toplevel/$sm_path are expanded by git submodule foreach, not here.
# shellcheck disable=SC2016
git submodule foreach --recursive 'git config --global --add safe.directory "$toplevel/$sm_path"'

- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.4.0

# Setup .npmrc file to publish to npm
- uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
with:
node-version: 24
registry-url: 'https://registry.npmjs.org'

- name: Install dependencies
shell: bash
run: bun install --frozen-lockfile

# Drop the committed binaries first: the artifact must fully replace
# android/lib, so any layout regression makes the verify step fail loudly
# instead of silently passing against stale committed .so files.
- name: Remove committed Android native libraries
shell: bash
run: rm -rf android/lib

- name: Use CI-built Android native libraries
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: android-so
path: android/lib

- name: Verify Android native libraries
shell: bash
run: node scripts/verify-android-so.js

- name: Build Harmony HAR
if: inputs.harmony-har == 'build'
shell: bash
run: npm run build:harmony-har -- --build-mode release

# Fail closed: the package must always ship harmony/pushy.har
# (package.json `files` lists it and check-packlist.js --release
# requires it). If the previous release can't be fetched, fix the cause
# or re-run — never publish a HAR-less package.
- name: Fetch previous Harmony HAR
if: inputs.harmony-har == 'previous'
shell: bash
env:
PREVIOUS_TAG: ${{ inputs.previous-tag }}
run: |
PREV_VERSION="${PREVIOUS_TAG#v}"
echo "Fetching harmony/pushy.har from react-native-update@$PREV_VERSION"
npm pack "react-native-update@$PREV_VERSION"
tar -xzf "react-native-update-${PREV_VERSION}.tgz" package/harmony/pushy.har
mkdir -p harmony
cp package/harmony/pushy.har harmony/pushy.har
# Clean up temporary pack and extraction files to prevent publishing them
rm -rf "react-native-update-${PREV_VERSION}.tgz" package

- name: Verify Harmony HAR artifact
shell: bash
run: test -f harmony/pushy.har

- name: Verify release tag matches package version
shell: bash
run: node scripts/check-release-version.js

- name: Verify publish file list
shell: bash
run: node scripts/check-packlist.js --release

- name: Publish to npm
shell: bash
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
if [[ "$RELEASE_TAG" == *"beta"* ]]; then
npm publish --provenance --access public --tag beta
else
npm publish --provenance --access public
fi
Loading
Loading