2017-05-11 4 views
1

私はジェンキンスパイプラインジョブのためのいくつかのグルーピングヘルパーメソッドを書いています。私はノード内の現在だ場合は、チェックし、そうでない場合、割り当てる必要がメソッドを実装するために今すぐノード()がすでに割り当てられているかどうかをチェックする方法

myMethod() // Call outside of the node (no node allocated yet) 
node("...") { 
    myMethod() // Call within the node 
} 

:私の方法の一つは、このように、と、割り当てられたノードなしで呼ばれるようになっています1つ、このように

def myMethod() { 
    if (-->isNodeAllocated()<--) { 
     // Do the stuff 
    } else { 
     node() { 
      // Do the same stuff 
     } 
    } 
} 

どのようにこの種のチェックを実行するのですか?

+2

:これを試してみてください。まず、ノードを割り当てずに実行しようとします。失敗した場合は、ノードを 'node'でラップします。 – StephenKing

答えて

0

ノード内にいる場合、Jenkinsは環境変数NODE_NAMEを設定します。私はいくつかの共有ライブラリ(多分fabric8?)でのtry/catchの道を見ていることを忘れないでください

if (env.NODE_NAME) { 
    // Do stuff 
} else { 
    node ('yournode') { 
     // Do stuff 
    } 
} 
+0

'parallel'を使ったマルチジョブの場合にも働いていますか? 'env'変数は' parallel'で実行されるすべてのブロックに対してある種のグローバルではありませんか? –

関連する問題