2016-05-19 5 views
12

Groovyに関する限られた知識か、Pipeline parallelのステップであるかどうかは不明です。私は私が個別にクロージャを渡すのではなく、マップを使用する場合、それはfailFastを受け入れることはできません。closure mapでfailFastを使用すると、 "parallel"ステップが発生します。

def map = [:] 
map['spam'] = { 
    node { 
     echo 'spam' 
    } 
} 
map['eggs'] = { 
    node { 
     echo 'eggs' 
    } 
} 
parallel map // Works. 
parallel spam: map['spam'], eggs: map['eggs'], failFast: true // Works. 
parallel map, failFast: true // Fails with exception. 

例外をfailFastである:

java.lang.IllegalArgumentException: Expected named arguments but got [{failFast=true}, {[email protected], [email protected]}] 
    at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:276) 
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:111) 

答えて

14
map.failFast = true 
parallel map 
1

あなたが追加した場合それは少しのに役立ちます2番目のオプションは新しいMapを渡し、3番目のオプションは元のMapと追加の名前付きパラメータを渡します。正直なところ私はそれが何が起こっていると思いますか分かりません。

def map = [ 
    spam: { 
     node { 
      echo 'spam' 
     } 
    }, 
    eggs: { 
     node { 
      echo 'eggs' 
     } 
    }, 
    failFast: true 
] 
parallel map 

か...

parallel ([ 
    spam: { 
     node { 
      echo 'spam' 
     } 
    }, 
    eggs: { 
     node { 
      echo 'eggs' 
     } 
    }, 
    failFast: true 
]) 
:私は最も簡単な方法は、このことだと思ういずれの場合においても

parallel(map) 
parallel([ 
    spam: map['spam'], 
    eggs: map['eggs'], 
    failFast: true 
]) 
parallel map, failFast: true 

関連する問題