2016-05-19 14 views
12

Boru hattım parallel adımındaki sınırlı Groovy veya quirk bilgim olduğundan emin değilim.Kapatma eşleşmeleriyle birlikte failFast kullanımı "paralel" adım

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 ile istisna: Eğer eklerseniz

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) 

cevap

14
map.failFast = true 
parallel map 
1

Biraz yardımcı olur ben yerine tek tek her kapanışı ileterek haritasına kullanırsak failFast kabul yapamaz İsteğe bağlı sözdizimi in. İkinci seçenek, Map numaralı yeni iletiyi geçirirken, üçüncü seçenek orijinal Map'unuzu ve ek olarak adlandırılmış bir parametreyi geçirmektir. Açıkçası neler olduğunu düşündüğünden emin değilim. Her durumda

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

Ben basit şey bu olacağını düşünüyorum: ...

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

veya

parallel ([ 
    spam: { 
     node { 
      echo 'spam' 
     } 
    }, 
    eggs: { 
     node { 
      echo 'eggs' 
     } 
    }, 
    failFast: true 
])