如何在Jenkins Job DSL中将foreach与conditionalSteps一起使用

如何在Jenkins Job DSL中将foreach与conditionalSteps一起使用,jenkins,jenkins-job-dsl,Jenkins,Jenkins Job Dsl,我试图使用Jenkins Job DSL的conditionalSteps插件有条件地触发构建步骤。如果给定集合中存在任何文件,我希望触发此步骤。我可以通过明确地调用多个fileExists和一个or来完成这项工作。但是,我想使用foreach动态创建它 这是我一直在玩的游戏 上述情况得到了解决 javaposse.jobdsl.dsl.DslScriptException: (script, line 17) No condition specified 我尝试了各种各样的组合来完成这项工作

我试图使用Jenkins Job DSL的conditionalSteps插件有条件地触发构建步骤。如果给定集合中存在任何文件,我希望触发此步骤。我可以通过明确地调用多个fileExists和一个or来完成这项工作。但是,我想使用foreach动态创建它

这是我一直在玩的游戏

上述情况得到了解决

javaposse.jobdsl.dsl.DslScriptException: (script, line 17) No condition specified
我尝试了各种各样的组合来完成这项工作,但没有成功。。。任何提示都将非常感谢

or DSL方法需要一系列闭包。因此,需要将文件名集合转换为闭包数组

例如:

def files = ["file1", "file2", "file3"]

job('example') {
  steps {
    conditionalSteps {
      condition {
        or(
          (Closure[]) files.collect { fileName ->
            return {
              fileExists("${fileName}.jenkinsTrigger", BaseDir.WORKSPACE)
            }
          }
        )
      }
      runner('Unstable')
      steps {
        gradle 'test'
      }
    }
  }
}

含糖的谢谢你花时间回答
def files = ["file1", "file2", "file3"]

job('example') {
  steps {
    conditionalSteps {
      condition {
        or(
          (Closure[]) files.collect { fileName ->
            return {
              fileExists("${fileName}.jenkinsTrigger", BaseDir.WORKSPACE)
            }
          }
        )
      }
      runner('Unstable')
      steps {
        gradle 'test'
      }
    }
  }
}