2016-10-27 6 views
6

У меня мало открытых библиотек, на которых я установил Travis CI. Они работают нормально, за исключением того, что для проверки сборки требуется 25 минут. Большую часть времени тратится на загрузку зависимостей и платформ Android SDK.Кэширование Android SDK в Travis CI

настоящее время у меня следующий в моем .travis.yml

language: android 
jdk: 
    - oraclejdk8 
before_install: 
- chmod +x gradlew 
env: 
    global: 
    - ANDROID_API_LEVEL=24 
    - EMULATOR_API_LEVEL=21 
    - ANDROID_BUILD_TOOLS_VERSION=24.0.1 
    - ANDROID_ABI=google_apis/armeabi-v7a 
    - ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default) 

android: 
    components: 
    - tools 
    - tools 
    - platform-tools 
    - build-tools-$ANDROID_BUILD_TOOLS_VERSION 
    - android-$ANDROID_API_LEVEL 
    - android-$EMULATOR_API_LEVEL 
    - extra 
    - add-on 
    - extra-google-m2repository 
    - extra-android-m2repository 
    # Google Play Services 
    - extra-google-google_play_services 
    # Support library 
    - extra-android-support 

    - addon-google_apis-google-$ANDROID_API_LEVEL 
    - addon-google_apis-google-$EMULATOR_API_LEVEL 

    - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL 
    - sys-img-armeabi-v7a-addon-google_apis-google-$EMULATOR_API_LEVEL 

before_cache: 
    - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 
cache: 
    directories: 
    - $HOME/.gradle/wrapper 
    - $HOME/.gradle/native 
    - $HOME/.gradle/daemon 
    - $HOME/.gradle/caches/jars-1 
    - $HOME/.gradle/caches/2.3 

before_script: 
    - echo no | android create avd --force -n test -t android-21 --abi armeabi-v7a 
    - emulator -avd test -no-skin -no-audio -no-window & 
    - android-wait-for-emulator 
    - adb shell input keyevent 82 & 

script: 
    - gradle clean check 

Как вы можете видеть, что я уже в кэше несколько Gradle каталогов, но он по-прежнему не кэширует Android SDK платформы. Я уверен, что мне не хватает нескольких каталогов, которые мне еще нужно кэшировать.

Есть ли способ сделать сборки быстрее, кэшируя эти платформы и зависимости SDK?

ответ

2

Это не рекомендуется кэширование SDK инструментов, но это возможно, я сделал это в прошлом, я буду искать для образца

Пожалуйста, тем временем, удалить эти ненужные линии, чтобы ускорить его и сказать мне, если это работает ,

- extra 
    - add-on 
    # Google Play Services 
    - extra-google-google_play_services 
    # Support library 
    - extra-android-support 
    - addon-google_apis-google-$ANDROID_API_LEVEL 
    - sys-img-armeabi-v7a-addon-google_apis-google-$ANDROID_API_LEVEL 

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

- add-on 
- extra 


Installing Archives: 
    Preparing to install archives 
    Downloading GPU Debugging tools, revision 1.0.3 
    Installing GPU Debugging tools, revision 1.0.3 
    Installed GPU Debugging tools, revision 1.0.3 
    Downloading Android Support Repository, revision 29 
    Installing Android Support Repository, revision 29 
    Installed Android Support Repository, revision 29 
    Downloading Android Support Library, revision 23.2.1 
    Installing Android Support Library, revision 23.2.1 
    Installed Android Support Library, revision 23.2.1 
    Downloading Google AdMob Ads SDK, revision 11 (Obsolete) 
    Installing Google AdMob Ads SDK, revision 11 (Obsolete) 
    Installed Google AdMob Ads SDK, revision 11 (Obsolete) 
    Downloading Google Analytics App Tracking SDK, revision 3 (Obsolete) 
    Installing Google Analytics App Tracking SDK, revision 3 (Obsolete) 
    Installed Google Analytics App Tracking SDK, revision 3 (Obsolete) 
    Downloading Android Auto Desktop Head Unit emulator, revision 1.1 
    Installing Android Auto Desktop Head Unit emulator, revision 1.1 
    Installed Android Auto Desktop Head Unit emulator, revision 1.1 
    Downloading Google Cloud Messaging for Android Library, revision 3 (Obsolete) 
    Installing Google Cloud Messaging for Android Library, revision 3 (Obsolete) 
    Installed Google Cloud Messaging for Android Library, revision 3 (Obsolete) 
    Downloading Google Play services for Froyo, revision 12 (Obsolete) 
    Installing Google Play services for Froyo, revision 12 (Obsolete) 
    Installed Google Play services for Froyo, revision 12 (Obsolete) 
    Downloading Google Play services, revision 29 
    Installing Google Play services, revision 29 
    Installed Google Play services, revision 29 
    Downloading Google Repository, revision 25 
    Installing Google Repository, revision 25 
    Installed Google Repository, revision 25 
    Downloading Google Play APK Expansion library, revision 1 
    Installing Google Play APK Expansion library, revision 1 
    Installed Google Play APK Expansion library, revision 1 
    Downloading Google Play Licensing Library, revision 1 
    Installing Google Play Licensing Library, revision 1 
    Installed Google Play Licensing Library, revision 1 
    Downloading Google Play Billing Library, revision 5 
    Installing Google Play Billing Library, revision 5 
    Installed Google Play Billing Library, revision 5 
    Downloading Android Auto API Simulators, revision 1 
    Installing Android Auto API Simulators, revision 1 
    Installed Android Auto API Simulators, revision 1 
    Downloading Google Web Driver, revision 2 
    Installing Google Web Driver, revision 2 
    Installed Google Web Driver, revision 2 
    Done. 15 packages installed. 

