我希望根据参数N,从管道"main_job“并行运行作业"main_pipeline”N次,但在脚本块中允许循环而不是在“并行”块中允许"for“循环的情况下,我无法绕过jenkins错误。
我尝试使用所有的混合脚本/并行/阶段块。
pipeline {
agent any
stages {
stage("All jobs") {
parallel {
script {
def numJobs = "${N}" as Integer
for(def curJob=1; curJob<=numJobs; i++) {
def param = "JOB-" + curJob
script {
build (job: "main_job",
parameters: [string(name:"PARAM", value:param)])
}
}
}
}
}
}
}使用不同的脚本/阶段/并行组合,对于预期的块,我会得到不同的错误。错误的一个例子是:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: xx: Expected a stage @ line xx, column xx.
script {
^
WorkflowScript: xx: Expected one of "steps", "stages", or "parallel" for stage "All jobs" @ line xx, column xx.
stage("All jobs") {发布于 2019-08-20 06:58:38
好的,我终于找到了我需要做的事情,基本上是通过尝试和错误来发现parallel可以作为一个函数被调用,方法是传递一个字典,其中包含所有要运行的作业的细节。
最终代码如下:
pipeline {
agent any
parameters {
string(
name: 'N',
defaultValue:"2",
description: "The number of jobs to run"
)
}
stages {
stage("All jobs") {
steps {
script {
def numJobs = "${N}" as Integer
def allJobs = [:]
for(def curJob=1; curJob<=numJobs; curJob++) {
def jobName = "JOB-" + curJob
allJobs[jobName] = {
build (job: "main_job",
parameters:
[string(name:"PARAM", value:jobName)])
}
}
parallel(allJobs)
}
}
}
}
}https://stackoverflow.com/questions/57371105
复制相似问题