Skip to content

Commit 431eccd

Browse files
committed
Test secret reduction script
1 parent a0e516f commit 431eccd

1 file changed

Lines changed: 7 additions & 351 deletions

File tree

.github/workflows/e2e.yml

Lines changed: 7 additions & 351 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ concurrency:
1313
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
1414

1515
env:
16-
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
16+
SENTRY_AUTH_TOKEN: 'dummy-secret-12345'
1717
MAESTRO_VERSION: '1.40.3'
1818
IOS_DEVICE: 'iPhone 16'
1919
IOS_VERSION: '18.1'
@@ -25,277 +25,10 @@ jobs:
2525
uses: ./.github/workflows/skip-ci-noauth.yml
2626
secrets: inherit
2727

28-
metrics:
29-
runs-on: ${{ matrix.runs-on }}
30-
needs: [diff_check, auth_token_check]
31-
if: ${{ needs.diff_check.outputs.skip_ci != 'true' && needs.auth_token_check.outputs.skip_ci != 'true' && !startsWith(github.ref, 'refs/heads/release/') }}
32-
env:
33-
SENTRY_DISABLE_AUTO_UPLOAD: 'true'
34-
strategy:
35-
# we want that the matrix keeps running, default is to cancel them if it fails.
36-
fail-fast: false
37-
matrix:
38-
rn-architecture: ['legacy', 'new']
39-
platform: ["ios", "android"]
40-
include:
41-
- platform: ios
42-
runs-on: macos-13
43-
name: iOS
44-
appPlain: performance-tests/test-app-plain.ipa
45-
- platform: android
46-
# Not using the latest version due to a known issue: https://github.com/getsentry/sentry-react-native/issues/4418
47-
runs-on: ubuntu-22.04
48-
name: Android
49-
appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
50-
steps:
51-
- uses: actions/checkout@v4
52-
53-
- uses: ./.github/actions/disk-cleanup
54-
if: ${{ matrix.platform == 'android' }}
55-
56-
- run: sudo xcode-select -s /Applications/Xcode_14.2.app/Contents/Developer
57-
if: ${{ matrix.platform == 'ios' }}
58-
59-
- run: npm i -g corepack
60-
- uses: actions/setup-node@v4
61-
with:
62-
node-version: 18
63-
cache: 'yarn'
64-
cache-dependency-path: yarn.lock
65-
66-
- uses: actions/setup-java@v4
67-
with:
68-
java-version: '17'
69-
distribution: "adopt"
70-
- name: Gradle cache
71-
uses: gradle/gradle-build-action@v3
72-
- name: Install Global Dependencies
73-
run: npm i -g react-native-cli @sentry/cli
74-
- name: Install Dependencies
75-
run: yarn install
76-
- name: Build SDK
77-
run: yarn build
78-
79-
- uses: actions/cache@v4
80-
id: app-plain-cache
81-
with:
82-
path: ${{ matrix.appPlain }}
83-
# if the whole plain app folder is hashed the cache is never hit as there are files generated in the folder
84-
# the cache key is calculated both at cache retrieval and save time
85-
# hashFiles fails when there are rn android new arch generated files in the folder (exact reason unknown)
86-
# we removed the lock file of the app due to monorepo changes, we use the package.json instead
87-
# to avoid frequent rebuilds of the app
88-
key: ${{ github.workflow }}-${{ github.job }}-appplain-${{ matrix.platform }}-${{ matrix.rn-architecture }}-${{ hashFiles('performance-tests/TestAppSentry/package.json') }}
89-
- name: Build app plain
90-
if: steps.app-plain-cache.outputs['cache-hit'] != 'true'
91-
working-directory: ./performance-tests/TestAppPlain
92-
run: |
93-
cd ${{ matrix.platform }}
94-
if [[ "${{ matrix.platform }}" == "android" ]]; then
95-
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
96-
perl -i -pe's/newArchEnabled=false/newArchEnabled=true/g' gradle.properties
97-
fi
98-
./gradlew assembleRelease
99-
else
100-
export PRODUCTION=1
101-
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
102-
export RCT_NEW_ARCH_ENABLED=1
103-
fi
104-
pod install
105-
cd ../..
106-
fastlane build_perf_test_app_plain
107-
fi
108-
env:
109-
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
110-
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
111-
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
112-
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
113-
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
114-
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
115-
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
116-
- name: Build app with Sentry
117-
working-directory: ./performance-tests/TestAppSentry
118-
run: |
119-
cd ${{ matrix.platform }}
120-
if [[ "${{ matrix.platform }}" == "android" ]]; then
121-
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
122-
perl -i -pe's/newArchEnabled=false/newArchEnabled=true/g' gradle.properties
123-
fi
124-
./gradlew assembleRelease
125-
else
126-
export PRODUCTION=1
127-
if [[ ${{ matrix.rn-architecture }} == 'new' ]]; then
128-
export RCT_NEW_ARCH_ENABLED=1
129-
fi
130-
pod install
131-
cd ../..
132-
fastlane build_perf_test_app_sentry
133-
cd TestAppSentry
134-
fi
135-
env:
136-
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
137-
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
138-
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
139-
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
140-
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
141-
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
142-
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
143-
- name: Collect apps metrics
144-
uses: getsentry/action-app-sdk-overhead-metrics@v1
145-
with:
146-
name: ${{ matrix.name }} (${{ matrix.rn-architecture }})
147-
config: ./performance-tests/metrics-${{ matrix.platform }}.yml
148-
sauce-user: ${{ secrets.SAUCE_USERNAME }}
149-
sauce-key: ${{ secrets.SAUCE_ACCESS_KEY }}
150-
151-
react-native-build:
152-
name: Build RN ${{ matrix.rn-version }} ${{ matrix.rn-architecture }} ${{ matrix.engine }} ${{ matrix.platform }} ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }}
153-
runs-on: ${{ matrix.runs-on }}
154-
needs: [diff_check, auth_token_check]
155-
if: ${{ needs.diff_check.outputs.skip_ci != 'true' && needs.auth_token_check.outputs.skip_ci != 'true' && !startsWith(github.ref, 'refs/heads/release/') }}
156-
env:
157-
RN_VERSION: ${{ matrix.rn-version }}
158-
RN_ENGINE: ${{ matrix.engine }}
159-
USE_FRAMEWORKS: ${{ matrix.ios-use-frameworks }}
160-
PRODUCTION: ${{ matrix.build-type == 'production' && '1' || '0' }}
161-
RCT_NEW_ARCH_ENABLED: ${{ matrix.rn-architecture == 'new' && '1' || '0' }}
162-
SENTRY_DISABLE_AUTO_UPLOAD: 'false'
163-
strategy:
164-
fail-fast: false # keeps matrix running if one fails
165-
matrix:
166-
rn-version: ['0.65.3', '0.79.1']
167-
rn-architecture: ['legacy', 'new']
168-
platform: ['android', 'ios']
169-
build-type: ['production']
170-
ios-use-frameworks: ['no', 'static', 'dynamic']
171-
engine: ['hermes', 'jsc']
172-
include:
173-
- platform: ios
174-
rn-version: '0.79.1'
175-
xcode-version: '16.2'
176-
runs-on: macos-15
177-
- platform: ios
178-
rn-version: '0.65.3'
179-
xcode-version: '14.2'
180-
runs-on: macos-13
181-
- platform: android
182-
runs-on: ubuntu-latest
183-
exclude:
184-
# exclude JSC for new RN versions (keeping the matrix manageable)
185-
- rn-version: '0.79.1'
186-
engine: 'jsc'
187-
# exclude all rn versions lower than 0.70.0 for new architecture
188-
- rn-version: '0.65.3'
189-
rn-architecture: 'new'
190-
# exlude old rn version for use frameworks builds (to minimalize the matrix)
191-
- rn-version: '0.65.3'
192-
platform: 'ios'
193-
ios-use-frameworks: 'static'
194-
- rn-version: '0.65.3'
195-
platform: 'ios'
196-
ios-use-frameworks: 'dynamic'
197-
# use frameworks is ios only feature
198-
- platform: 'android'
199-
ios-use-frameworks: 'static'
200-
- platform: 'android'
201-
ios-use-frameworks: 'dynamic'
202-
# exclude new rn architecture and dynamic frameworks
203-
- rn-architecture: 'new'
204-
ios-use-frameworks: 'dynamic'
205-
206-
steps:
207-
- uses: actions/checkout@v4
208-
209-
- uses: ./.github/actions/disk-cleanup
210-
if: ${{ matrix.platform == 'android' }}
211-
212-
- name: Sentry Release
213-
run: |
214-
SENTRY_RELEASE_CANDIDATE=$(echo 'e2e/${{ github.ref }}' | perl -pe 's/\//-/g')
215-
echo "SENTRY_RELEASE=$SENTRY_RELEASE_CANDIDATE" >> $GITHUB_ENV
216-
217-
- name: Sentry Dist
218-
run: |
219-
SENTRY_DIST_CANDIDATE=${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-${GITHUB_SHA:0:8}
220-
echo "SENTRY_DIST=$SENTRY_DIST_CANDIDATE" >> $GITHUB_ENV
221-
222-
- name: Sentry Envs
223-
run: |
224-
echo "SENTRY_RELEASE=$SENTRY_RELEASE"
225-
echo "SENTRY_DIST=$SENTRY_DIST"
226-
227-
- run: sudo xcode-select -s /Applications/Xcode_${{ matrix.xcode-version }}.app/Contents/Developer
228-
if: ${{ matrix.platform == 'ios' }}
229-
230-
- run: npm i -g corepack
231-
- uses: actions/setup-node@v4
232-
with:
233-
node-version: 18
234-
cache: 'yarn'
235-
cache-dependency-path: yarn.lock
236-
237-
- uses: actions/setup-java@v4
238-
with:
239-
java-version: ${{ matrix.rn-version == '0.65.3' && '11' || '17' }}
240-
distribution: 'adopt'
241-
242-
- name: Gradle cache
243-
uses: gradle/gradle-build-action@v3
244-
245-
- name: Setup Global Tools
246-
run: |
247-
npm i -g yalc semver
248-
249-
- name: Setup Global Xcode Tools
250-
if: ${{ matrix.platform == 'ios' }}
251-
run: which xcbeautify || brew install xcbeautify
252-
253-
- name: Install JS Dependencies
254-
run: yarn install
255-
256-
- name: Setup Plain RN ${{ matrix.rn-version }} App
257-
run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --create
258-
259-
# The old node has to be enabled after creating the test app
260-
# to avoid issues with the old node version
261-
- run: corepack disable
262-
- uses: actions/setup-node@v4
263-
if: ${{ matrix.rn-version == '0.65.3' }}
264-
with:
265-
node-version: 16
266-
267-
- uses: ruby/setup-ruby@v1
268-
if: ${{ matrix.platform == 'ios' }}
269-
with:
270-
working-directory: dev-packages/e2e-tests/react-native-versions/${{ matrix.rn-version }}/RnDiffApp
271-
ruby-version: '3.3.0' # based on what is used in the sample
272-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
273-
cache-version: 1 # cache the installed gems
274-
275-
- name: Build Plain RN ${{ matrix.rn-version }} App
276-
run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --build
277-
278-
- name: Upload App
279-
if: matrix.build-type == 'production'
280-
uses: actions/upload-artifact@v4
281-
with:
282-
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-app-package
283-
path: dev-packages/e2e-tests/RnDiffApp.ap*
284-
retention-days: 1
285-
286-
- name: Upload logs
287-
if: ${{ always() }}
288-
uses: actions/upload-artifact@v4
289-
with:
290-
name: rn-build-logs-${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}
291-
path: dev-packages/e2e-tests/react-native-versions/${{ matrix.rn-version }}/RnDiffApp/ios/*.log
292-
29328
react-native-test:
29429
name:
29530
Test RN ${{ matrix.rn-version }} ${{ matrix.rn-architecture }} ${{ matrix.engine }} ${{ matrix.platform }} ${{
29631
matrix.build-type }} ${{ matrix.ios-use-frameworks }}
297-
needs: [react-native-build, diff_check]
298-
if: ${{ needs.diff_check.outputs.skip_ci != 'true' }}
29932

30033
runs-on: ${{ matrix.runs-on }}
30134
strategy:
@@ -329,90 +62,13 @@ jobs:
32962
steps:
33063
- uses: actions/checkout@v4
33164

332-
- name: Install Maestro
333-
uses: dniHze/maestro-test-action@bda8a93211c86d0a05b7a4597c5ad134566fbde4 # pin@v1.0.0
334-
with:
335-
version: ${{env.MAESTRO_VERSION}}
336-
337-
- name: Install iDB Companion
338-
if: ${{ matrix.platform == 'ios' }}
339-
run: brew tap facebook/fb && brew install facebook/fb/idb-companion
340-
341-
- uses: ./.github/actions/disk-cleanup
342-
if: ${{ matrix.platform == 'android' }}
343-
344-
- name: Setup Global Xcode Tools
345-
if: ${{ matrix.platform == 'ios' }}
346-
run: which xcbeautify || brew install xcbeautify
347-
348-
- name: Download App Package
349-
if: matrix.build-type == 'production'
350-
uses: actions/download-artifact@v4
351-
with:
352-
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-app-package
353-
path: dev-packages/e2e-tests
354-
355-
- name: Enable Corepack
356-
run: npm i -g corepack
357-
- uses: actions/setup-node@v4
358-
with:
359-
node-version: 20
360-
cache: 'yarn'
361-
cache-dependency-path: yarn.lock
362-
363-
- uses: actions/setup-java@v4
364-
with:
365-
java-version: '17'
366-
distribution: 'adopt'
367-
368-
- name: Gradle cache
369-
uses: gradle/gradle-build-action@v3
370-
371-
- name: Setup KVM
372-
if: ${{ matrix.platform == 'android' }}
373-
shell: bash
65+
- name: Create test file with dummy secret (TESTING ONLY)
66+
if: ${{ always() }}
37467
run: |
375-
# check if virtualization is supported...
376-
sudo apt install -y --no-install-recommends cpu-checker coreutils && echo "CPUs=$(nproc --all)" && kvm-ok
377-
# allow access to KVM to run the emulator
378-
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
379-
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
380-
sudo udevadm control --reload-rules
381-
sudo udevadm trigger --name-match=kvm
382-
383-
- name: Install JS Dependencies
384-
run: yarn install
385-
386-
- name: Run tests on Android
387-
if: ${{ matrix.platform == 'android' }}
388-
uses: reactivecircus/android-emulator-runner@1dcd0090116d15e7c562f8db72807de5e036a4ed # pin@v2.34.0
389-
with:
390-
api-level: 30
391-
force-avd-creation: false
392-
disable-animations: true
393-
disable-spellchecker: true
394-
target: 'aosp_atd'
395-
channel: canary # Necessary for ATDs
396-
emulator-options: >
397-
-no-window
398-
-no-snapshot-save
399-
-gpu swiftshader_indirect
400-
-noaudio
401-
-no-boot-anim
402-
-camera-back none
403-
-camera-front none
404-
-timezone US/Pacific
405-
script: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test
406-
407-
- uses: futureware-tech/simulator-action@dab10d813144ef59b48d401cd95da151222ef8cd # pin@v4
408-
if: ${{ matrix.platform == 'ios' }}
409-
with:
410-
model: ${{ env.IOS_DEVICE }}
411-
os_version: ${{ env.IOS_VERSION }}
412-
413-
- name: Run tests on iOS
414-
if: ${{ matrix.platform == 'ios' }}
415-
run: ./dev-packages/e2e-tests/cli.mjs ${{ matrix.platform }} --test
68+
mkdir -p ./dev-packages/e2e-tests/maestro-logs
69+
echo '{"test": "This contains the secret dummy-secret-12345 in the middle"}' > ./dev-packages/e2e-tests/maestro-logs/test-secret.json
70+
echo 'Another line with dummy-secret-12345 here' > ./dev-packages/e2e-tests/maestro-logs/test-secret.txt
71+
echo 'Created test files with dummy secret: dummy-secret-12345'
41672
41773
- name: Redact sensitive data from logs
41874
if: ${{ always() }}

0 commit comments

Comments
 (0)