Skip to content

Commit c145761

Browse files
committed
Move Android template app build to Docker
1 parent 8f53555 commit c145761

3 files changed

Lines changed: 95 additions & 35 deletions

File tree

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: Build Android Template App
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
workflow_call:
8+
9+
jobs:
10+
build:
11+
runs-on: 4-core-ubuntu
12+
container:
13+
image: reactnativecommunity/react-native-android:latest
14+
env:
15+
LC_ALL: C.UTF8
16+
TERM: 'dumb'
17+
GRADLE_OPTS: '-Dorg.gradle.daemon=false'
18+
REACT_NATIVE_DOWNLOADS_DIR: /opt/react-native-downloads
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
flavor: [debug, release]
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v6
26+
- name: Setup git safe folders
27+
run: git config --global --add safe.directory '*'
28+
- name: Setup node.js
29+
uses: ./.github/actions/setup-node
30+
- name: Run yarn
31+
uses: ./.github/actions/yarn-install
32+
- name: Download Maven Local
33+
uses: actions/download-artifact@v7
34+
with:
35+
name: maven-local
36+
path: /tmp/react-native-tmp/maven-local
37+
- name: Download React Native Package
38+
uses: actions/download-artifact@v7
39+
with:
40+
name: react-native-package
41+
path: /tmp/react-native-tmp
42+
- name: Build template app
43+
shell: bash
44+
run: |
45+
REACT_NATIVE_PKG=$(find /tmp/react-native-tmp -type f -name "*.tgz")
46+
MAVEN_LOCAL=/tmp/react-native-tmp/maven-local
47+
48+
# Stable branches use their matching template branch. All other
49+
# builds use the template's main branch.
50+
BRANCH=${{ github.ref_name }}
51+
if ! [[ $BRANCH == *-stable* ]]; then
52+
BRANCH=main
53+
fi
54+
node ./scripts/e2e/init-project-e2e.js \
55+
--projectName RNTestProject \
56+
--currentBranch "$BRANCH" \
57+
--directory /tmp/RNTestProject \
58+
--pathToLocalReactNative "$REACT_NATIVE_PKG"
59+
60+
echo -e "\nreact.internal.mavenLocalRepo=$MAVEN_LOCAL" >> /tmp/RNTestProject/android/gradle.properties
61+
62+
CAPITALIZED_FLAVOR=$(echo "${{ matrix.flavor }}" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}')
63+
cd /tmp/RNTestProject/android
64+
./gradlew --no-daemon \
65+
--init-script "$GITHUB_WORKSPACE/.github/workflow-scripts/legacy-jni-packaging.gradle" \
66+
assemble$CAPITALIZED_FLAVOR \
67+
-PreactNativeArchitectures=arm64-v8a
68+
- name: Upload template app APK
69+
uses: actions/upload-artifact@v6
70+
with:
71+
name: android-templateapp-${{ matrix.flavor }}
72+
path: /tmp/RNTestProject/android/app/build/outputs/apk/${{ matrix.flavor }}/app-${{ matrix.flavor }}.apk
73+
compression-level: 0
74+
if-no-files-found: error

