From 1cab644a0783badaa12c8e33bdf6bc40a80797af Mon Sep 17 00:00:00 2001 From: Zixuan Chen Date: Thu, 22 Oct 2026 16:26:48 +0000 Subject: [PATCH] fix: resolve release tarball without parsing npm lifecycle output --- .github/workflows/release.yml | 8 +++++--- scripts/verify-release.py | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 562ddea..176e829 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,8 +69,9 @@ jobs: tar -xzf native-ios.tgz corepack yarn typecheck corepack yarn prepare - npm pack --ignore-scripts --json > pack.json - python3 scripts/verify-release.py "$(node -p "require('./pack.json')[0].filename")" "$GITHUB_REF_NAME" + npm pack --ignore-scripts + RN_TARBALL="loro-react-native-$(node -p "require('./package.json').version").tgz" + python3 scripts/verify-release.py "$RN_TARBALL" "$GITHUB_REF_NAME" - uses: actions/upload-artifact@v4 with: name: npm-package @@ -85,4 +86,5 @@ jobs: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | npm install --global npm@11 - npm publish "$(node -p "require('./pack.json')[0].filename")" --access public --provenance + RN_TARBALL="loro-react-native-$(node -p "require('./package.json').version").tgz" + npm publish "$RN_TARBALL" --access public --provenance diff --git a/scripts/verify-release.py b/scripts/verify-release.py index f672a8a..05b72c9 100644 --- a/scripts/verify-release.py +++ b/scripts/verify-release.py @@ -3,6 +3,7 @@ import json from pathlib import Path +import re import sys import tarfile import tomllib @@ -13,7 +14,8 @@ def main(): with tarfile.open(tarball, "r:gz") as archive: names = set(archive.getnames()) package = json.load(archive.extractfile("package/package.json")) - assert tag == "v" + package["version"], "tag and package version differ" + expected_tag = re.escape("v" + package["version"]) + r"(?:-build\.\d+)?" + assert re.fullmatch(expected_tag, tag), "tag and package version differ" required = { "package/build/LoroFfiFramework.xcframework/Info.plist", "package/android/src/main/jniLibs/arm64-v8a/libloro_rs.a",