我正在尝试在管道作业dsl的参数内的常规脚本中使用jenkins存储的凭据。
例如,当我创建pipelineJob时,我使用的参数应该能够从git中获取数据:
activeChoiceReactiveParam('REPO') {
description('')
filterable(false)
choiceType('SINGLE_SELECT')
groovyScript {
script(
"""
import jenkins.*
import jenkins.model.*
import hudson.*
import hudson.model.*
def TOKEN = ""
def jenkinsCredentials = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
com.cloudbees.plugins.credentials.Credentials.class,Jenkins.instance,null,null);
for (creds in jenkinsCredentials) {
if(creds.id == "my_stored_credentials"){
TOKEN = creds.secret
}
}
dirs=["bash", "-c", "curl -s --header \"Authorization: token $TOKEN\" https://github_url_and_path| jq -r .[].name"].execute()
def list = dirs.text.readLines()
return list
"""
)
fallbackScript('')
}
}
此代码有效。在jenkinsCredentials内部,我获得了所有已存储凭据的列表,并获得了所需的凭据,通过遍历所有凭据,可以按其ID找到它。
我的问题是:有没有一种方法可以直接获取那些凭据(my_stored_credentials),而无需遍历所有机密列表?