1
1
name : Build jsc-android and test
2
2
3
3
on :
4
+ workflow_dispatch : {}
4
5
push :
5
6
branches : [main]
6
7
pull_request :
7
8
8
9
jobs :
9
10
build :
10
11
runs-on : ubuntu-latest
11
- container : reactnativecommunity/react-native-android:5.4
12
12
13
13
steps :
14
- - uses : actions/checkout@v1
14
+ - uses : actions/checkout@v4
15
15
16
- - name : 🔨 Use JDK 11
17
- uses : actions/setup-java@v3
16
+ - name : 🔨 Use JDK 17
17
+ uses : actions/setup-java@v4
18
18
with :
19
19
distribution : ' temurin'
20
- java-version : ' 11'
20
+ java-version : ' 17'
21
+
22
+ - name : ⬢ Setup Node
23
+ uses : actions/setup-node@v4
24
+ with :
25
+ node-version : 18
21
26
22
27
- name : Install packages
23
28
run : |
24
- apt-get update
25
- apt-get install coreutils curl git subversion wget python3 ruby gperf -y
26
- wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
27
- echo 'export NVM_DIR="$HOME/.nvm"' >> "${HOME}/.bashrc"
28
- echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> "${HOME}/.bashrc"
29
- source "${HOME}/.bashrc"
30
- nvm install 16
31
- nvm use 16
32
- nvm alias default 16
29
+ sudo apt-get update
30
+ sudo apt-get install coreutils curl git wget python3 ruby gperf -y
33
31
shell : bash
34
32
35
33
- name : Install Android packages
36
34
run : |
35
+ export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools
36
+ yes | sdkmanager --licenses || true
37
37
sdkmanager \
38
38
"cmake;3.22.1" \
39
- "ndk;23.2.8568313 "
39
+ "ndk;27.1.12297006 "
40
40
# move out builtin icu headers from ndk and prevent icu build errors
41
- mv "${ANDROID_HOME}/ndk/23.2.8568313/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode" "${ANDROID_HOME}/ndk/23.2.8568313/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode2"
42
- echo "ANDROID_NDK=$ANDROID_HOME/ndk/23.2.8568313" >> $GITHUB_ENV
41
+ mv "${ANDROID_HOME}/ndk/27.1.12297006/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode" "${ANDROID_HOME}/ndk/27.1.12297006/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/unicode2"
42
+
43
+ echo "ANDROID_NDK=$ANDROID_HOME/ndk/27.1.12297006" >> $GITHUB_ENV
44
+ echo "PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools" >> $GITHUB_ENV
43
45
shell : bash
44
46
45
47
- name : Build
@@ -57,38 +59,57 @@ jobs:
57
59
mv dist.unstripped archive/
58
60
shell : bash
59
61
60
- - uses : actions/upload-artifact@v2
62
+ - uses : actions/upload-artifact@v4
61
63
with :
62
64
name : archive
63
65
path : archive
64
66
65
67
66
68
test :
67
69
needs : build
68
- runs-on : macOS -latest
70
+ runs-on : ubuntu -latest
69
71
70
72
steps :
71
- - uses : actions/checkout@v1
73
+ - uses : actions/checkout@v4
74
+
75
+ - name : 🧹 Cleanup GitHub Linux runner disk space
76
+ uses : ./.github/actions/cleanup-linux-disk-space
72
77
73
- - name : 🔨 Use JDK 11
74
- uses : actions/setup-java@v3
78
+ - name : 🔨 Use JDK 17
79
+ uses : actions/setup-java@v4
75
80
with :
76
81
distribution : ' temurin'
77
- java-version : ' 11 '
82
+ java-version : ' 17 '
78
83
79
- - uses : actions/download-artifact@v2
84
+ - uses : actions/download-artifact@v4
80
85
with :
81
86
name : archive
82
87
path : archive
83
88
89
+ - name : 🍺 Install Maestro
90
+ run : |
91
+ curl -Ls "https://get.maestro.mobile.dev" | bash
92
+ echo "${HOME}/.maestro/bin" >> $GITHUB_PATH
93
+
84
94
- name : Install node packages
85
95
run : yarn install --frozen-lockfile
86
96
working-directory : test
87
97
98
+ - name : ⚙️ Enable KVM for Android virtualization
99
+ shell : bash
100
+ run : |
101
+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
102
+ sudo udevadm control --reload-rules
103
+ sudo udevadm trigger --name-match=kvm
104
+
88
105
- name : Run test
89
106
uses : reactivecircus/android-emulator-runner@v2
90
107
with :
91
- api-level : 21
108
+ api-level : 24
92
109
arch : x86_64
93
- disable-animations : false
94
- script : mv archive/dist . && cd test && yarn && cd android && ./gradlew :app:assembleRelease :app:assembleAndroidTest :app:connectedAndroidTest
110
+ target : google_apis
111
+ working-directory : test
112
+ script : |
113
+ mv ../archive/dist ../dist
114
+ npx expo run:android --variant release --no-bundler
115
+ maestro test maestro.yaml
0 commit comments