У меня есть следующий код в моем build.gradle
Содержание в version.properties
:
buildVersion=1.2.3
- Значение переменной
$v
во время сборки Gradle происходит следующим образом: 1.2.3 - Значение переменной
$artifactoryVersion
в сборке JENKINS выглядит следующим образом: 1.2.3. 1, 1.2.3. 2, 1.2.3. x... и т.д., где четвертая цифра - это Jenkins BUILD_NUMBER, доступная для Gradle build script во время сборки Jenkins.
НО, когда я запускаю этот build.gradle
на моем рабочем столе, где у меня нет переменной BUILD_NUMBER, установленной или заданной в моих переменных окружения, я получаю сообщение об ошибке trim()
, которое не может работать на null. (так как нет BUILD_NUMBER
для Desktop/local build).
Я пытаюсь найти способ i.e.
-
Что мне следует кодировать в моем script, так что если
BUILD_NUMBER
недоступно, вместо Gradle ошибка обработки сборки приведет к ошибке, она установитjenkinsBuild = "0"
(жестко закодированную) в противном случае, выберите то, что он получает во время сборки Дженкинса.Для ex: в Bash мы устанавливаем переменную
var1=${BUILD_NUMBER:-"0"}
, которая установитvar1
в действительное число ДЖЕНКНИКОВ BUILD, если оно доступно и установлено в значение, иначе если оно равно NULL, тоvar1 = "0"
. -
Я НЕ хочу, чтобы каждый разработчик/пользователь установил этот
BUILD_NUMBER
в некоторый файл свойств. Все, что я хочу, - если эта переменная не существует, то код должен помещать"0"
в переменную jenkinsBuilds и не выходить из строя во время сборки рабочего стола. Я знаю во время сборки Дженкинса, он отлично работает.
// Build Script
def fname = new File( 'version.properties' )
Properties props = new Properties()
props.load( new FileInputStream( fname ) )
def v = props.get( 'buildVersion' )
def env = System.getenv()
def jenkinsBuild = env['BUILD_NUMBER'].trim()
if( jenkinsBuild.length() > 0 ) {
artifactoryVersion = "$v.$jenkinsBuild"
}