2016-05-24 25 views
6

Tôi đang cố gắng sử dụng các biến môi trường được định nghĩa bên ngoài bất kỳ nút nào trong một Jenkinsfile. Tôi có thể đưa chúng vào phạm vi trên bất kỳ bước đường ống nào trong bất kỳ nút nào nhưng không nằm trong một hàm. Giải pháp duy nhất tôi có thể nghĩ đến bây giờ là chuyển chúng thành các tham số. Nhưng tôi muốn tham khảo các biến env trực tiếp bên trong hàm vì vậy tôi không phải chuyển quá nhiều tham số vào. Đây là mã của tôi. Làm thế nào tôi có thể nhận được hàm để xuất giá trị chính xác của BRANCH_TEST?Làm thế nào để sử dụng các biến môi trường trong một hàm groovy bằng cách sử dụng một Jenkinsfile

def BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

Jenkins console đầu ra:

[Pipeline] 
[Pipeline] echo 
null 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
Finished: SUCCESS 

Trả lời

13

Solutions là

  1. Sử dụng @Field chú thích

  2. Remove def từ khai. Xem Ted's answer để được giải thích về cách sử dụng def.

Giải pháp 1 (sử dụng @Field)

import groovy.transform.Field 

@Field def BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

Giải pháp 2 (loại bỏ def)

BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

Giải thích đang ở đây,

https://groups.google.com/d/msg/jenkinsci-users/P7VMQQuMdsY/bHfBDSn9GgAJ

Cũng đã trả lời trong how-do-i-create-and-access-the-global-variables-in-groovy

+0

Bạn cần xóa câu lệnh 'nhập' trùng lặp trong câu trả lời. – Rao

Các vấn đề liên quan