从jenkins作业dsl脚本内部访问jenkins凭证绑定

问题描述 投票:0回答:1

我没有创建新工作

我想从作业dsl脚本inside访问jenkins秘密字符串绑定。我无法找到此示例

如果我在Jenkins中有一个秘密字符串绑定,名为“ my-secret-string”,如何在dsl脚本中获取该字符串的值?我希望dsl使用我安全存储在詹金斯中的机密进行休息电话和其他事情

我不能使用credentials('<idCredentials>'),因为我没有创建新作业或我想在dsl脚本本身中使用这些秘密值的任何事情

jenkins jenkins-job-dsl
1个回答
0
投票

我不了解这种情况。您不是在创建新工作,但仍在工作中?这意味着什么?我了解您在Jenkinks中定义了一个凭证-秘密文本,并且您想从工作中访问它?这是一个标准方案:

withCredentials([string(credentialsId: 'my-secret-string', variable: 'mySecretStringVar')]){
    println mySecretStringVar
}

从Jenkins控制台或凭证所在位置出现的常规脚本:

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}"
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.