November 19, 2013 
Do you accept the license 'google-gdk-license-35dc2951' [y/n]: y 
Installing Archives: 
    Preparing to install archives 
    Downloading Google APIs, Android API 23, revision 1 
    Installing Google APIs, Android API 23, revision 1 
    Installed Google APIs, Android API 23, revision 1 
    Downloading Google APIs, Android API 21, revision 1 
    Installing Google APIs, Android API 21, revision 1 
    Installed Google APIs, Android API 21, revision 1 
    Downloading Google APIs (x86 System Image), Android API 19, revision 18 
    Installing Google APIs (x86 System Image), Android API 19, revision 18 
    Installed Google APIs (x86 System Image), Android API 19, revision 18 
    Downloading Google APIs, Android API 19, revision 18 
    Installing Google APIs, Android API 19, revision 18 
    Installed Google APIs, Android API 19, revision 18 
    Downloading Glass Development Kit Preview, Android API 19, revision 11 
    Installing Glass Development Kit Preview, Android API 19, revision 11 
    Installed Glass Development Kit Preview, Android API 19, revision 11 
    Downloading Google APIs, Android API 18, revision 4 
    Installing Google APIs, Android API 18, revision 4 
    Installed Google APIs, Android API 18, revision 4 
    Downloading Google APIs, Android API 17, revision 4 
    Installing Google APIs, Android API 17, revision 4 
    Installed Google APIs, Android API 17, revision 4 
    Downloading Google APIs, Android API 16, revision 4 
    Installing Google APIs, Android API 16, revision 4 
    Installed Google APIs, Android API 16, revision 4 
    Downloading Google APIs, Android API 15, revision 3 
    Installing Google APIs, Android API 15, revision 3 
    Installed Google APIs, Android API 15, revision 3 
    Downloading Google APIs, Android API 10, revision 2 (Obsolete) 
    Installing Google APIs, Android API 10, revision 2 (Obsolete) 
    Installed Google APIs, Android API 10, revision 2 (Obsolete) 

Update: Я нашел this build, где я был кеширования SDK инструменты статистов с использованием пользовательский путь следующим образом:

cache: 
    apt: true 
    directories: 
    - ${TRAVIS_BUILD_DIR}/gradle/caches/ 
    - ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/ 
    - ${TRAVIS_BUILD_DIR}/android-sdk/extras/ 

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: 
    - echo "WARNING delete this when fixed"; export OLD_SDK=/usr/local/android-sdk-23.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 || echo "CP ERROR" 

Вам не нужно это делать и напрямую сохранять в кеш путь по умолчанию повторно хранилища проживают:

/usr/local/android-sdk/extras 

Вы don't want сохранить полные инструменты SDk в кэш, включая все системные образа.

цель кэше является упростить установку конкретного языка зависимостей легко и быстро, так что все, что связано с инструментами как Bundler, пип, композитор, НПМ, Gradle, Maven, является то, что должно идти в кэш.

Большие файлы, которые быстро установить, но медленно, чтобы загрузить делать не выгоду от кэширования, так как они принимают до тех пор, чтобы загрузить из кэша , как из первоисточника:

  • Android SDKs
  • Debian пакеты
  • пакетов JDK
  • откомпилированном

Default environment variables:

TRAVIS_BUILD_DIR: Абсолютный путь к каталогу, в котором хранилища строятся было скопировано на рабочем.

Смежные вопросы