Skip to content

Commit 2c68b80

Browse files
committed
ci: add Metro bundle check matrix to catch JS errors before native build
1 parent c9d2a9f commit 2c68b80

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

.github/workflows/build-apps.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ jobs:
1414
outputs:
1515
android_apps: ${{ steps.matrix.outputs.android_apps }}
1616
ios_apps: ${{ steps.matrix.outputs.ios_apps }}
17+
bundle_apps: ${{ steps.matrix.outputs.bundle_apps }}
1718
steps:
1819
- name: Checkout
1920
uses: actions/checkout@v6
@@ -122,12 +123,47 @@ jobs:
122123
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
123124
echo "android_apps=$all" >> "$GITHUB_OUTPUT"
124125
echo "ios_apps=$all" >> "$GITHUB_OUTPUT"
126+
echo "bundle_apps=$all" >> "$GITHUB_OUTPUT"
125127
else
126128
changes='${{ steps.filter.outputs.changes }}'
127129
android_apps=$(echo "$changes" | jq -c '[.[] | select(endswith("-android")) | sub("-android$"; "")]')
128130
ios_apps=$(echo "$changes" | jq -c '[.[] | select(endswith("-ios")) | sub("-ios$"; "")]')
131+
bundle_apps=$(echo "$changes" | jq -c '[.[] | select(endswith("-app")) | sub("-app$"; "")]')
129132
echo "android_apps=$android_apps" >> "$GITHUB_OUTPUT"
130133
echo "ios_apps=$ios_apps" >> "$GITHUB_OUTPUT"
134+
echo "bundle_apps=$bundle_apps" >> "$GITHUB_OUTPUT"
135+
fi
136+
137+
bundle:
138+
needs: detect-changes
139+
if: needs.detect-changes.outputs.bundle_apps != '[]' && needs.detect-changes.outputs.bundle_apps != ''
140+
runs-on: ubuntu-latest
141+
strategy:
142+
fail-fast: false
143+
matrix:
144+
app: ${{ fromJSON(needs.detect-changes.outputs.bundle_apps) }}
145+
platform: [android, ios]
146+
concurrency:
147+
group: bundle-${{ matrix.platform }}-${{ matrix.app }}-${{ github.ref }}
148+
cancel-in-progress: true
149+
steps:
150+
- name: Checkout
151+
uses: actions/checkout@v6
152+
- name: Setup
153+
uses: ./.github/actions/setup
154+
- name: Bundle JS for ${{ matrix.platform }}
155+
working-directory: apps/${{ matrix.app }}
156+
run: |
157+
if [ "${{ matrix.app }}" = "bare-rn" ]; then
158+
npx react-native bundle \
159+
--platform ${{ matrix.platform }} \
160+
--entry-file index.js \
161+
--bundle-output /tmp/bundle.js \
162+
--dev false
163+
else
164+
npx expo export \
165+
--platform ${{ matrix.platform }} \
166+
--output-dir /tmp/expo-export
131167
fi
132168
133169
build-android:

0 commit comments

Comments
 (0)