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

Jenkins/Groovy:如何将命名参数和闭包传递给相同的方法?

周高畅
2023-03-14

我有一个具有此签名的共享库方法:

call(Map kwargs, String image_name, String version, Closure closure)

我这样称呼它:

dockerBuildWith("go-build", "latest", image_context: "build", 
                changesets: ["build/Dockerfile"]) {
  ...
}

但我得到了一个错误:

hudson.remoting.ProxyExcture:groovy.lang.MisSingMEDExcture: No签名的方法: dockerBuildWith.call()适用于参数类型:(java.util.LinkedHashMap,java.lang.String,java.lang.String,org.jenkinsci.plugins.workflow.cps.CpsClosure2)值:[[image_context:构建,更改集:[构建/Dockerfile]],go-build,...]

可能的解决方案:调用(java.lang.String、java.lang.String、groovy.lang.Closure)、wait()、any()、run()、run()、dump())

共有1个答案

臧兴学
2023-03-14

我忘了把def放在call()定义前面。

 类似资料:
  • 问题内容: 我试图了解Go在创建带有参数的匿名函数与将该函数用作闭包之间的区别。这是区别的一个例子。 带参数: 作为关闭: 我的问题是,第一种形式何时比第二种更好?您是否会为此类事情使用参数?我唯一看到第一种形式有用的是从另一个函数返回a时。 问题答案: 使用闭包与使用函数参数之间的区别在于共享同一变量与获取值的副本有关。请考虑下面的两个示例。 在 Closure中, 所有函数调用都将使用中存储的

  • 我试图创建一个JobGenerator类,它将传递一个构建步骤到调用实例。我遇到一个问题,如果我得到这个错误,当我试图运行这个: 哈德逊。远程处理。ProxyException:groovy。lang.MissingMethodException:没有方法org的签名。詹金西。插件。工作流程。cps。2。build()适用于参数类型:(java.util.LinkedHashMap)值:[[job

  • 问题内容: 好吧,我需要在我的Hudson Job中执行一个批处理文件,我有一个参数(Jenkis参数),我需要将此参数(如param)传递给批处理文件,我尝试了以下方法: 我的Deploy.cmd配置为获取此值,但Jenkis不分配值。例如,我有以下内容: 然后,批处理文件将使用此值 接受参数名称而不是其值 问题答案: 执行您的批处理文件,如下所示 如果您的Jenkins服务器在unix / L

  • 问题内容: 我正在使用testNG,Selenium和Jenkins建立测试自动化框架。该代码工作正常,它读取一个或多个csv文件并将其用作测试数据。我从詹金斯进行测试。 如您所见,浏览器,URL和CSV文件是硬编码的。我希望能够将这些作为参数传递。做这个的最好方式是什么?是否可以让他们通过詹金斯? 我正在考虑构建一个仪表板,在其中可以指定要使用哪种浏览器运行哪些测试(csv文件)。 这是我正在运

  • 问题内容: 基本上我有一个ArrayList的位置: 在此之下,我调用以下方法: getMap()方法中的参数为: 我遇到的问题是我不确定如何在整个方法列表中传递该方法。 我试过了 但是getMap不接受,因为它不接受Objects []。 现在,如果我使用 它会完美地工作…但是我需要以某种方式传递所有位置…我当然可以继续添加等等,但是数组的大小会有所不同。我只是不习惯整个概念 最简单的方法是什么

  • 问题内容: 我想将 命名 和 未命名的 参数都传递给main方法。 目前,我将参数传递为: 并将它们作为: 但是,我想以一种更动态的方式传递参数-即: 我可以传递 命名 和 未命名的 参数。 我可以使用它们的 名称 来获取/处理这些参数; 每次执行main方法时,都不需要以相同的顺序传递它们。 以某种方式传递: 并以如下方式处理: 我可以使用一些外部库来简化我的工作。 我已经看到了这一点,它并不全