Jenkinsfileのノードの外部で定義された環境変数を使用しようとしています。関数内ではなく、任意のノードの任意のパイプラインステップでスコープに含めることができます。私が今考えることができる唯一の解決策は、それらをパラメーターとして渡すことです。しかし、関数内で直接env変数を参照したいので、あまり多くのパラメーターを渡す必要はありません。これが私のコードです。 BRANCH_TEST
の正しい値を出力する関数を取得するにはどうすればよいですか?
def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
Jenkinsコンソール出力:
[Pipeline]
[Pipeline] echo
null
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
ソリューションは
@Fieldアノテーションを使用する
Defを宣言から削除します。 defの使用に関する説明については、 テッドの回答 を参照してください。
解決策1(@Fieldを使用)
import groovy.transform.Field
@Field def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
解決策2(defの削除)
BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
説明はこちら、
https://groups.google.com/d/msg/jenkinsci-users/P7VMQQuMdsY/bHfBDSn9GgAJ