#amazon-ec2 #android-emulator #react-native-android
#amazon-ec2 #android-эмулятор #react-native
Вопрос:
Опишите ошибку Моя цель — запустить модульный тест e2e detox для мобильного приложения на языке react-native из Gitlab-ci на экземпляре AWS ec2
- AWS EC2: процессор c5.xl с 4 процессорами / 8 ГБ оперативной памяти
Я просто создаю экземпляр ec2 c5.xlarge на AWS и устанавливаю docker и gitlab-runner с docker executor (изображение: alpine) на нем.
Здесь мой .gitlab-ci.yml
:
stages:
- unit-test
variables:
LC_ALL: 'en_US.UTF-8'
LANG: 'en_US.UTF-8'
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
before_script:
- node -v
- npm -v
- yarn -v
detox-android:
stage: unit-test
image: reactnativecommunity/react-native-android
before_script:
- echo fs.inotify.max_user_watches=524288 | tee -a /etc/sysctl.conf amp;amp; sysctl -p
- yarn install:module_only
script:
- mkdir -p /root/.android amp;amp; touch /root/.android/repositories.cfg
#- $ANDROID_HOME/tools/bin/sdkmanager --list --verbose
- echo yes | $ANDROID_HOME/tools/bin/sdkmanager --channel=0 --verbose "system-images;android-25;google_apis;armeabi-v7a"
- echo no | $ANDROID_HOME/tools/bin/avdmanager --verbose create avd --force --name "Pixel_API_28_AOSP" --package "system-images;android-25;google_apis;armeabi-v7a" --sdcard 200M --device 11
- echo "Waiting emulator is ready..."
- emulator -avd "Pixel_API_28_AOSP" -debug-init -no-window -no-audio -gpu swiftshader_indirect -show-kernel amp;
- adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82'
- echo "Emulator is ready!"
- yarn detox-emu:build:android
- yarn detox-emu:test:android
tags:
- detox-android
only:
- ci/unit-test
вот сценарий в моем package.json
для ci:
{
scripts: {
"detox-emu:test:android": "npx detox test -c android.emu.release.ci --headless -l verbose",
"detox-emu:build:android": "npx detox build -c android.emu.release.ci"
}
}
здесь мой .detoxrc.json
{
"testRunner": "jest",
"runnerConfig": "e2e/config.json",
"configurations": {
"android.real": {
"binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
"build": "cd android amp;amp; ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug amp;amp; cd ..",
"type": "android.attached",
"device": {
"adbName": "60ac9404"
}
},
"android.emu.debug": {
"binaryPath": "android/app/build/outputs/apk/debug/app-debug.apk",
"build": "cd android amp;amp; ./gradlew assembleDebug assembleAndroidTest -DtestBuildType=debug amp;amp; cd ..",
"type": "android.emulator",
"device": {
"avdName": "Pixel_API_28_AOSP"
}
},
"android.emu.release": {
"binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
"build": "cd android amp;amp; ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release amp;amp; cd ..",
"type": "android.emulator",
"device": {
"avdName": "Pixel_API_28_AOSP"
}
},
"android.emu.release.ci": {
"binaryPath": "android/app/build/outputs/apk/release/app-release.apk",
"build": "cd android amp;amp; ./gradlew assembleRelease assembleAndroidTest -DtestBuildType=release amp;amp; cd ..",
"type": "android.emulator",
"device": {
"avdName": "Pixel_API_28_AOSP"
}
}
}
}
Вот что я перепробовал много способов настройки эмулятора Android на EC2, но, похоже, он работает только с эмулятором armeabi-v7a
из-за виртуализации процессора. Похоже, что это последний доступный эмулятор для armeabi-v7a
is system-images;android-25;google_apis;armeabi-v7a
. Похоже, тогда я смогу запустить эмулятор только с sdkversion 25 на экземпляре EC2.
В моем мобильном приложении я использую mapbox для некоторых функций, которые требуют с detox minSdkVersion 26. Это я также установил в своем build.gradle.
Вы можете увидеть полные журналы моего CI в приложении. Log_CI.txt
Я получаю сообщение об ошибке, потому что detox не находит мой эмулятор для имени Pixel_API_28_AOSP
. Эта ошибка может быть связана с minSdkVersion? Или я что-то пропустил в своем CI?
Окружающая среда (пожалуйста, заполните следующую информацию):
- Детоксикация: 17.10.2
- React Native: 0.63.2
- Устройство: эмулятор
system-images;android-25;google_apis;armeabi-v7a
- ОС: android
Заранее спасибо за вашу помощь!