首页 > 解决方案 > 如何在詹金斯的脚本代码中添加允许的方法签名

问题描述

我正在运行 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 管理员可以决定是批准还是拒绝这个签名。

它让我发疯......这里有什么问题?

标签: httpjenkinsjenkins-pipeline

解决方案


将 HTTP 代码移动到全局共享库中:

这些库被认为是“可信的”:它们可以运行 Java、Groovy、Jenkins 内部 API、Jenkins 插件或第三方库中的任何方法。这允许您定义库,这些库将单独的不安全 API 封装在更高级别的包装器中,以便在任何管道中安全使用。


推荐阅读