Reputation: 16673
I wrote this to test the idea I saw on JENKINS-44085
def generateStage(String job, String targetVersion,
String rootVersion, Integer sleepTime=0) {
return {
stage("Deploying: ${job}") {
sleep sleepTime
println "Job: $job"
}
}
}
def deployProcs(targetVersion, rootVersion) {
script {
int sleepTime = 0
def procs = ["proc-proc", "proc-proc-high"]
def parallelStagesMap = procs.collectEntries {
["${it}" : generateStage(it, targetVersion, rootVersion, sleepTime)]
sleepTime += 5
}
timestamps {
parallel parallelStagesMap
}
}
}
node('linux') {
deployProcs(10, 10)
}
But I get
java.lang.NoSuchMethodError: No such DSL method 'generateStage' found among steps.
What am I missing?
Upvotes: 3
Views: 1467
Reputation: 1590
You are calling deployProcs(10, 10)
where both parameters are type of Integer
. The same integer parameters are used when calling generateStage
, which parameters are typed String targetVersion
and String rootVersion
.
A fix is to either, call deployProcs('10', '10')
or change def generateStage(String job, Integer targetVersion, Integer rootVersion, Integer sleepTime=0)
, or remove types from generateStage
function parameters.
Upvotes: 2