2014-11-03 22 views
11

Tôi đang cố gắng để cache phụ thuộc cho một kho lưu trữ Travis CI tư nhân, không Travis có một số cơ chế cụ thể cho gradle, hay tôi phải để cache thư mục cụ thể?cache gradle phụ thuộc, Travis CI

.travis.yml:

language: groovy 

jdk: 
    - openjdk7 

env: 
- TERM=dumb 

before_install: 
- cd application 
- chmod +x gradlew 

script: 
- ./gradlew build 

phần có liên quan của cuối cùng xây dựng làm việc:

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 

... 

Sẽ thêm:

cache: 
    directories: 
    - $HOME/.gradle 

làm việc? hoặc có lẽ:

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

https://docs.travis-ci.com/user/languages/java/#Projects-Using-Gradle – gliptak

Trả lời

6

Bạn sẽ có bộ nhớ cache ít nhất ~/.gradle/wrapper~/.gradle/caches, nhưng tôi có thể bắt đầu với ~/.gradle. (Nếu cần, có thể thay đổi vị trí của vị trí sau bằng cách đặt biến môi trường GRADLE_USER_HOME). Khi nâng cấp lên phiên bản Gradle mới hơn, cấu trúc bộ nhớ cache có thể thay đổi, do đó, đôi khi có thể làm mất hiệu lực bộ nhớ cache.

PS: Xin đừng đúp bài ở đây và trên các diễn đàn Gradle (hoặc là tốt).

6

Có lẽ bạn nên thêm sudo: false vào .travis.yml của mình, vì bộ nhớ đệm không khả dụng cho các kho lưu trữ công khai. Nó sẽ ngăn bạn sử dụng sudo, setid, setgid, nhưng nó cho phép cơ chế lưu vào bộ nhớ cache!

Nhưng tôi thấy rằng bộ nhớ đệm $HOME/.gradle/caches không phải là một biến thể rất tốt, vì tệp $HOME/.gradle/caches/modules-2/modules-2.lock được thay đổi mỗi lần xây dựng, do đó Travis sẽ lặp lại bộ nhớ cache mọi lúc và tải lên toàn bộ bộ nhớ cache đó. Đó là chậm hơn cho tôi hơn tải về tất cả các phụ thuộc của tôi. Vì vậy, có lẽ nó sẽ là tốt hơn chỉ định một cái gì đó khác hơn $HOME/.gradle/caches.

+2

Đây không phải là thực sự là một câu trả lời, nó chỉ bình luận rằng ~/.gradle/cache là không phải là câu trả lời hay: ( – dequis

3

Tôi chỉ cần thêm các thư mục sau:

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

Thêm .gradle/cache sẽ tạo ra một tập tin bộ nhớ cache mới mỗi xây dựng. Đừng quên thay đổi 2.3 thành phiên bản ưu tiên của bạn.

+0

bạn có thể hiển thị toàn bộ travis.yml không? – Caipivara

+0

Chắc chắn, hãy kiểm tra ví dụ này: https://github.com/uphold/uphold-sdk-android/blob/master/.travis.yml –

2

Bạn chỉ cần thêm các dòng dưới đây vào .travis.yml của bạn:

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

Bạn có thể lấy thêm thông tin here.

1

Tính đến phiên bản 3.5.1 cách đơn giản nhất và hiệu quả nhất là chỉ cần bộ nhớ cache thư mục caches/modules-2caches/wrapper. Caching toàn bộ thư mục caches thêm quá nhiều tệp và nó gây ra sự chậm trễ lớn hơn. Bạn vẫn cần xóa tệp modules-2.lock.

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