我正在运行Jenkins管道,我想添加一个HTTP发布请求。 我想使用Groovy / Java本机代码(我不想使用 sh 作为它的易碎来运行curl)
我在最后一步中运行以下代码:
def builder = new groovy.json.JsonBuilder()
builder {
context 'branch_regression'
state stateStr
}
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("some-proxy.com", 912))
def post = new URL(config.CommitStatusUpdateURL).openConnection(proxy)
def message = builder.toString();
post.setRequestMethod("POST")
post.setRequestProperty("Authorization","Basic Some64BaseTokEAsfn")
post.setDoOutput(true)
post.setRequestProperty("Content-Type", "application/json")
def rawdata = message.getBytes("UTF-8")
def stream = post.getOutputStream()
stream.write(rawdata);
def postRC = post.getResponseCode();
println(postRC);
if(postRC.equals(200)) {
println(post.getInputStream().getText());
但后来我得到了
不允许脚本使用新的java.net.InetSocketAddress java.lang.String int管理员可以决定是批准还是拒绝此签名。
带有链接的方法批准此方法签名。.我批准了它,然后再次运行任务,然后得到:
不允许脚本使用新的java.net.Proxy java.net.Proxy $ Type java.net.SocketAddress管理员可以决定是批准还是拒绝此签名。
它让我发疯...这里是什么问题?
答案 0 :(得分:0)
您需要通过转到https://your.jenkins.url/scriptApproval/
来批准在脚本中使用这些功能。每次您运行新脚本时,它都会转到未批准的第一件事,并且会失败,因此可能会持续一段时间。
答案 1 :(得分:0)
将HTTP代码移至global shared library:
这些库被认为是“受信任的”:它们可以在以下库中运行任何方法 Java,Groovy,Jenkins内部API,Jenkins插件或第三方 库。这使您可以定义封装了 较高级别包装中的各个不安全API可以安全地从 任何管道。