Tôi đang cố gắng sử dụng đường ống DSL trong Jenkins. Tôi nghĩ sẽ tốt hơn nếu tôi có thể sử dụng tên dự án như một phần của kịch bản của tôi.Biến môi trường truy cập đường ống Jenkins
git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"
tôi nhận được lỗi:
groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding
tôi nghĩ rằng tôi đi theo these directions, và họ đề cập JOB_NAME
là một trong các biến.
tôi quyết định thử:
sh 'env'
trong DSL của tôi, và điều này sẽ in ra:
JOB_NAME = foo-bar
đó là những gì tôi mong đợi.
Một 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")
...
Hãy thử điều này:
println "JOB_NAME = " + System.getenv('JOB_NAME');
Bây giờ, tôi nhận được:
java.lang.NullPointerException: Cannot get property 'System' on null object
đối tượng Null? Nhưng, tôi có thể thấy rằng JOB_NAME
là một biến môi trường!
Làm cách nào để đọc trong số $JOB_NAME
thành tập lệnh DSL trong công việc Đường ống. Tôi đang cố gắng một công việc đường ống, và khi tôi nhận được rằng làm việc sẽ làm cho một đường ống Multibranch với một Jenkinsfile
.
đó làm việc. 'JOB_NAME' được đề cập dưới dạng biến Jenkins đặc biệt được cho là đã được xác định. –