Skip to content

Commit 94a28a4

Browse files
huntiemeta-codesync[bot]
authored andcommitted
Fix test jobs skipping when only one platform is selected in PRs (#55915)
Summary: Pull Request resolved: #55915 Addresses a design gap with conditional Android/iOS test runs ([#55449](#55449)). `build_npm_package` depended on both Android and iOS prebuilds, causing platform-specific E2E tests to be skipped unnecessarily. Fixed by allowing `build_npm_package` to optionally skip bundling Apple prebuits, and updating the dependencies of the E2E test jobs. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D95218910 fbshipit-source-id: 29dd91b773a567ccf83c1888250493773232140d
1 parent 4f825d3 commit 94a28a4

2 files changed

Lines changed: 26 additions & 4 deletions

File tree

.github/actions/build-npm-package/action.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ inputs:
1010
default: ''
1111
gradle-cache-encryption-key:
1212
description: The encryption key needed to store the Gradle Configuration cache
13+
skip-apple-prebuilts:
14+
description: When true, skip downloading prebuilt Apple artifacts (use when Apple prebuild jobs were skipped)
15+
required: false
16+
default: 'false'
1317

1418
runs:
1519
using: composite
@@ -18,18 +22,21 @@ runs:
1822
shell: bash
1923
run: git config --global --add safe.directory '*'
2024
- name: Download ReactNativeDependencies
25+
if: ${{ inputs.skip-apple-prebuilts != 'true' }}
2126
uses: actions/download-artifact@v7
2227
with:
2328
pattern: ReactNativeDependencies*
2429
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
2530
merge-multiple: true
2631
- name: Download ReactCore artifacts
32+
if: ${{ inputs.skip-apple-prebuilts != 'true' }}
2733
uses: actions/download-artifact@v7
2834
with:
2935
pattern: ReactCore*
3036
path: ./packages/react-native/ReactAndroid/external-artifacts/artifacts
3137
merge-multiple: true
3238
- name: Print Artifacts Directory
39+
if: ${{ inputs.skip-apple-prebuilts != 'true' }}
3340
shell: bash
3441
run: ls -lR ./packages/react-native/ReactAndroid/external-artifacts/artifacts/
3542
- name: Setup gradle

.github/workflows/test-all.yml

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ jobs:
9999

100100
prebuild_react_native_core:
101101
uses: ./.github/workflows/prebuild-ios-core.yml
102+
if: ${{ needs.prebuild_apple_dependencies.result == 'success' }}
102103
with:
103104
use-hermes-prebuilt: ${{ !endsWith(github.ref_name, '-stable') }}
104105
secrets: inherit
@@ -108,6 +109,7 @@ jobs:
108109
runs-on: macos-15
109110
needs:
110111
[prebuild_apple_dependencies, prebuild_react_native_core]
112+
if: ${{ needs.prebuild_react_native_core.result == 'success' }}
111113
steps:
112114
- name: Checkout
113115
uses: actions/checkout@v6
@@ -141,6 +143,7 @@ jobs:
141143
runs-on: macos-15-large
142144
needs:
143145
[prebuild_apple_dependencies, prebuild_react_native_core]
146+
if: ${{ needs.prebuild_react_native_core.result == 'success' }}
144147
continue-on-error: true
145148
strategy:
146149
fail-fast: false
@@ -158,6 +161,7 @@ jobs:
158161

159162
test_e2e_ios_rntester:
160163
needs: test_ios_rntester
164+
if: ${{ needs.test_ios_rntester.result == 'success' }}
161165
uses: ./.github/workflows/e2e-ios-rntester.yml
162166
secrets: inherit
163167

@@ -176,7 +180,8 @@ jobs:
176180
secrets: inherit
177181

178182
test_e2e_ios_templateapp:
179-
needs: [build_npm_package, prebuild_apple_dependencies]
183+
needs: [build_npm_package, prebuild_apple_dependencies, check_code_changes]
184+
if: needs.check_code_changes.outputs.should_test_ios == 'true'
180185
uses: ./.github/workflows/e2e-ios-templateapp.yml
181186
secrets: inherit
182187

@@ -195,7 +200,8 @@ jobs:
195200
secrets: inherit
196201

197202
test_e2e_android_templateapp:
198-
needs: build_npm_package
203+
needs: [build_npm_package, build_android]
204+
if: ${{ always() && needs.build_android.result == 'success' && needs.build_npm_package.result == 'success' }}
199205
uses: ./.github/workflows/e2e-android-templateapp.yml
200206
secrets: inherit
201207

@@ -284,6 +290,7 @@ jobs:
284290

285291
test_e2e_android_rntester:
286292
needs: build_android
293+
if: ${{ needs.build_android.result == 'success' }}
287294
uses: ./.github/workflows/e2e-android-rntester.yml
288295
secrets: inherit
289296

@@ -306,10 +313,15 @@ jobs:
306313
needs:
307314
[
308315
set_release_type,
316+
check_code_changes,
309317
build_android,
310318
prebuild_apple_dependencies,
311319
prebuild_react_native_core,
312320
]
321+
if: |
322+
always() &&
323+
!contains(needs.*.result, 'failure') &&
324+
!contains(needs.*.result, 'cancelled')
313325
container:
314326
image: reactnativecommunity/react-native-android:latest
315327
env:
@@ -327,10 +339,12 @@ jobs:
327339
with:
328340
release-type: ${{ needs.set_release_type.outputs.RELEASE_TYPE }}
329341
gradle-cache-encryption-key: ${{ secrets.GRADLE_CACHE_ENCRYPTION_KEY }}
342+
skip-apple-prebuilts: ${{ needs.check_code_changes.outputs.should_test_ios == 'false' }}
330343

331344
test_android_helloworld:
332345
runs-on: 4-core-ubuntu
333-
needs: build_npm_package
346+
needs: [build_npm_package, build_android]
347+
if: ${{ always() && needs.build_android.result == 'success' && needs.build_npm_package.result == 'success' }}
334348
container:
335349
image: reactnativecommunity/react-native-android:latest
336350
env:
@@ -396,6 +410,7 @@ jobs:
396410
test_ios_helloworld_with_ruby_3_2_0:
397411
runs-on: macos-15
398412
needs: [prebuild_apple_dependencies, prebuild_react_native_core]
413+
if: ${{ needs.prebuild_react_native_core.result == 'success' }}
399414
env:
400415
PROJECT_NAME: iOSTemplateProject
401416
YARN_ENABLE_IMMUTABLE_INSTALLS: false
@@ -410,6 +425,7 @@ jobs:
410425
test_ios_helloworld:
411426
runs-on: macos-15
412427
needs: [prebuild_apple_dependencies, prebuild_react_native_core]
428+
if: ${{ needs.prebuild_react_native_core.result == 'success' }}
413429
strategy:
414430
matrix:
415431
flavor: [Debug, Release]
@@ -510,4 +526,3 @@ jobs:
510526
- name: Verify debugger-shell build
511527
shell: bash
512528
run: node scripts/debugger-shell/build-binary.js
513-

0 commit comments

Comments
 (0)