Skip to content

Commit b9a73af

Browse files
antonisclaudesentry-release-bot[bot]
authored
chore: Back-merge release/8.9.1 into main (#6055)
* fix(core): Restore tarball script permissions and missing EAS build hook (#6049) * fix(core): Restore tarball script permissions and missing EAS build hook The npm pack -> yarn pack switch in #6037 introduced two regressions: 1. yarn pack stores files with mode 0644. scripts/sentry-xcode.sh, invoked directly by Xcode's build phase, fails with "Permission denied" (#6047). Re-pack the tarball after yarn pack to restore 0755 on shell scripts and bin entrypoints. 2. yarn pack does not auto-include files referenced from the bin field. scripts/eas-build-hook.js was never in the .npmignore allowlist, so the three sentry-eas-build-* bin commands silently stopped working in the tarball (#6048 follow-up). Add it to the allowlist. Add a job_validate_tarball CI job that installs the produced tarball into a fresh project and asserts script modes, bin links, post-install executability, and that workspace:* specs were resolved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: Update changelog Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(ci): Install both tarballs in validate job to satisfy cross-dep (#6052) The validate job ran `npm install <core tarball>` only. The published core package.json declares `@sentry/expo-upload-sourcemaps` at the same version as core (workspace:* is resolved at pack time). On a release branch the bumped version is not on the npm registry yet, so npm tried to fetch from registry and failed with ETARGET (e.g. when releasing 8.9.2: "No matching version found for @sentry/expo-upload-sourcemaps@8.9.2"). Install both tarballs together so the sister dep is satisfied from local. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * release: 8.9.2 --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: antonis <304044+antonis@users.noreply.github.com> Co-authored-by: sentry-release-bot[bot] <180476844+sentry-release-bot[bot]@users.noreply.github.com>
1 parent 9b6b2ba commit b9a73af

24 files changed

Lines changed: 140 additions & 38 deletions

File tree

.github/workflows/buildandtest.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,87 @@ jobs:
168168
${{ github.workspace }}/packages/core/*.tgz
169169
${{ github.workspace }}/packages/expo-upload-sourcemaps/*.tgz
170170
171+
job_validate_tarball:
172+
name: Validate tarball
173+
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]
174+
needs: [job_build, diff_check]
175+
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
176+
timeout-minutes: 5
177+
steps:
178+
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
179+
with:
180+
node-version: 18
181+
- name: Download tarball artifacts
182+
uses: actions/download-artifact@v8
183+
with:
184+
name: ${{ github.sha }}
185+
path: artifacts
186+
- name: Verify executable bits in tarball
187+
run: |
188+
set -e
189+
TARBALL=$(find artifacts -name 'sentry-react-native-*.tgz' -print -quit)
190+
[ -n "$TARBALL" ] || { echo "::error::tarball not found in artifacts/"; exit 1; }
191+
echo "Tarball: $TARBALL"
192+
FAILED=0
193+
for entry in package/scripts/sentry-xcode.sh \
194+
package/scripts/sentry-xcode-debug-files.sh \
195+
package/scripts/collect-modules.sh \
196+
package/scripts/eas-build-hook.js \
197+
package/scripts/expo-upload-sourcemaps.js; do
198+
mode=$(tar -tvf "$TARBALL" "$entry" 2>/dev/null | awk 'NR==1{print $1}')
199+
if [ -z "$mode" ]; then
200+
echo "::error::$entry missing from tarball"
201+
FAILED=1
202+
elif [ "$mode" != "-rwxr-xr-x" ]; then
203+
echo "::error::$entry has mode $mode, expected -rwxr-xr-x"
204+
FAILED=1
205+
else
206+
echo "OK: $entry ($mode)"
207+
fi
208+
done
209+
exit $FAILED
210+
- name: Install tarball into fresh project
211+
run: |
212+
set -e
213+
CORE_TARBALL=$(find "$PWD/artifacts" -name 'sentry-react-native-*.tgz' -print -quit)
214+
EXPO_TARBALL=$(find "$PWD/artifacts" -name 'sentry-expo-upload-sourcemaps-*.tgz' -print -quit)
215+
[ -n "$CORE_TARBALL" ] || { echo "::error::core tarball not found"; exit 1; }
216+
[ -n "$EXPO_TARBALL" ] || { echo "::error::expo-upload-sourcemaps tarball not found"; exit 1; }
217+
mkdir -p /tmp/install-test
218+
cd /tmp/install-test
219+
npm init -y >/dev/null
220+
# Install both local tarballs together so the @sentry/expo-upload-sourcemaps
221+
# cross-dep is satisfied locally. On a release branch the bumped version
222+
# is not on the npm registry yet (workspace:* resolves to the version
223+
# we are about to publish), and a registry fetch would fail with ETARGET.
224+
npm install --no-save "$EXPO_TARBALL" "$CORE_TARBALL"
225+
# workspace:* spec must have been resolved by yarn pack (#6037 regression)
226+
if grep -q 'workspace:' node_modules/@sentry/react-native/package.json; then
227+
echo "::error::published package.json still contains unresolved workspace: spec"
228+
grep workspace: node_modules/@sentry/react-native/package.json
229+
exit 1
230+
fi
231+
# bin entries must be linked into node_modules/.bin and executable
232+
for bin in sentry-eas-build-on-complete \
233+
sentry-eas-build-on-error \
234+
sentry-eas-build-on-success \
235+
sentry-expo-upload-sourcemaps; do
236+
if [ ! -x "node_modules/.bin/$bin" ]; then
237+
echo "::error::node_modules/.bin/$bin missing or not executable"
238+
ls -la node_modules/.bin/ | grep -i sentry || true
239+
exit 1
240+
fi
241+
echo "OK: node_modules/.bin/$bin"
242+
done
243+
# sentry-xcode.sh is invoked directly by the iOS build phase, so it
244+
# must remain executable after install (#6047)
245+
if [ ! -x node_modules/@sentry/react-native/scripts/sentry-xcode.sh ]; then
246+
echo "::error::scripts/sentry-xcode.sh is not executable after install"
247+
ls -la node_modules/@sentry/react-native/scripts/sentry-xcode.sh
248+
exit 1
249+
fi
250+
echo "OK: scripts/sentry-xcode.sh executable"
251+
171252
job_type_check:
172253
name: Type Check Typescript 3.8
173254
runs-on: ["ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04", "runner_group_id:10"]

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@
2323
- [changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md#10500)
2424
- [diff](https://github.com/getsentry/sentry-javascript/compare/10.49.0...10.50.0)
2525

26+
## 8.9.2
27+
28+
### Fixes
29+
30+
- Restore executable bit on shell scripts in the published tarball, fixing `Permission denied` on iOS build ([#6049](https://github.com/getsentry/sentry-react-native/pull/6049))
31+
- Restore EAS build hook bin scripts (`sentry-eas-build-on-{success,error,complete}`) missing from the published tarball ([#6049](https://github.com/getsentry/sentry-react-native/pull/6049))
32+
2633
## 8.9.1
2734

2835
### Features

SDK-VERSIONS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ To manually update the table with the current version, run `./scripts/update-sdk
1212

1313
| React Native SDK | Android SDK | Cocoa SDK | JavaScript SDK |
1414
| ---------------- | ----------- | --------- | -------------- |
15+
| [8.9.2](https://github.com/getsentry/sentry-react-native/releases/tag/8.9.2) | [8.40.0](https://github.com/getsentry/sentry-java/releases/tag/8.40.0) | [9.11.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.11.0) | [10.49.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.49.0) |
1516
| [8.9.1](https://github.com/getsentry/sentry-react-native/releases/tag/8.9.1) | [8.40.0](https://github.com/getsentry/sentry-java/releases/tag/8.40.0) | [9.11.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.11.0) | [10.49.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.49.0) |
1617
| [8.8.0](https://github.com/getsentry/sentry-react-native/releases/tag/8.8.0) | [8.38.0](https://github.com/getsentry/sentry-java/releases/tag/8.38.0) | [9.10.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.10.0) | [10.48.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.48.0) |
1718
| [8.7.0](https://github.com/getsentry/sentry-react-native/releases/tag/8.7.0) | [8.37.1](https://github.com/getsentry/sentry-java/releases/tag/8.37.1) | [9.8.0](https://github.com/getsentry/sentry-cocoa/releases/tag/9.8.0) | [10.47.0](https://github.com/getsentry/sentry-javascript/releases/tag/10.47.0) |

dev-packages/e2e-tests/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sentry-react-native-e2e-tests",
3-
"version": "8.9.1",
3+
"version": "8.9.2",
44
"private": true,
55
"description": "Sentry React Native End to End Tests Library",
66
"main": "dist/index.js",
@@ -14,7 +14,7 @@
1414
"@babel/preset-env": "^7.25.3",
1515
"@babel/preset-typescript": "^7.18.6",
1616
"@sentry/core": "10.50.0",
17-
"@sentry/react-native": "8.9.1",
17+
"@sentry/react-native": "8.9.2",
1818
"@types/node": "^20.9.3",
1919
"@types/react": "^18.2.64",
2020
"appium": "3.2.2",

dev-packages/type-check/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "sentry-react-native-type-check",
33
"private": true,
4-
"version": "8.9.1",
4+
"version": "8.9.2",
55
"scripts": {
66
"type-check": "./run-type-check.sh"
77
}

dev-packages/utils/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "sentry-react-native-samples-utils",
3-
"version": "8.9.1",
3+
"version": "8.9.2",
44
"description": "Internal Samples Utils",
55
"main": "index.js",
66
"license": "MIT",

lerna.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
3-
"version": "8.9.1",
3+
"version": "8.9.2",
44
"packages": [
55
"packages/*",
66
"dev-packages/*",

packages/core/.npmignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
!scripts/sentry-xcode-debug-files.sh
2828
!scripts/sentry_utils.rb
2929
!scripts/expo-upload-sourcemaps.js
30+
!scripts/eas-build-hook.js
3031

3132
# Metro
3233
!/metro.js

packages/core/android/src/main/java/io/sentry/react/RNSentryVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
class RNSentryVersion {
44
static final String REACT_NATIVE_SDK_PACKAGE_NAME = "npm:@sentry/react-native";
5-
static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "8.9.1";
5+
static final String REACT_NATIVE_SDK_PACKAGE_VERSION = "8.9.2";
66
static final String NATIVE_SDK_NAME = "sentry.native.android.react-native";
77
static final String ANDROID_SDK_NAME = "sentry.java.android.react-native";
88
static final String REACT_NATIVE_SDK_NAME = "sentry.javascript.react-native";

packages/core/ios/RNSentryVersion.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
NSString *const NATIVE_SDK_NAME = @"sentry.cocoa.react-native";
44
NSString *const REACT_NATIVE_SDK_NAME = @"sentry.javascript.react-native";
55
NSString *const REACT_NATIVE_SDK_PACKAGE_NAME = @"npm:@sentry/react-native";
6-
NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"8.9.1";
6+
NSString *const REACT_NATIVE_SDK_PACKAGE_VERSION = @"8.9.2";

0 commit comments

Comments
 (0)