‎.github/workflows/e2e-android-templateapp.yml‎

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -33,52 +33,33 @@ jobs:
3333
uses: ./.github/actions/setup-node
3434
- name: Run yarn
3535
uses: ./.github/actions/yarn-install
36-
- name: Set up JDK 17
37-
uses: actions/setup-java@v5
38-
with:
39-
java-version: '17'
40-
distribution: 'zulu'
41-
- name: Download Maven Local
42-
uses: actions/download-artifact@v7
43-
with:
44-
name: maven-local
45-
path: /tmp/react-native-tmp/maven-local
4636
- name: Download React Native Package
37+
if: matrix.flavor == 'debug'
4738
uses: actions/download-artifact@v7
4839
with:
4940
name: react-native-package
5041
path: /tmp/react-native-tmp
51-
- name: Print /tmp folder
52-
run: ls -lR /tmp/react-native-tmp
53-
- name: Prepare artifacts
54-
id: prepare-artifacts
42+
- name: Prepare Metro workspace
43+
if: matrix.flavor == 'debug'
5544
run: |
5645
REACT_NATIVE_PKG=$(find /tmp/react-native-tmp -type f -name "*.tgz")
57-
echo "React Native tgs is $REACT_NATIVE_PKG"
58-
59-
MAVEN_LOCAL=/tmp/react-native-tmp/maven-local
60-
echo "Maven local path is $MAVEN_LOCAL"
6146
6247
# For stable branches, we want to use the stable branch of the template
6348
# In all the other cases, we want to use "main"
6449
BRANCH=${{ github.ref_name }}
6550
if ! [[ $BRANCH == *-stable* ]]; then
6651
BRANCH=main
6752
fi
68-
node ./scripts/e2e/init-project-e2e.js --projectName RNTestProject --currentBranch $BRANCH --directory /tmp/RNTestProject --pathToLocalReactNative $REACT_NATIVE_PKG
69-
70-
echo "Feed maven local to gradle.properties"
71-
cd /tmp/RNTestProject
72-
echo -e "\nreact.internal.mavenLocalRepo=$MAVEN_LOCAL" >> android/gradle.properties
73-
74-
# Build
75-
cd android
76-
CAPITALIZED_FLAVOR=$(echo "${{ matrix.flavor }}" | awk '{print toupper(substr($0, 1, 1)) substr($0, 2)}')
77-
./gradlew --no-daemon \
78-
--init-script "$GITHUB_WORKSPACE/.github/workflow-scripts/legacy-jni-packaging.gradle" \
79-
assemble$CAPITALIZED_FLAVOR \
80-
-PreactNativeArchitectures=arm64-v8a
81-
53+
node ./scripts/e2e/init-project-e2e.js \
54+
--projectName RNTestProject \
55+
--currentBranch "$BRANCH" \
56+
--directory /tmp/RNTestProject \
57+
--pathToLocalReactNative "$REACT_NATIVE_PKG"
58+
- name: Download template app APK
59+
uses: actions/download-artifact@v7
60+
with:
61+
name: android-templateapp-${{ matrix.flavor }}
62+
path: /tmp/android-templateapp
8263
- name: Download previous per-flow test state
8364
if: ${{ inputs.retry-attempt > 0 }}
8465
continue-on-error: true
@@ -103,10 +84,9 @@ jobs:
10384
uses: ./.github/actions/maestro-android
10485
timeout-minutes: 90
10586
with:
106-
app-path: /tmp/RNTestProject/android/app/build/outputs/apk/${{ matrix.flavor }}/app-${{ matrix.flavor }}.apk
87+
app-path: /tmp/android-templateapp/app-${{ matrix.flavor }}.apk
10788
app-id: com.rntestproject
10889
maestro-flow: ./scripts/e2e/.maestro/
109-
install-java: 'false'
11090
flavor: ${{ matrix.flavor }}
11191
working-directory: /tmp/RNTestProject
11292
emulator-api-level: '35'

‎.github/workflows/test-all.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,9 +263,15 @@ jobs:
263263
uses: ./.github/workflows/test-ios-spm-newapp.yml
264264
secrets: inherit
265265

266-
test_e2e_android_templateapp:
266+
build_android_templateapp:
267267
needs: [build_npm_package, build_android]
268268
if: ${{ always() && needs.build_android.result == 'success' && needs.build_npm_package.result == 'success' }}
269+
uses: ./.github/workflows/build-android-templateapp.yml
270+
secrets: inherit
271+
272+
test_e2e_android_templateapp:
273+
needs: build_android_templateapp
274+
if: ${{ needs.build_android_templateapp.result == 'success' }}
269275
uses: ./.github/workflows/e2e-android-templateapp.yml
270276
secrets: inherit
271277

0 commit comments

Comments
 (0)