Sử dụng Pipeline plugin in Jenkins 2.x, làm cách nào tôi có thể truy cập biến Groovy được xác định ở cấp độ giai đoạn hoặc nút từ trong bước sh
?Truy cập biến Groovy từ trong vòng trình bao trong đường dẫn Jenkins
đơn giản ví dụ:
node {
stage('Test Stage') {
some_var = 'Hello World' // this is Groovy
echo some_var // printing via Groovy works
sh 'echo $some_var' // printing in shell does not work
}
}
đưa ra sau đây trên trang đầu ra Jenkins:
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test Stage)
[Pipeline] echo
Hello World
[Pipeline] sh
[test] Running shell script
+ echo
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Như người ta có thể thấy, echo
trong bước sh
in một chuỗi rỗng.
Một công việc xung quanh sẽ được xác định biến trong phạm vi môi trường qua
env.some_var = 'Hello World'
và in nó qua
sh 'echo ${env.some_var}'
Tuy nhiên, loại lạm dụng phạm vi môi trường cho nhiệm vụ này.
có thể trùng lặp của [sự khác biệt của chuỗi trong dấu ngoặc đơn hoặc kép trong groovy là gì?] (Http://stackoverflow.com/questions/6761498/whats-the-difference-of-strings-within-single -or-double-quotes-in-groovy) –
Không chính xác là một bản sao, nhưng tôi nghĩ rằng đó là một vấn đề đơn giản của việc sử dụng các dấu ngoặc kép chính xác. Các ví dụ được đưa ra trong trang bạn đã liên kết sử dụng dấu ngoặc kép: https://jenkins.io/doc/book/pipeline/overview/#basic-groovy-syntax-for-pipeline-configuration –
Thật vậy, cảm ơn bạn đã chỉ ra điều này. Nên có vẻ cẩn thận hơn ... khi sử dụng dấu ngoặc kép, nội suy hoạt động như mong đợi. Bạn có thể thêm câu trả lời này làm câu trả lời nếu muốn. – Dirk