首页 > 解决方案 > java.lang.IllegalArgumentException:并行执行作业时需要命名参数

问题描述

我有一个 monorepo,我正试图让它们并行运行

def abc = findJenkinsfileToRun(modifiedFiles)
parallel {
  for (file in abc) {
    println("Building ${file.toString()}")
    load "${file.toString()}/Jenkinsfile"
  }
}

这导致以下结果

java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@b7ccdc

谁能帮助解决这个问题?

标签: jenkinsgroovyjenkins-pipelinejenkins-pluginsjenkins-groovy

解决方案


您没有parallel正确使用关键字,它应该接收分支名称的映射作为键和执行代码(闭包)作为值。请参阅文档

所以在你的情况下,你应该使用类似的东西:

def abc = findJenkinsfileToRun(modifiedFiles)
parallel abc.collectEntries { file ->
   ["Building ${file.toString()}" : {
       // The code to run in parallel
       println("Building ${file.toString()}")
       load "${file.toString()}/Jenkinsfile"
   }]
}

推荐阅读