Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jenkins can't find defined function?

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?

like image 606
Chris F Avatar asked Jun 07 '26 19:06

Chris F


1 Answers

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.

like image 76
Travenin Avatar answered Jun 10 '26 10:06

Travenin



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!