В данный момент я пытаюсь использовать 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, если точно такая же задача работает, если я запускаю на локальном докере