2016-01-08 4 views
6

Travis CIがプロジェクトをビルドするたびに、プラットフォームツール、サポートライブラリ、現在のSDKなど、すべてのSDKパッケージを再度ダウンロードする必要があることがわかりました。なぜTravis CIはビルドするたびにすべてをダウンロードするのですか?

回避することは可能ですか? Travisは最初にダウンロードしたものを再利用させますか?私はおそらくここに、私の.travis.ymlファイル内のいくつかのミスを犯した

は、そのコピーが

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

私も同じ問題があります。私はアンドロイドのサポートがベータ版だからだと思う。 –

+1

問題はここに投稿されていますhttps://github.com/travis-ci/travis-ci/issues/4065 –

答えて

0

なぜトラヴィスCIは、すべてのものにそれを構築するたびにダウンロードするのですか?私たちは、このhereについて話

、トラヴィス-ciはS3からキャッシュをダウンロードするので、大幅な速度向上のキャッシングは、Android SDKのような大きなファイルがありません。

Android SDKをTravis-ciキャッシュに含めるにはどうすればよいですか?あなたは、コードin the link shared by @nicolas-fを見ることができ、私は時間前にそれをやった

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 

:関連ビットはここにある

を(推奨されません)、あなたは彼のパスをキャッシュにあなたが好きな任意のファイルを追加し、知ることができます。

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 

使用ls SDKのパスが別の時間を変更していないことを確認します。

現在のところSDKを移動する必要はありません。他のものを更新する必要があります。おそらくの後に別のtoolsを追加する必要があります。このコードは古くなっています。

+0

答えをありがとう。もっと説明できますか?だからあなたのコードからは、 '/ usr/local/android-sdk-24.0.2'やSDKへの絶対パスが常に存在するようです。そして、そこにフォームをコピーして、travis ciが探しているSDKの位置にしていますか?ただし、SDKをコピーする必要はありません。では、どうやってトラビスciがSDKをもう一度ダウンロードするのを防ぐことができますか? また、新しいドッカーコンテナを新しく開始するたびに、すべてのものを再ダウンロードする必要があるという問題があります。それで周りに道があるのですか?ありがとう! –

+0

古くなった例は無視してください。関連するビットはここにあります。好きなファイルを自分のパスに追加することができます: 'cache:' 'ディレクトリ:' '/usr/local/android-sdk-24.0.2 ; [ここ](https://github.com/connectbot/connectbot/blob/master/.travis.yml#L13)のようですが、システムイメージをキャッシュに追加することは過度なものであるため、お勧めしません。 – albodelu

関連する問題