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

Jenkins更新后获取文件夹凭据脚本出现方法重载歧义错误求助

解决Jenkins更新后CredentialsProvider.lookupCredentials重载歧义问题

Jenkins更新后,Credentials插件的CredentialsProvider.lookupCredentials方法新增了重载版本,导致Groovy无法自动推断要调用的方法,从而抛出重载歧义的运行时异常。即使将Folder强制转换为Item接口,仍可能因为存在多个接受Item参数的重载而无法解决问题。

解决方法:调用参数完整的重载版本

通过显式传入所有必要参数(包括认证上下文和过滤条件),消除Groovy的方法匹配歧义。修改后的代码如下:

import com.cloudbees.plugins.credentials.CredentialsProvider
import com.cloudbees.plugins.credentials.Credentials
import jenkins.model.Jenkins
import hudson.security.ACL
import java.util.Collections

// 获取目标文件夹实例
def myFolder = Jenkins.instance.getItemByFullName('my/folder')

// 调用带完整参数的lookupCredentials方法
def creds = CredentialsProvider.lookupCredentials(
    Credentials.class,
    myFolder,
    ACL.SYSTEM, // 使用系统权限获取该文件夹下的所有凭据
    Collections.emptyList() // 空列表表示不添加额外过滤条件
)

说明

  • ACL.SYSTEM:以系统权限身份获取凭据,确保能访问该文件夹下所有可见的凭据;如果需要以当前用户身份获取,可替换为Jenkins.instance.getAuthentication()。
  • Collections.emptyList():用于指定凭据的域过滤条件,空列表表示不过滤所有域的凭据。

备选方案:显式声明变量类型

如果不想添加额外参数,也可以通过显式声明myFolder的类型为hudson.model.Item,帮助Groovy明确匹配方法重载:

import com.cloudbees.plugins.credentials.CredentialsProvider
import com.cloudbees.plugins.credentials.Credentials
import jenkins.model.Jenkins
import hudson.model.Item

// 显式声明变量类型为Item
Item myFolder = Jenkins.instance.getItemByFullName('my/folder')

def creds = CredentialsProvider.lookupCredentials(
    Credentials.class,
    myFolder
)

如果这个方案仍不生效,优先使用第一种带完整参数的写法,这是消除重载歧义最可靠的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:01:05