2017-10-12 7 views
1

내 프로젝트 중 하나에 대해 travis CI를 사용하려고하는데 작동하지 못합니다. .travis.yml 설정 파일을 만들었고 빌드가 지나가고있었습니다. 하지만 놀랍게도 빌드가 몇 시간 후에 커밋을 시도 할 때 다시 실패하기 시작했습니다. 또한 이전에 통과 한 빌드를 다시 시작할 때 빌드가 실패했습니다. 왜 이런 일이 무작위로 일어나는 지 이해할 수 없습니다. 여기 Travis CI 오류 : 패키지 관리자에 액세스 할 수 없습니다. 시스템이 실행 중입니까?

는 트래비스 로그입니다 : Travis Log

과 .travis.yml 파일은 다음과 같습니다 :

language: android 
jdk: oraclejdk8 
sudo: required 
env: 
    matrix: 
    - ANDROID_TARGET=android-21 ANDROID_ABI=armeabi-v7a 

android: 
    components: 
    - tools 
    - platform-tools 
    - tools 
    - build-tools-26.0.2 
    - $ANDROID_TARGET 
    - android-26 
    - sys-img-armeabi-v7a-$ANDROID_TARGET 
    licenses: 
    - android-sdk-preview-license-.+ 
    - android-sdk-license-.+ 
    - google-gdk-license-.+ 
before_install: 
    - mkdir "$ANDROID_HOME/licenses" || true 
    - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" 
    - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" 
    - chmod +x gradlew 
    - ./gradlew dependencies || true 
before_cache: 
    - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 
    - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ 
cache: 
    directories: 
    - $HOME/.gradle/caches/ 
    - $HOME/.gradle/wrapper/ 
    - $HOME/.android/build-cache 
before_script: 
    # Create and start emulator 
    - echo no | android create avd --force -n test -t $ANDROID_TARGET --abi $ANDROID_ABI 
    - emulator -avd test -no-skin -no-audio -no-window & 
    - adb wait-for-device 
    - adb shell input keyevent 82 & 

script: ./gradlew connectedAndroidTest 

그리고 Gradle을 파일 관련 조각 :

android { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.2" 
    defaultConfig { 
     applicationId "com.amit.realmmvp" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    lintOptions { 
     abortOnError false 
    } 
} 

이 있습니다를 비슷한 문제에 관한 스택 오버플로와 비슷한 질문이 있지만 모두 Android Studio 및 에뮬레이터와 관련이 없습니다. 그러나 travis 설정 파일에서 에뮬레이터가 온라인 상태가 될 때까지 기다려달라고 요청했습니다. - adb wait-for-device

아무도 알아 주실 수 있습니까? 감사.

편집

빌드 프로세스는 여기에 실패

:app:connectedDebugAndroidTestUnable to install /home/travis/build/AmitBarjatya/RealmMvp/app/build/outputs/apk/debug/app-debug.apk 
com.android.ddmlib.InstallException: Unknown failure (Error: Could not access the Package Manager. Is the system running?) 
    at com.android.ddmlib.Device.installRemotePackage(Device.java:1004) 
    at com.android.ddmlib.Device.installPackage(Device.java:911) 
    at com.android.builder.testing.ConnectedDevice.installPackage(ConnectedDevice.java:122) 
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:126) 
    at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:52) 
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) 
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 
+0

트래비스 로그에 문제가 있습니까? –

+0

실제로 여기에서 실패합니다. app : connectedDebugAndroidTestUnable /home/travis/build/AmitBarjatya/RealmMvp/app/build/outputs/apk/debug/app-debug.apk com.android.ddmlib.InstallException : 알 수없는 오류 (오류 : 패키지 관리자에 액세스 할 수 없습니다. 시스템이 실행 중입니까?) –

+0

주석에 있지만 게시자의 질문으로 게시하도록 요청했습니다. 그러면 질문이 아주 좋아 보일 것입니다. –

답변

1

대신

- adb wait-for-device 

사용

- android-wait-for-emulator 

android-wait-for-emulator 스크립트는 장치를 기다릴뿐만 아니라 부팅 애니메이션이 너무 완만 할 때까지 기다립니다.

+0

그것은 일했다! 고마워. 재시작했을 때 이미 통과 된 빌드가 실패한 이유를 알고 있습니까? –

+0

우연의 일치 ... 아니면 그들은이 문제로 인해 컨테이너로 뭔가를 바 꾸었습니다. – tynn