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

如何在Active Choices插件中使用Jenkins API

在Active Choices插件中使用Groovy Jenkins API的解决方案

核心原因

Active Choices插件的Groovy脚本默认运行在沙箱环境中,而Jenkins脚本控制台默认绕过沙箱限制,这直接导致User.getAll()这类Jenkins核心API调用被沙箱拦截,且默认不显示错误提示。


解决方法

1. 临时关闭沙箱限制(不推荐生产环境)

在配置Active Choices参数时,找到Groovy Script区域的Use Groovy Sandbox选项,取消勾选。此时脚本可直接执行User.getAll(),和控制台行为一致。

注意:生产环境禁用沙箱会带来安全风险,可能被恶意脚本利用执行危险操作,仅建议测试环境临时使用。

2. 授权API签名(生产环境推荐)

通过Jenkins的脚本审批机制,为需要调用的API授权:

  • 先尝试在Active Choices中执行User.getAll(),此时Jenkins后台会生成未授权的签名记录。
  • 进入Manage Jenkins -> In-process Script Approval。
  • 在待审批列表中找到staticMethod jenkins.model.User getAll(),点击Approve完成授权。
  • 重新运行脚本,User.getAll()即可正常执行。

3. 转换返回结果格式

Active Choices要求脚本返回符合下拉列表的格式(字符串列表或键值对映射),直接返回User.getAll()的对象集合无法正确显示,需转换为可展示的内容,例如:

// 返回用户全名列表
User.getAll().collect { it.fullName }

// 或返回用户名与ID的键值对
User.getAll().collectEntries { [it.id, it.fullName] }

4. 开启调试排查问题

若仍无响应,可开启调试日志查看具体错误:

  • 进入Manage Jenkins -> Configure System,找到Active Choices Plugin设置,勾选Enable Debug Logging。
  • 执行构建后,查看Manage Jenkins -> System Log,即可看到脚本执行的详细错误信息,定位问题根源。

内容的提问来源于stack exchange,提问作者david.perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:33:15