如何通过环境变量将git凭据传递给multiscm关闭

时间:2019-07-08 16:33:57

标签: jenkins-job-dsl

我很难通过credentialParam下拉列表传递git凭证。 每当我运行从下面的代码生成的作业(我从下拉列表中选择正确的部署密钥)时,git都会说它不接受凭据(它返回Permission denied (publickey).) 当我在'credentials'闭包中显式对git deploy key的ID进行硬编码时,一切正常。 我想知道为什么没有从REPO_CREDENTIALS变量中选择它? 这也很奇怪,因为每当我在运行生成的作业之前手动更改git url时,即使该更改也通过环境变量传递,该更改也会立即被该作业选择。

谢谢

job("test-job") {    


    parameters {
        stringParam('GIT_URL', 'git@github.com:myorg/myrepo.git', 'URL or Github repository for the project')
        credentialsParam('REPO_CREDENTIALS') {
            type('com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey')
            required(true)
            defaultValue('')
            description('Credential to use to pull from Github for this project')
        }
        stringParam('GIT_BRANCH', 'master', 'Git branch to scan, without \'origin/\' prefix.')
    }




    multiscm {
        git {
            remote {
                url('$GIT_URL')
                credentials('$REPO_CREDENTIALS')
            }
            branches('$GIT_BRANCH')
        }
    }


    steps {
        shell('./run.sh')
    }
}

1 个答案:

答案 0 :(得分:0)

无法将凭证参数用作Git SCM凭证。 Git插件不支持该字段的变量扩展。也无法在config UI中将变量配置为Git凭据。作业DSL只能生成UI可以生成的配置。如果该功能在配置用户界面中不可用,那么它在Job DSL中也不可用。