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

如何在Jenkins Active Choices插件中从Jenkins凭证获取参数?

从Jenkins凭证中获取用户名密码到Active Choices Groovy脚本

Jenkins的Active Choices插件支持通过Groovy脚本生成动态选项,你之前的脚本硬编码了DockerHub的用户名和密码,要替换成从Jenkins凭证库获取的内容,可以按以下方式操作:

步骤1:提前配置Jenkins凭证

在Jenkins的「凭证管理」中添加一个用户名和密码类型的凭证,记录好该凭证的ID(配置时可自定义,也可在凭证详情页查看系统生成的ID)。

步骤2:修改Groovy脚本

通过Jenkins内置的凭证API获取存储的凭证信息,替换硬编码的用户名密码:

import jenkins.model.Jenkins
import com.cloudbees.plugins.credentials.CredentialsProvider
import com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials

// 根据凭证ID获取用户名密码凭证
static StandardUsernamePasswordCredentials getJenkinsCredentials(String credentialId) {
    def jenkins = Jenkins.get()
    // 从凭证库中查找指定ID的凭证
    def targetCred = CredentialsProvider.lookupCredentials(
        StandardUsernamePasswordCredentials,
        jenkins,
        null,
        null
    ).find { it.id == credentialId }
    return targetCred
}

static String getDockerHubToken(String username, String password) {
    // 保留你原有的Token获取逻辑
    return ...;
}

static List getDockerHubTags(String jwtToken) {
    // 保留你原有的标签获取逻辑
    return ...;
}

// 替换为你实际的凭证ID
def dockerHubCredId = "your-dockerhub-credential-id"
def creds = getJenkinsCredentials(dockerHubCredId)

// 校验凭证是否存在
if (!creds) {
    throw new Exception("未找到ID为${dockerHubCredId}的Jenkins凭证")
}

// 使用凭证中的用户名密码获取Token和标签列表
def token = getDockerHubToken(creds.username, creds.password)
def tagNames = getDockerHubTags(token)
return tagNames

注意事项

  • 确保执行该脚本的Jenkins用户拥有查看对应凭证的权限,否则会出现凭证无法获取的错误
  • 凭证ID必须与Jenkins中配置的完全匹配,大小写敏感
  • 如果你使用的是Jenkins 2.176.2及以上版本,可能需要调整脚本的权限策略,避免出现脚本执行被拦截的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:03:32