Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 0 additions & 4 deletions .github/file-filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,6 @@ sample_expo:
e2e_tests:
- 'dev-packages/e2e-tests/**'

# Changes to performance test infrastructure
perf_tests:
- 'performance-tests/**'

# CI workflow or infrastructure changes (should trigger everything)
ci:
- '.github/workflows/**'
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/detect-changes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ on:
e2e_tests:
description: 'Whether E2E test infrastructure changed'
value: ${{ jobs.changes.outputs.e2e_tests }}
perf_tests:
description: 'Whether performance test infrastructure changed'
value: ${{ jobs.changes.outputs.perf_tests }}
ci:
description: 'Whether CI workflow/action files changed'
value: ${{ jobs.changes.outputs.ci }}
Expand Down Expand Up @@ -71,7 +68,6 @@ jobs:
sample_react_native: ${{ steps.filter.outputs.sample_react_native }}
sample_expo: ${{ steps.filter.outputs.sample_expo }}
e2e_tests: ${{ steps.filter.outputs.e2e_tests }}
perf_tests: ${{ steps.filter.outputs.perf_tests }}
ci: ${{ steps.filter.outputs.ci }}
needs_ios: ${{ steps.evaluate.outputs.needs_ios }}
needs_android: ${{ steps.evaluate.outputs.needs_android }}
Expand Down Expand Up @@ -117,8 +113,6 @@ jobs:
# - Push to main or release branch (always run everything)
# Sample app changes do NOT trigger the full native test suite โ€”
# they only trigger their own sample-application workflows.
# Performance test changes do NOT trigger native tests either โ€”
# they only trigger the metrics job in e2e-v2.yml.
if [[ "$IOS_NATIVE" == "true" \
|| "$JS_SOURCE" == "true" \
|| "$CI_CHANGED" == "true" \
Expand Down
178 changes: 0 additions & 178 deletions .github/workflows/e2e-v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,184 +39,6 @@ jobs:
uses: ./.github/workflows/skip-ci-noauth.yml
secrets:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
metrics:
runs-on: ${{ matrix.runs-on }}
needs: [diff_check, detect-changes, auth_token_check]
if: ${{ needs.diff_check.outputs.skip_ci != 'true' && needs.auth_token_check.outputs.skip_ci != 'true' && !startsWith(github.ref, 'refs/heads/release/') }}
env:
SENTRY_DISABLE_AUTO_UPLOAD: "true"
strategy:
# we want that the matrix keeps running, default is to cancel them if it fails.
fail-fast: false
# Limit parallel jobs to avoid hitting Sauce Labs concurrency limits (max 3 sessions)
max-parallel: 2
matrix:
rn-architecture: ["legacy", "new"]
platform: ["ios", "android"]
include:
- platform: ios
runs-on: macos-26-xlarge
name: iOS
appPlain: performance-tests/test-app-plain.ipa
- platform: android
runs-on: ubuntu-24.04
name: Android
appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
steps:
- name: Check if platform is needed
id: platform-check
run: |
# Performance test changes should always run metrics (that's the
# whole point). The needs_ios/needs_android flags only track SDK
# source & native code โ€” not performance-tests/** files.
PERF_CHANGED="${{ needs.detect-changes.outputs.perf_tests }}"

if [[ "$PERF_CHANGED" == "true" ]]; then
echo "skip=false" >> "$GITHUB_OUTPUT"
echo "Performance tests changed โ€” running metrics for ${{ matrix.platform }}."
elif [[ "${{ matrix.platform }}" == "ios" && "${{ needs.detect-changes.outputs.needs_ios }}" != "true" ]]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Skipping iOS โ€” no relevant changes detected."
elif [[ "${{ matrix.platform }}" == "android" && "${{ needs.detect-changes.outputs.needs_android }}" != "true" ]]; then
echo "skip=true" >> "$GITHUB_OUTPUT"
echo "Skipping Android โ€” no relevant changes detected."
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
if: ${{ steps.platform-check.outputs.skip != 'true' }}

- uses: ./.github/actions/disk-cleanup
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}

- run: corepack enable
if: ${{ steps.platform-check.outputs.skip != 'true' }}
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v6
if: ${{ steps.platform-check.outputs.skip != 'true' }}
with:
package-manager-cache: false
node-version: 20
cache: "yarn"
cache-dependency-path: yarn.lock

- name: Install Ninja
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}
run: sudo apt-get update && sudo apt-get install -y ninja-build

- uses: actions/setup-java@de7274f081f381c8f8158605e0321c36c376e2e6 # v6.0.1
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}
with:
java-version: "17"
distribution: "temurin"

- name: Gradle cache
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}
uses: gradle/actions/setup-gradle@3f5f9adaf7d9fecd50b5935e54106014257a94e6 # v6

- uses: ruby/setup-ruby@e81a8fa391b11a595c1b7ed84177cc0fe02faf83 # v1
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' }}
with:
ruby-version: "3.3.0"

- name: Install Global Dependencies
if: ${{ steps.platform-check.outputs.skip != 'true' }}
run: npm i -g react-native-cli @sentry/cli

