2014-09-24 21 views
10

Làm cách nào tôi có thể sử dụng biến travis-ci env làm thuộc tính của Gradle?Biến môi trường Travis CI với thuộc tính Gradle

tôi tại địa phương có gradle.properties tôi dưới con đường gradle có:

sonatypeRepo = abcd 

nào được sử dụng trong build.gradle tôi:

uploadArchives { 
    //more  
    repository(url: sonatypeRepo) { 
     // more 
    } 
    //more 
} 

Dĩ nhiên tại địa phương nó hoạt động. Trong travis Tôi đã thêm các biến dưới các thiết lập vì vậy tôi thấy việc xây dựng nhật ký:

Setting environment variables from repository settings 
$ export sonatypeRepo=[secure] 

Và nó không thành công như:

FAILURE: Build failed with an exception. 
* Where: 
Build file '/home/travis/build/Diolor/Swipecards/library/build.gradle' line: 49 
* What went wrong: 
A problem occurred evaluating project ':library'. 
> No such property: sonatypeRepo for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer 

Làm thế nào tôi có thể sử dụng biến env của Travis là một Grable tài sản nhưng cũng có bản dựng cục bộ không?

+0

là biến env Travis' thiết lập như biến env? Tôi sẽ thử 'def repo = sonatypeRepo?: System.getenv ('sonatypeRepo')'. Phần đầu tiên nên làm việc tại địa phương, thứ hai trên Travis. – Opal

+0

@Opal travis 'bash xuất khẩu nó, vì vậy nó sẽ có sẵn. Tôi đã thử 'kho lưu trữ (url: sonatypeRepo?:" $ System.env.sonatypeRepo ") {}' mà không thành công, sẽ thử nhiều hơn. – Diolor

+1

Câu hỏi đặt ra là nếu biến được thiết lập bởi Travis có thể đọc được thông qua 'System.env'. Trên Jenkins nó là. Nó cũng có thể là một vấn đề khác. Bạn cần phải kiểm tra Travis những gì chính xác 'sonatypeRepo' tài sản trả về. Nếu nó hiện diện trong 'gradle.properties' và nó trống rỗng, nó có thể vượt qua, bởi vì nó hiện diện. – Opal

Trả lời

20

Tôi cũng tình cờ gặp vấn đề này.

Đây là cách tôi đã nhận nó để làm việc:

Trong build.gradle tôi

def uzer = hasProperty('blahUser') ? blahUser : System.getenv('blahUser') 
def creds = hasProperty('blahPwd') ? blahPwd : System.getenv('blahPwd') 

Trong tôi $ HOME/.gradle/gradle.properties

blahUser=batman 
blahPwd=eatsworms 

Vì vậy, tôi cần điều này cho travis-ci - mà tôi không nghĩ rằng có một khái niệm về $ HOME/.gradle/gradle.properties Nhưng bạn có thể thêm các biến môi trường vào .travis.yml.

Về cơ bản, như đã đề cập trước đây, nếu thuộc tính là 'có'; gradle sử dụng nó, nếu không yêu cầu môi trường cho nó. Trong trường hợp của tôi 'hasProperty()' kiểm tra là cần thiết để travis sẽ không tạo ra một tài sản không tìm thấy ngoại lệ .....

hth ...

+0

Tôi đã phải sử dụng project.hasProperties() trong build.gradle của tôi –