Определите переменную и установите ее по умолчанию, если что-то пойдет не так во время определения
У меня есть следующий код в моем 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"
}
Ответы
Ответ 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"