Я пытаюсь разделить трубопровод. Большинство параметров прошло успешно, но те, которые содержат переменные, разрешаются раньше, чем мне нужно.
Дженкинс вер. 2.164.1
Jenkins.file content:
stage ('prebuild') {
steps {
script {
VERSION="temprorary-value"
POSTBUILDACTION="make.exe \\some\\path\\file_${VERSION}"
}
}
}
stage ('build') {
steps {
script {
build (POSTBUILDACTION)
}
}
}
build.groovy content:
def call (String POSTBUILDACTION) {
...
checkout somefile
VERSION=readFile(somefile)
bat "${POSTBUILDACTION}"
}
здесь я ожидал, что версия будет взята из переопределенной переменной VERSION, но POSTBUILDACTION передается в функцию в виде строки. В результате он называется как есть («make.exe \ some \ path \ file_temprorary-value»). На самом деле команда, которую я хотел бы получить - это (somefile содержит только одно число, например «5»)
make.exe \some\path\file_5
Но теперь у меня есть
make.exe \some\path\file_temprorary-value
Или, если я пытаюсь передать \ $ {VERSION}, например:
POSTBUILDACTION="make.exe \\some\\path\\file_\${VERSION}"
- это перевод как есть:
make.exe \some\path\file_${VERSION}
Я пытался просмотреть класс POSTBUILDACTION на этапе предварительной сборки - он равен "класс org.codehaus.groovy.runtime.GStringImpl" и такой же на этапе сборки после передачи throw - он становится строкой: "class java.lang .String "
Так как передать в функцию аргумент, содержащий переменную, но не ее значение?
ИЛИ ЖЕ
«вдохнуть жизнь» в сухую нить типа
'make.exe \\some\\path\\file_${VERSION}'
чтобы переменные могли быть разрешены?