我没有创建新工作
我想从作业dsl脚本 inside 中访问jenkins秘密字符串绑定。我还没有找到这样的例子
如果我在詹金斯中有一个秘密字符串绑定,名为“ my-secret-string”,如何在dsl脚本中获取该字符串的值?我希望dsl使用我安全存储在詹金斯中的秘密进行休息电话和其他事情
我不能使用credentials('<idCredentials>')
,因为我没有创建新作业,也不想在dsl脚本本身中使用这些秘密值
答案 0 :(得分:0)
我不了解这种情况。您不是在创建新工作,但仍在工作中?这意味着什么?我了解您在Jenkinks中定义了一个凭证-秘密文本,并且您想从工作中访问它?这是一个标准方案:
withCredentials([string(credentialsId: 'my-secret-string', variable: 'mySecretStringVar')]){
println mySecretStringVar
}
通过Jenkins Console或凭证所在位置的groovy脚本:
def getFolderCredsScript(def pipelineFolder, def credId){
def credentialsStore =
jenkins.model.Jenkins.instance.getAllItems(com.cloudbees.hudson.plugins.folder.Folder.class).findAll{it.name.equals(pipelineFolder)}
.each{
com.cloudbees.hudson.plugins.folder.AbstractFolder<?> folderAbs = com.cloudbees.hudson.plugins.folder.AbstractFolder.class.cast(it)
com.cloudbees.hudson.plugins.folder.properties.FolderCredentialsProvider.FolderCredentialsProperty property = folderAbs.getProperties().get(com.cloudbees.hudson.plugins.folder.properties.FolderCredentialsProvider.FolderCredentialsProperty.class)
if(property != null){
for (cred in property.getCredentials()){
if ( cred.id == credId ) {
return "${cred.username}:${cred.password}"
}
}
}
}
}
def getGlobalCredsScript(def credId){
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, Jenkins.instance, null, null);
for (cred in creds) {
if (cred.id == credId){
return "${cred.username}:${cred.password}"
}
}
}