2016-05-24 16 views
6

kullanarak groovy işlevinde nasıl kullanılır Jenkinsfile'da herhangi bir düğüm dışında tanımlanan ortam değişkenlerini kullanmaya çalışıyorum. Bunları herhangi bir düğümde herhangi bir boru hattı adımına getirebilirim fakat bir fonksiyonun içinde değil. Şimdilik düşünebildiğim tek çözüm, onları parametre olarak geçirmektir. Ama ben env değişkenlerini doğrudan işlevin içine atmak istiyorum, böylece çok fazla parametreyi geçmem gerekiyor. İşte benim kodum. BRANCH_TEST'un doğru değerini çıkarmak için işlevi nasıl alabilirim?Ortam değişkenleri, bir Jenkinsfile

def BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

Jenkins konsol çıkışı:

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

cevap

13

Çözümler beyandan

  1. Kullanım @Field açıklama

  2. Kaldır def vardır. Def kullanımı hakkında bir açıklama için bkz. Ted's answer. (@Field kullanılarak)

Çözelti 1

import groovy.transform.Field 

@Field def BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

Çözelti 2 (kaldırma def)

BRANCH_TEST = "master" 

    node { 
     deploy() 
    } 

    def deploy(){ 
     echo BRANCH_TEST 
    } 

açıklama burada,

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

da cevaphow-do-i-create-and-access-the-global-variables-in-groovy

+0

Yanıttaki yinelenen 'import' ifadesini kaldırmanız gerekir. – Rao

İlgili konular