React-Native Detox Gitlab-ci AWS EC2 / Не удается загрузить эмулятор Android с именем

#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

Заранее спасибо за вашу помощь!