2014-09-24 29 views
10

如何使用Travis-ci env變量作爲Gradle的屬性?具有Gradle屬性的Travis CI環境變量

我在本地有我gradle.properties具有gradle這個路徑下:

sonatypeRepo = abcd 

這是我的build.gradle中:

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

當然本地它的工作原理。特拉維斯我已經下設置添加變量,所以我看到生成日誌:

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

,也未能像:

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 

我如何使用Travis的環境變量作爲格拉布爾物業也有本地建設呢?

+0

是Travis的環境變量設置爲環境變量?我會嘗試'def repo = sonatypeRepo?:System.getenv('sonatypeRepo')'。第一部分應該在當地工作,第二部分應該在特拉維斯工作。 – Opal 2014-09-24 18:34:15

+0

@Opal travis'bash導出它,所以它應該可用。我嘗試'庫(URL:sonatypeRepo?:「$ System.env.sonatypeRepo」){}'沒有成功,將嘗試更多。 – Diolor 2014-09-24 18:52:38

+1

問題是,如果由Travis設置的變量可以通過'System.env'讀取。在詹金斯身上。這也可能是另一個問題。你需要檢查特拉維斯究竟是什麼'sonatypeRepo'屬性返回。如果它出現在'gradle.properties'中並且它是空的,它可能會通過,因爲它存在。 – Opal 2014-09-24 18:58:58

回答

20

我也偶然發現了這一點。

這是我如何得到它的工作:

在我的build.gradle

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

在我的$ HOME/.gradle/gradle.properties

blahUser=batman 
blahPwd=eatsworms 

所以,我需要這對於travis-ci來說 - 我不認爲它有$ HOME/.gradle/gradle.properties的概念但是你可以添加環境變量到.travis.yml。

基本上,如前所述,如果財產是'有'; Gradle使用它,否則要求環境。在我的情況下,需要在「hasProperty()」檢查,以便特拉維斯不會產生未發現異常屬性.....

心連心......

+0

我不得不在我的build.gradle中使用project.hasProperties() – 2017-12-12 11:28:59