如何在Jenkins Job DSL中将foreach与conditionalSteps一起使用
我试图使用Jenkins Job DSL的conditionalSteps插件有条件地触发构建步骤。如果给定集合中存在任何文件,我希望触发此步骤。我可以通过明确地调用多个fileExists和一个or来完成这项工作。但是,我想使用foreach动态创建它 这是我一直在玩的游戏 上述情况得到了解决如何在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 我尝试了各种各样的组合来完成这项工作
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'
}
}
}
}