当前位置: 首页 > 知识库问答 >
问题:

在Groovy/Jenkins中传递类的闭包

叶稳
2023-03-14

我试图创建一个JobGenerator类,它将传递一个构建步骤到调用实例。我遇到一个问题,如果我得到这个错误,当我试图运行这个:

哈德逊。远程处理。ProxyException:groovy。lang.MissingMethodException:没有方法org的签名。詹金西。插件。工作流程。cps。2。build()适用于参数类型:(java.util.LinkedHashMap)值:[[job:FooJob]]

class BuildGenerator implements Serializable {     

static def generateJob() {
    return  [
            "TestJob",
            { ->
                build(
                        job: 'FooJob'
                )
            },
    ]
  }        
}        

node(){
    def tasks = [:]
    def label
    def task

    stage("Build") {
        def generator = new BuildGenerator()            
        tasks["Testing"] = generator.generateJob()[1]
        parallel tasks
    }
}

如果我在类之外删除generateJob函数,那么它就可以正常工作。我这里的闭包有什么错?我是groovy/jenkins world的新手。

共有1个答案

秦学林
2023-03-14

好这就是Groovy/Jenkins管道的工作方式<代码>构建节点中提供,以及其他步骤和功能。如果您希望访问这些,您必须将CPS实例传递给该方法,如下所示(或者使用构造函数只传递实例一次):

class BuildGenerator implements Serializable {     

static def generateJob(script) {
    return  [
            "TestJob",
            { ->
                script.build(
                        job: 'FooJob'
                )
            },
    ]
  }        
}        

node(){
    def tasks = [:]
    def label
    def task

    stage("Build") {
        def generator = new BuildGenerator()            
        tasks["Testing"] = generator.generateJob(this)[1]
        parallel tasks
    }
}
 类似资料:
  • 我有一个具有此签名的共享库方法: 我这样称呼它: 但我得到了一个错误: hudson.remoting.ProxyExcture:groovy.lang.MisSingMEDExcture: No签名的方法: dockerBuildWith.call()适用于参数类型:(java.util.LinkedHashMap,java.lang.String,java.lang.String,org.je

  • 我一直挣扎在这甚至在做了这么多的研究这么简单的事情,所以我需要一些帮助在这里。 我需要传递日期数据类型的当前日期,只有'yyyy-mm-dd'格式。SimpleDateFormat将当前日期转换为字符串类型,在尝试解析时,它将转换为日期类型,但会更改格式。 我需要日期类型的“YYYY-MM-DD”格式的currentDate。

  • 我目前正在尝试从jenkins管道中的文件加载一个自定义groovy类。我尝试了这里提出的解决方案: 如何在Jenkins管道中导入类文件? 作为... JenkinsPipelineUtilityClass.groovy 詹金斯档案 并尝试同样使用GroovyClassLoader(再次使用上述类) 詹金斯档案 我在这两方面都遇到了同样的错误: 我已经检查了正在进行的脚本批准,里面什么都没有,我

  • 问题内容: 我们如何在Jenkins管道的Groovy脚本中传递参数? 我已经写了xyz.groovy,它可以很好地加载和执行,但是我想在其中传递参数而不是重复工作。我尝试传递负载’../xyz.groovy’param1param2但没有运气。 xyz.groovy 问题答案: 您是否在用参数调用的Groovy中创建方法?

  • 问题内容: 我的jenkinsfile中有一个执行bat命令的阶段: 我的批处理命令需要一个参数,该参数是svn中的当前分支。 当我使用这个: 回声“ SVN_BRANCH_NAME是$ {env.BRANCH_NAME}” 它会给出BRANCH_NAME的值,但是如果我将其作为参数传递给我的批处理文件,它将按字面意义传递$ {env.BRANCH_NAME}而不是该值。 他们有办法吗? 问题答案

  • 我是SoapUI的新手,遇到了一个我不明白的问题。目标:我想在不同的测试步骤中将结果从一个Groovy脚本传递到另一个Groovy脚本。 第1步:我有一个生成GUID的Groovy脚本: 步骤2:我有一个属性转移步骤,它接受上述脚本的结果,并将其传递到HTTP请求步骤(正在工作) 步骤3:我有第二个Groovy脚本,它运行curl命令,其中需要包含相同的GUID。 第3步是问题开始的地方。如何从第