2016-01-08 21 views
6

Dowiedziałem się, że za każdym razem, gdy Travis CI tworzy projekt, musi on ponownie pobrać wszystkie pakiety SDK, takie jak narzędzia platformy, biblioteka pomocnicza, obecny pakiet SDK itp.Dlaczego Travis CI pobiera wszystko za każdym razem, gdy buduje?

Czy można tego uniknąć i sprawić, by Travis ponownie wykorzystał to, co zostało pobrane za pierwszym razem?

I zapewne jakieś błędy w moim .travis.yml pliku, tutaj jest kopia

language: android 
android: 
    components: 
    # Uncomment the lines below if you want to 
    # use the latest revision of Android SDK Tools 
    - platform-tools 
    - tools 

    # The BuildTools version used by your project 
    - build-tools-23.0.2 

    # The SDK version used to compile your project 
    - android-23 

    # Additional components 
    - extra-android-support 
    - extra-google-google_play_services 
    - extra-google-m2repository 
    - extra-android-m2repository 
    - addon-google_apis-google-19 

    # Specify at least one system image, 
    # if you need to run emulator(s) during your tests 
    # - sys-img-armeabi-v7a-android-19 
    # - sys-img-x86-android-17 

script: 
    - ./gradlew check 
    - ./gradlew test --continue 
    # - ./gradlew build connectedCheck 
+0

Mam ten sam problem. Myślę, że to dlatego, że wsparcie dla Androida jest w wersji beta. –

+1

Ten problem został opublikowany tutaj https://github.com/travis-ci/travis-ci/issues/4065 –

Odpowiedz

0

Dlaczego Travis CI pobrać za każdym razem wszystko to buduje?

Mówimy o tym here, Travis-ci pobiera pamięć podręczną z S3, więc nie ma znaczącej poprawy szybkości buforowania dużych plików, takich jak Android SDK.

Jak dołączyć zestaw SDK do Androida w pamięci podręcznej Travis-ci? (Nie zalecane)

Odpowiednie bity są tutaj, można dodać do schowka dowolnego pliku lubisz i znać jego ścieżkę:

cache: 
    directories: 
    - ${TRAVIS_BUILD_DIR}/gradle/caches/ 
    - ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/ 
    - ${TRAVIS_BUILD_DIR}/android-sdk/extras/ # please don't include sys-images 

Zrobiłem to dawno temu, można zobaczyć kod in the link shared by @nicolas-f:

language: android 
jdk: oraclejdk8 
env: 
    global: 
    - GRADLE_USER_HOME=${TRAVIS_BUILD_DIR}/gradle 
    - ANDROID_HOME=${TRAVIS_BUILD_DIR}/android-sdk 
    - SDK=${TRAVIS_BUILD_DIR}/android-sdk 
    - PATH=${GRADLE_USER_HOME}/bin/:${SDK}/:${SDK}/tools/:${SDK}/platform-tools/:${PATH} 
before_install: 
    - export OLD_SDK=/usr/local/android-sdk-24.0.2; 
              mkdir -p ${SDK}; 
              cp -u -R ${OLD_SDK}/platforms ${SDK}/platforms; 
              cp -u -R ${OLD_SDK}/system-images ${SDK}/system-images; 
              cp -u -R ${OLD_SDK}/tools ${SDK}/tools 

cache: 
    apt: true 
    directories: 
    - ${TRAVIS_BUILD_DIR}/gradle/caches/ 
    - ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/ 
    - ${TRAVIS_BUILD_DIR}/android-sdk/extras/ 
android: 
    components: 
    # Update Android SDK Tools 
    - tools 
    - platform-tools 
    - build-tools-23.0.2 
    - android-23  
    - add-on 
    - extra 

script: 
    - ./gradlew check 

Użyj ls, aby potwierdzić, że ścieżka SDK nie została zmieniona innym razem.

Obecnie nie jest konieczne przenoszenie zestawu SDK i konieczne jest aktualizowanie innych rzeczy, być może dodawanie kolejnego tools po platform-tools, ten kod jest nieaktualny.

+0

Dzięki za odpowiedź. Czy możesz wyjaśnić więcej? Z twojego kodu wynika, że ​​'/ usr/local/android-sdk-24.0.2' lub bezwzględna ścieżka do SDK zawsze istnieje. I kopiujesz tam formularz do pozycji SDK, której szuka Travis ci? Mówisz jednak, że nie ma teraz potrzeby kopiowania pakietu SDK. Jak więc możemy zapobiec pobieraniu SDK przez Travis CI? Przeczytałem również o tym, że za każdym razem, gdy uruchamia on nowy, świeży kontener dokera, musi ponownie pobrać wszystko. Czy jest jakiś sposób obejścia tego? Dzięki! –

+0

Zignoruj ​​przestarzały przykład, Odpowiednie bity są tutaj, możesz dodać do pamięci podręcznej dowolny plik, który ci się podoba i znać jego ścieżkę: 'cache:' 'katalogi:' '- /usr/local/android-sdk-24.0.2 ; 'like [tutaj] (https://github.com/connectbot/connectbot/blob/master/.travis.yml#L13), ale nie jest to zalecane, ponieważ dodawanie obrazów systemowych do pamięci podręcznej jest przesadzone. – albodelu

Powiązane problemy