Переменные среды Travis CI со свойствами Gradle

Как я могу использовать переменные env travis-ci в качестве свойств Gradle?

У меня локально есть gradle.properties по пути gradle, имеющему:

sonatypeRepo = abcd

Который используется в моем build.gradle:

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

Конечно локально работает. В travis я добавил переменную в настройках, поэтому я вижу журнал сборки:

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

Как я могу использовать переменную env Трэвиса в качестве свойства Grable, но также иметь локальную сборку?


person Diolor    schedule 24.09.2014    source источник
comment
Установлена ​​ли переменная env Трэвиса как переменная env? Я бы попробовал def repo = sonatypeRepo ?: System.getenv('sonatypeRepo'). Первая часть должна работать локально, вторая на Трэвисе.   -  person Opal    schedule 24.09.2014
comment
@Opal travis' bash экспортирует его, поэтому он должен быть доступен. Пробовал repository(url: sonatypeRepo ?: "$System.env.sonatypeRepo") {} безуспешно, буду пробовать еще.   -  person Diolor    schedule 24.09.2014
comment
Вопрос в том, доступна ли переменная, установленная Трэвисом, для чтения через System.env. На Дженкинсе так. Это может быть и другая проблема. Вам нужно проверить у Трэвиса, что именно возвращает свойство sonatypeRepo. Если он присутствует в gradle.properties и он пуст, он может пройти, потому что он присутствует.   -  person Opal    schedule 24.09.2014
comment
@Опал Действительно. Установка параметра с помощью приведенного выше конструктора elvis var делает его пройденным. Я все еще не уверен, читает ли Трэвис переменную.   -  person Diolor    schedule 28.09.2014
comment
print результат System.env в стандартный вывод.   -  person Opal    schedule 28.09.2014


Ответы (2)


Я тоже только что наткнулся на это.

Вот как я заставил это работать:

В моем 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(), чтобы Трэвис не генерировал исключение, не найденное свойством.....

хт...

person fwelland    schedule 29.09.2014
comment
Мне пришлось использовать project.hasProperties() в моем build.gradle - person Rohan Bhatia; 12.12.2017

Ниже приведен пример определения свойства проекта, а не локальной переменной, если она не определена, путем получения значения из среды.

project.ext {
    if (! project.hasProperty('some_prop')) { 
        some_prop = System.getenv('some_prop') 
    }
}

Мне нужно свойство проекта, чтобы я мог использовать его также для установки PW в моем файле YAML с весенней загрузкой... как локально, так и в CI.

person RobMcZag    schedule 08.02.2020