You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

激活沙箱时,如何在Jenkins Groovy脚本中调用API?

在Jenkins沙箱模式下用Groovy调用API加载uno-choice参数

当然可以在沙箱开启时调用API,沙箱只是限制了不安全的静态方法和危险操作,只要用合规的方式编写Groovy脚本就能实现需求。

以下是两种可行的实现方式:

方式一:使用基础URL连接(沙箱默认允许)

避开被禁止的静态方法调用,改用实例化URL对象的方式发起请求,同时通过bindings获取依赖的Jenkins参数:

// 获取依赖的Jenkins参数(替换成你的参数名)
def targetParam = bindings.get('YOUR_DEPENDENT_PARAM')

// 构造带参数的API地址
def apiUrl = new URL("https://your-api-domain.com/path?param=${targetParam}")
def connection = apiUrl.openConnection()
connection.setRequestMethod('GET')

// 读取API响应
def responseText = connection.inputStream.text

// 解析JSON响应(假设返回的是包含选项的数组)
def jsonSlurper = new groovy.json.JsonSlurper()
def apiData = jsonSlurper.parseText(responseText)

// 返回参数选项列表(根据API返回结构调整字段)
return apiData.collect { it.displayName }

方式二:使用Jenkins内置HttpClient(更稳健)

用Jenkins自带的Apache HttpClient工具类发起请求,这种方式更符合Jenkins生态的安全规范:

import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.CloseableHttpClient
import org.apache.http.impl.client.HttpClients
import org.apache.http.util.EntityUtils

// 获取依赖参数
def targetParam = bindings.get('YOUR_DEPENDENT_PARAM')
def apiUrl = "https://your-api-domain.com/path?param=${targetParam}"

// 创建客户端并发起请求
CloseableHttpClient client = HttpClients.createDefault()
HttpGet request = new HttpGet(apiUrl)
def response = client.execute(request)
def responseText = EntityUtils.toString(response.getEntity())
client.close()

// 解析响应并生成选项
def apiData = new groovy.json.JsonSlurper().parseText(responseText)
return apiData*.value

注意事项

  1. 如果脚本仍提示权限问题,可联系Jenkins管理员在Manage Jenkins > In-process Script Approval中,批准脚本中用到的类和方法(比如java.net.URL的构造方法、groovy.json.JsonSlurper的解析方法)。
  2. 务必通过bindings.get()获取依赖参数,这是uno-choice插件在沙箱中获取其他参数的标准方式,避免直接访问Jenkins内部对象引发权限错误。

内容的提问来源于stack exchange,提问作者Dio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:55:17