2014-11-03 50 views
11

我想緩存一個私人的Travis CI存儲庫的依賴關係,Travis有一些特定於Gradle的機制,還是我必須緩存特定的目錄?緩存gradle的依賴關係,特拉維斯CI

.travis.yml:

language: groovy 

jdk: 
    - openjdk7 

env: 
- TERM=dumb 

before_install: 
- cd application 
- chmod +x gradlew 

script: 
- ./gradlew build 

最後一個工作日構建的相關部分:

Downloading https://services.gradle.org/distributions/gradle-2.1-bin.zip 

...................................................................................................................................................................................... 

Unzipping /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a/gradle-2.1-bin.zip to /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a 

Set executable permissions for: /home/travis/.gradle/wrapper/dists/gradle-2.1-bin/2pk0g2l49n2sbne636fhtlet6a/gradle-2.1/bin/gradle 

Download https://jcenter.bintray.com/com/mycila/xmltool/xmltool/3.3/xmltool-3.3.pom 

... 

會增加:

cache: 
    directories: 
    - $HOME/.gradle 

工作?或者是:

cache: 
    directories: 
    - $HOME/.gradle/caches/modules-2/files-2.1 
+2

https://docs.travis-ci.com/user/languages/java/#Projects-Using-Gradle – gliptak 2015-12-16 00:14:43

回答

6

你必須至少緩存~/.gradle/wrapper~/.gradle/caches,但我可能會先有自己~/.gradle。 (如有必要,可以通過設置GRADLE_USER_HOME環境變量來更改後者的位置)。當升級到更新的Gradle版本時,緩存結構可能會發生變化,所以有時可能會使緩存無效。

PS:請不要在這裏和Gradle論壇上雙重發帖(無論是好的)。

6

可能您應該將sudo: false添加到您的.travis.yml,因爲緩存不適用於公共存儲庫。它會阻止你使用sudo,setid,setgid,但它允許緩存機制!

但我發現,緩存$HOME/.gradle/caches是不是一個很好的變形,因爲該文件$HOME/.gradle/caches/modules-2/modules-2.lock改變每次構建,所以特拉維斯將每一次改裝的高速緩存,並做緩存完全上傳。對我來說,這比下載我所有的依賴項要慢。所以也許最好指定一些不同於$HOME/.gradle/caches的東西。

+2

這是不是一個真正的答案,只是評論說〜/ .gradle /緩存是不是一個好的答案:( – dequis 2014-12-20 23:30:21

3

我剛纔添加下列文件夾:

- $HOME/.gradle/wrapper 
- $HOME/.gradle/native 
- $HOME/.gradle/daemon 
- $HOME/.gradle/caches/jars-1 
- $HOME/.gradle/caches/2.3 

添加.gradle /緩存將創建一個新的緩存文件每次構建。 不要忘記將2.3更改爲您的gradle版本。

+0

你可以顯示完整的travis.yml嗎? – Caipivara 2015-10-25 21:50:55

+0

當然,請查看這個例子:https://github.com/uphold/uphold-sdk-android/blob/master/.travis.yml – 2015-10-26 10:55:29

2

你只需要下面幾行添加到您的.travis.yml:

before_cache: 
    - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 
cache: 
    directories: 
    - $HOME/.gradle/caches/ 
    - $HOME/.gradle/wrapper/ 

您可以獲取更多信息here

1

由於3.5.1版的最簡單,最有效的辦法是隻緩存caches/modules-2caches/wrapper目錄。緩存整個caches目錄會添加太多文件,並導致更大的延遲。您仍然需要刪除modules-2.lock文件。

before_cache: 
    - rm -rf $HOME/.gradle/caches/modules-2/modules-2.lock 
cache: 
    - $HOME/.gradle/caches/modules-2 
    - $HOME/.gradle/wrapper/