web-dev-qa-db-fra.com

L'utilisation de failFast avec la fermeture de la carte rompt l'étape "parallèle"

Je ne sais pas s'il s'agit de ma connaissance limitée de Groovy ou d'un hasard dans l'étape du pipeline parallel. Je ne peux pas le faire accepter failFast si j'utilise map au lieu de passer chaque fermeture individuellement:

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.

L'exception avec failFast est:

Java.lang.IllegalArgumentException: Expected named arguments but got [{failFast=true}, {spam=org.jenkinsci.plugins.workflow.cps.CpsClosure2@51a382ad, eggs=org.jenkinsci.plugins.workflow.cps.CpsClosure2@718cb50d}]
    at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.Java:276)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.Java:111)
12
Constantin
map.failFast = true
parallel map
20
Jesse Glick

Cela aide un peu si vous ajoutez la syntaxe optionnelle po. La deuxième option passe une nouvelle Map tandis que la troisième option transmet votre Map originale et un paramètre nommé supplémentaire. Honnêtement, je ne suis pas sûr de ce que cela pense.

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

En tout cas, je pense que la chose la plus simple serait la suivante:

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

ou...

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

En plus de Jesse Glick répondre .

Même si vous utilisez une boucle for pour créer des étapes parallèles, vous pouvez utiliser le même code - 

map.failFast = true
parallel map
0
ashwaqar