如何在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
相关产品推荐
相关产品推荐

