【问题标题】:Access Jenkins credentials bindings from inside a Jenkins job DSL script从 Jenkins 作业 DSL 脚本中访问 Jenkins 凭据绑定
【发布时间】:2022-02-05 08:29:14
【问题描述】:

我没有创建新工作。

我想从一个作业 DSL 脚本内部访问一个 Jenkins 秘密字符串绑定。我找不到这样的例子。

如果我在 Jenkins 中有一个名为“my-secret-string”的秘密字符串绑定,我如何在 DSL 脚本中获取它的值?我希望 DSL 使用我在 Jenkins 中安全存储的秘密进行 REST 调用和其他操作。

我不能使用credentials('<idCredentials>'),因为我没有创建新工作或任何东西,我想在 DSL 脚本本身中使用这些秘密值。

【问题讨论】:

    标签: jenkins jenkins-job-dsl


    【解决方案1】:

    我不明白这个场景。您没有创建新工作,但您仍在工作中?这意味着什么?我了解到您在 Jenkins 中定义了一个凭证 - 秘密文本,并且您想从工作中访问它?这是标准场景:

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

    来自 Jenkins 控制台或附加凭据所在位置的 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}"
            }
        }
    }
    

    【讨论】:

    • 不,这是 dsl 的工作。我想在作业 dsl 脚本中访问它的值
    • 我添加了两种我使用的方法。但是,我有一段时间没有测试第二个并从草稿中复制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多