Подтвердить что ты не робот

Определите переменную и установите ее по умолчанию, если что-то пойдет не так во время определения

У меня есть следующий код в моем 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"
}
4b9b3361

Ответ 1

Все, что вам нужно, это некоторый обычный код Java/ Groovy:

def jenkinsBuild = System.getenv("BUILD_NUMBER") ?: "0"

В приведенном выше коде используется оператор Groovy "elvis" и является сокращением для следующего кода, который использует Java-тернарный оператор:

def buildNumber = System.getenv("BUILD_NUMBER")
def jenkinsBuild = buildNumber != null ? buildNumber : "0"