在我的jenkins管道中,我历来从命令行调用curl来发出http请求,我正在寻求简化它。
我在我的jenkins部署中安装了HttpRequest插件,并且我正在运行一个基本管道来测试它。但是,当我运行我从代码段生成器生成的代码段时,我会收到此异常。
groovy.lang.MissingMethodException:没有方法签名:Script1.httpRequest()适用于参数类型:(java.util.LinkedHashMap)值:[[authentication:myJenkinsAuth,url:https://api.github.com/repos/user/repo/commits/123456789/status]]
我使用的代码行是:
def response = httpRequest authentication: 'myJenkinsAuth', contentType: 'APPLICATION_JSON', url: "https://api.github.com/repos/user/repo/commits/${commitSHA}/status"
我使用的HTTP请求插件的版本是1.8.22
我不确定为什么找不到方法定义,据我所知,这正是文档告诉我应该做的,它与为我生成的片段jenkins一致。任何见解将不胜感激。如果我错过任何有用的细节,我可以提供更多信息
修改: 我相信这个正在运行的工作是一个自由式工作,实际的代码是在一个常规的postbuild步骤中运行(在构建后的操作部分)
答案 0 :(得分:1)
花了我一段时间才意识到我的类似问题是一个范围界定问题。不知道您是否要在静态方法中调用httpRequest,但如果是,请删除静态方法。
MyScript.groovy:
static def myMethod() {
httpRequest acceptType: 'APPLICATION_JSON',
url: url,
<...>
}
成绩错误:
groovy.lang.MissingMethodException:方法的无签名:静态 MyScript .httpRequest()适用于参数类型:(java.util.LinkedHashMap) 值:[[<...>
它正在MyScript中寻找httpRequest。糟糕,移除静态效果确实有效。