Есть ли способ передать текущий номер сборки для Gradle deamon из Jenkins build?
Я обращаюсь к номеру сборки Дженкинса в скрипте Gradle, позвонив:
def buildNumber = System..getenv('BUILD_NUMBER')
он отлично работает при первом запуске сборки. При втором запуске сборки число не увеличивается, оно остается таким же, как и при предыдущем запуске сборки. Я использую 4.4.1 версию Gradle. Я не помню такая же проблема с более ранними версиями.
мой текущий обходной путь-передать -- no-daemon переключатель в Gradle. Однако, таким образом, я не могу извлечь выгоду из daemon особенность. Есть ли способ использовать демонов и получить правильный номер сборки в Gradle build?
3 ответов
вы используете Java 9? С Java 9 Gradle больше не может изменять среду демона - поэтому вы не можете передавать свойства с помощью переменных среды. Вы должны увидеть следующее предупреждение в журналах:
Warning: Unable able to set daemon's environment variables to match the client because:
Java 9 does not support modifying environment variables.
вы можете пройти 'BUILD_NUMBER'
как системное свойство (-DbuildNumber=$BUILD_NUMBER
) или свойство проекта Gradle (-PbuildNumber=$BUILD_NUMBER
) из командной строки Gradle вместо этого.
Кажется, это обсуждалось и решалось на форумах gradle, прочитав систему env в специальном блоке:
class Globals {
String buildNr = System.getenv( 'BUILD_NUMBER' ).toString()
}
ext {
globals = new Globals()
}
// reference it like:
println "value of BUILD_NUMBER = " + globals.buildNr
обычно я создаю хранилище ключей с меткой времени, используя redis для хранения номеров сборки. Таким образом, я могу изолировать и получать , и отправлять данные обратно между любым клиентом.