- name: Install Dependencies
if: ${{ steps.platform-check.outputs.skip != 'true' }}
run: yarn install

- name: Build SDK
if: ${{ steps.platform-check.outputs.skip != 'true' }}
run: yarn build
env:
PLATFORM: ${{ matrix.platform }}

- uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
if: ${{ steps.platform-check.outputs.skip != 'true' }}
id: app-plain-cache
with:
path: ${{ matrix.appPlain }}
# if the whole plain app folder is hashed the cache is never hit as there are files generated in the folder
# the cache key is calculated both at cache retrieval and save time
# hashFiles fails when there are rn android new arch generated files in the folder (exact reason unknown)
# we removed the lock file of the app due to monorepo changes, we use the package.json instead
# to avoid frequent rebuilds of the app
key: ${{ github.workflow }}-${{ github.job }}-appplain-${{ matrix.platform }}-${{ matrix.rn-architecture }}-${{ hashFiles('performance-tests/TestAppSentry/package.json') }}

- name: Build app plain
if: ${{ steps.platform-check.outputs.skip != 'true' && steps.app-plain-cache.outputs['cache-hit'] != 'true' }}
working-directory: ./performance-tests/TestAppPlain
run: |
cd ${{ matrix.platform }}
if [[ "${{ matrix.platform }}" == "android" ]]; then
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
perl -i -pe's/newArchEnabled=false/newArchEnabled=true/g' gradle.properties
fi
./gradlew assembleRelease
else
export PRODUCTION=1
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
export RCT_NEW_ARCH_ENABLED=1
fi
export REACT_NATIVE_NODE_MODULES_DIR="$PWD/../node_modules/react-native"
bundle install
bundle exec pod install
cd ../..
bundle install
bundle exec fastlane build_perf_test_app_plain
fi
env:
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}

- name: Build app with Sentry
if: ${{ steps.platform-check.outputs.skip != 'true' }}
working-directory: ./performance-tests/TestAppSentry
run: |
cd ${{ matrix.platform }}
if [[ "${{ matrix.platform }}" == "android" ]]; then
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
perl -i -pe's/newArchEnabled=false/newArchEnabled=true/g' gradle.properties
./gradlew generateCodegenArtifactsFromSchema
fi
./gradlew assembleRelease
else
export PRODUCTION=1
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
export RCT_NEW_ARCH_ENABLED=1
fi
export REACT_NATIVE_NODE_MODULES_DIR="$PWD/../node_modules/react-native"
bundle install
bundle exec pod install
cd ../..
bundle install
bundle exec fastlane build_perf_test_app_sentry
cd TestAppSentry
fi
env:
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- name: Collect apps metrics
if: ${{ steps.platform-check.outputs.skip != 'true' }}
uses: getsentry/action-app-sdk-overhead-metrics@44fb5489ac4ac252c87d84811972dc93a1e490b8
with:
name: ${{ matrix.name }} (${{ matrix.rn-architecture }})
config: ./performance-tests/metrics-${{ matrix.platform }}.yml
sauce-user: ${{ secrets.SAUCE_USERNAME }}
sauce-key: ${{ secrets.SAUCE_ACCESS_KEY }}

react-native-build:
name: Build RN ${{ matrix.rn-version }} ${{ matrix.rn-architecture }} ${{ matrix.engine }} ${{ matrix.platform }} ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }}
runs-on: ${{ matrix.runs-on }}
Expand Down
6 changes: 0 additions & 6 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,10 @@ included:
- 'samples/react-native/ios/**'
- 'packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/**'
- 'packages/core/ios/**'
- 'performance-tests/TestAppPlain/ios/**'
- 'performance-tests/TestAppSentry/ios/**'

excluded:
- 'samples/react-native/ios/Pods'
- 'samples/react-native/ios/build'
- 'performance-tests/TestAppPlain/ios/Pods'
- 'performance-tests/TestAppPlain/ios/build'
- 'performance-tests/TestAppSentry/ios/Pods'
- 'performance-tests/TestAppSentry/ios/build'

only_rules:
- class_delegate_protocol
Expand Down
1 change: 0 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ This repository contains mono repository structure with multiple React Native an
- /samples -> sample application, expo, rn...
- /packages -> RN SDK packages
- /dev-packages -> dev packages, ts-3.8 test runner, e2e tests components and runner
- /performance-tests -> applications used for measuring performance in CI

# Setting up an Environment

Expand Down
3 changes: 1 addition & 2 deletions lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@
"packages": [
"packages/*",
"dev-packages/*",
"samples/*",
"performance-tests/*"
"samples/*"
],
"npmClient": "yarn"
}
4 changes: 1 addition & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,7 @@
"samples/react-native-macos",
"samples/react-native-visionos",
"samples/react-native-tvos",
"samples/expo",
"performance-tests/TestAppPlain",
"performance-tests/TestAppSentry"
"samples/expo"
],
"volta": {
"node": "18.20.8",
Expand Down
12 changes: 0 additions & 12 deletions performance-tests/Gemfile

This file was deleted.

Loading
Loading