Конвейеры BitBucket зависают при попытке установить apk при запуске подключенного AndroidTest - PullRequest
0 голосов
/ 21 января 2019

В данный момент я пытаюсь использовать Bitbucket Pipelines для запуска тестов для нашего приложения.Однако, когда он пытается установить apk в эмуляторе, конвейер зависает / останавливается на этой строке:

execute: running pm install -r -t -d -t "/data/local/tmp/app-debug.apk"

и в конечном итоге выдает ShellCommandUnresponsiveException.

Я попытался увеличитьвремя, необходимое для выполнения команды adb до 20 минут, но это не решает проблему.

Я также пытался выполнить ту же самую команду с -debug, что я могу наблюдать после определенного периода времени.Дело в том, что он выводит несколько очень похожих журналов несколько раз, но, похоже, не является продуктивным:

14:25:27.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 32894566400, Free: 15448174592}
14:25:27.747 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 32894566400, Free: 15448174592}
14:25:27.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 1431830528, Committed: 1113063424}
14:25:32.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 32894566400, Free: 15404277760}
14:25:32.747 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 32894566400, Free: 15404277760}
14:25:32.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 1431830528, Committed: 1113063424}
14:25:34.411 [DEBUG] [org.gradle.launcher.daemon.server.Daemon] DaemonExpirationPeriodicCheck running
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Waiting to acquire shared lock on daemon addresses registry.
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Lock acquired on daemon addresses registry.
14:25:34.411 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] Releasing lock on daemon addresses registry.
14:25:37.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 32894566400, Free: 15367606272}
14:25:37.747 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 32894566400, Free: 15367606272}
14:25:37.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 1431830528, Committed: 1113063424}
14:25:42.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting OS memory status event {Total: 32894566400, Free: 15328276480}
14:25:42.747 [DEBUG] [org.gradle.launcher.daemon.server.health.LowMemoryDaemonExpirationStrategy] Received memory status update: {Total: 32894566400, Free: 15328276480}
14:25:42.747 [DEBUG] [org.gradle.process.internal.health.memory.MemoryManager] Emitting JVM memory status event {Maximum: 1431830528, Committed: 1113063424}

Я попытался запустить ту же команду на докере на моем рабочем столе, задача работает нормально и завершенав течение 2 минут.Ниже приведен сценарий для конвейера:

image: mingc/android-build-box:latest

options:
  size: 2x # just to make sure we have enough resources

pipelines:
  default:
    - step:
        caches:
          - gradle
        script: 
          # set up necessities
          - sdkmanager "system-images;android-25;google_apis;armeabi-v7a"
          - sdkmanager --update
          - sdkmanager --licenses
          - echo no | avdmanager create avd --force --name test_device --package "system-images;android-25;google_apis;armeabi-v7a" -c 100M
          - $ANDROID_HOME/emulator/emulator -no-window -no-audio -avd test_device -no-snapshot-load -no-snapshot-save &
          # build while waiting for device to be completely started
          - bash ./gradlew build
          - bash ./gradlew assembleDebug
          # make sure the device is completely started before proceed
          - while [ "`adb shell getprop init.svc.bootanim | tr -d '\r' `" != "stopped" ] ; do sleep 1 && adb shell getprop init.svc.bootanim | tr -d '\r' ; done
          # unlocking the screen
          - adb shell input keyevent 82
          - bash ./gradlew connectedAndroidTest
          - bash ./gradlew assembleRelease

сводка:

ожидается: конвейеры Bitbucket должны запускать как модульный тест, так и инструментальный тест

фактический результат: конвейер зависаетconnectedAndroidTest при попытке установить apk и не может продолжить

вопрос: что нужно сделать, чтобы установить apk на Bitbucket Pipelines, если точно такая же задача работает, если я запускаю на локальном докере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...