2017-08-31 25 views
1

jenkinsパイプライン環境では、関数ライブラリを実装しています。 複数のノードで使用するこのライブラリです。いくつかのロギング機能については、「ノードスコープ」を持つ変数を持つ方法を探しています。Jenkinsパイプライン環境でノードスコープを使用する

これはライブラリ関数を意味する(最小の例では下)(言う)ノード

g_str_test = "test" 

parallel firstBranch: { 
    node { 
     echo g_str_test // = test 
     l_str_test = "para1" 
     echo l_str_test 
     sleep 2 
     l_str_test = "paraaaa11" 
     g_str_test = "para1" 
     say() // = paraaaa11 

    } 
}, secondBranch: { 
    node { 
     echo g_str_test 
     l_str_test = "para2" 
     echo l_str_test // = para2 
     sleep 5 
     echo "l: "+l_str_test // should be para2 !!!!!! (but is paraaaa11) 
     echo "g: "+g_str_test //= para1 
     say() // = para2 !!!!!! 
    } 
}, 
failFast: true 

def say(){ 
    echo "say: "+l_str_test 
} 

に応じて異なる出力を有するべきで定義された範囲

とグルービー変数を持つ方法があります
node{ 
[VALID HERE -- also known in called functions] 
} 
[UNKNOWN HERE] 

発言で知られていないl_str_test各ノードに対して、「DEF l_str_test」を使用して()

私は解決策がトンを呼び出すときだけ変数を渡すために知っているだろう彼は機能する。しかし実際には、各関数に渡す必要のある変数がたくさんあり、コードを実際に見苦しくすることになります。

答えて

0

変数の前にdefを宣言することができます。ここでは、2番目のechoステップで失敗した例があります:

node { 
    def var = 'hello' 
    echo "$var" 
} 

node { 
    echo "$var" 
} 
+0

私は既に試したdefを使っています。その問題は、ノード内で呼び出された関数では機能しないことです(変数を渡すことなく) – Ditschi

関連する問題