2014-09-24 12 views
10

Come posso utilizzare le variabili di env travis-ci come proprietà di Gradle?Variabili d'ambiente di Travis CI con proprietà Gradle

ho localmente hanno il mio gradle.properties nel percorso Gradle avere:

sonatypeRepo = abcd 

che viene utilizzato nel mio build.gradle:

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

Naturalmente localmente funziona. In Travis Ho aggiunto la variabile in Impostazioni quindi non vedo il log di compilazione:

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

E fallisce come:

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 

Come posso usare variabile ENV Travis' come Grable proprietà ma ha anche la build locale come?

+0

è variabile ENV Travis' impostato come variabile ENV? Proverei 'def repo = sonatypeRepo?: System.getenv ('sonatypeRepo')'. La prima parte dovrebbe funzionare localmente, la seconda su Travis. – Opal

+0

@ basp travis 'bash lo esporta, quindi dovrebbe essere disponibile. Ho provato 'repository (url: sonatypeRepo?:" $ System.env.sonatypeRepo ") {}' senza successo, proverò di più. – Diolor

+1

La domanda è se la variabile impostata da Travis è leggibile tramite 'System.env'. Lo è su Jenkins. Potrebbe anche essere un altro problema. È necessario controllare su Travis cosa restituisce esattamente la proprietà 'sonatypeRepo'. Se è presente in 'gradle.properties' ed è vuoto potrebbe passare, perché è presente. – Opal

risposta

20

Sono inciampato anche su questo.

Questo è quanto ho capito di lavorare:

Nel mio build.gradle

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

Nel mio $ HOME/.gradle/gradle.properties

blahUser=batman 
blahPwd=eatsworms 

quindi avevo bisogno questo per travis-ci - che non penso abbia una nozione di $ HOME/.gradle/gradle.properties Ma puoi aggiungere variabili di ambiente a .travis.yml.

Fondamentalmente, come accennato in precedenza, se la proprietà è "lì"; gradle lo usa, altrimenti gli chiede l'ambiente. Nel mio caso è stato necessario l'assegno 'hasProperty()' in modo da Travis non genererebbe una proprietà non trovata eccezione .....

hth ...

+0

Ho dovuto usare project.hasProperties() nel mio build.gradle –