-
-
Save edvinasbartkus/4c09d85ac6f2a2f9eec9d9c8deac5e61 to your computer and use it in GitHub Desktop.
name: Android | |
on: [push] | |
jobs: | |
build: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v1 | |
with: | |
fetch-depth: 1 | |
- name: Node | |
uses: actions/setup-node@v1 | |
- name: Use specific Java version for sdkmanager to work | |
uses: joschi/setup-jdk@v1 | |
with: | |
java-version: 'openjdk8' | |
architecture: 'x64' | |
- name: Download Android Emulator Image | |
run: | | |
echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-29;google_apis;x86" | |
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd --force --name emu --device "Nexus 5X" -k 'system-images;android-29;google_apis;x86' | |
$ANDROID_HOME/emulator/emulator -list-avds | |
- name: Install node_modules | |
run: | | |
yarn install --frozen-lockfile | |
- name: Build for detox | |
run: | | |
yarn build-detox-android | |
- name: Android Emulator | |
timeout-minutes: 10 | |
continue-on-error: true | |
run: | | |
echo "Starting emulator" | |
nohup $ANDROID_HOME/emulator/emulator -avd emu -no-audio -no-snapshot -no-window & | |
$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82' | |
$ANDROID_HOME/platform-tools/adb devices | |
echo "Emulator started" | |
- name: Android Detox | |
run: yarn start & yarn test-detox-android |
{ | |
"scripts": { | |
"build-detox-android": "detox build -c android.emu.debug", | |
"test-detox-android": "detox test -c android.emu.debug" | |
}, | |
"detox": { | |
"configurations": { | |
"android.emu.debug": { | |
"binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk", | |
"build": | |
"cd android && ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug && cd ..", | |
"type": "android.emulator", | |
"name": "emu" | |
} | |
} | |
} | |
} |
@coip yes, I am aware of this. I did try to use Linux for Android Detox. However, I have encountered an issue that was not easily fixable.
If I remember correctly, the problem was that $ANDROID_HOME/tools/bin/sdkmanager and $ANDROID_HOME/tools/bin/adkmanager did not exist. It would require to install Android Build Tools from scratch and it would cause other issues.
I will try to revisit this and maybe this can be optimized.
😅 just went through this... you are correct. my apologies.
the magnitude of time seems in the favor of even downloading/installing given a ~12min build workflow.
I might end up using a self-hosted runner, unsure yet.
Complication with/Lack of KVM related deps on the Linux host drove me to just use a Mac runner for now, will try to circle back if I find a Linux path for this.
Thanks for sharing!
fwiw might try utilizing linux minutes instead of mac:
ref