Я пытаюсь использовать DSL-конвейеры в Jenkins. Я подумал, что было бы хорошо, если бы я мог использовать название проекта как часть моего script.
git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"
Я получаю сообщение об ошибке:
groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding
Я думал, что я слежу за этими направлениями, и они упоминают JOB_NAME
как одну из переменных.
Я решил попробовать:
sh 'env'
в моей DSL, и это печатает:
JOB_NAME = foo-bar
что я ожидаю.
В другом блоге говорится:
Использование переменных окружения
У нас есть два способа получить их ценность. Свойства, переданные-D=
во время запуска, мы могли бы читать какSystem.getProperty("key")
благодаря сильному отношению Groovy к Java.Чтение обычных переменных среды в Java-способе - это
System.getenv("VARIABLE")
...
Попробуем это:
println "JOB_NAME = " + System.getenv('JOB_NAME');
Теперь я получаю:
java.lang.NullPointerException: Cannot get property 'System' on null object
Нулевой объект? Но я вижу, что JOB_NAME
является переменной окружения!
Как я прочитал в $JOB_NAME
в DSL script в задании Pipeline. Я пытаюсь выполнить задачу Pipeline, и когда я получу эту работу, это сделает Multibranch Pipeline с Jenkinsfile
.