首页 > 解决方案 > 詹金斯找不到定义的功能?

问题描述

我写这篇文章是为了测试我在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)
}

但我明白了

java.lang.NoSuchMethodError: No such DSL method 'generateStage' found among steps.

我错过了什么?

标签: groovyjenkins-pipeline

解决方案


您正在调用deployProcs(10, 10)两个参数的类型为Integer. 调用时使用相同的整数参数generateStage,其中参数类型为String targetVersionString rootVersion

修复方法是调用deployProcs('10', '10')或更改,或从函数参数def generateStage(String job, Integer targetVersion, Integer rootVersion, Integer sleepTime=0)中删除类型。generateStage


推荐阅读