Я пытаюсь использовать DSL-конвейеры в Jenkins. Я подумал, что было бы неплохо, если бы я мог использовать название проекта как часть моего сценария.Jenkins Pipeline Доступ к переменным окружения
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
Я думал, что я последовал за these directions, и они упоминают JOB_NAME
в качестве одной из переменных.
я решил попробовать:
sh 'env'
в моем DSL, и это выводит:
JOB_NAME = foo-bar
чего я ожидал.
Другой blog mentions:
Usage of environment variables
We have two ways to get their value. The properties passed by-D=
during the startup we could read asSystem.getProperty("key")
thanks to the Groovy's strong relation with Java.Reading normal environment variables in Java way is the
System.getenv("VARIABLE")
...
Давайте попробуем это:
println "JOB_NAME = " + System.getenv('JOB_NAME');
Теперь я получаю:
java.lang.NullPointerException: Cannot get property 'System' on null object
Null объект? Но, я вижу, что JOB_NAME
является переменной окружения!
Как читать в $JOB_NAME
в DSL-скрипт в задании Pipeline. Я пытаюсь выполнить работу в Pipeline, и когда я получу эту работу, это сделает Multibranch Pipeline с Jenkinsfile
.
Это работает. 'JOB_NAME' упоминается как специальная переменная Дженкинса, которая, как предполагается, уже определена. –