5

我正在写一份工作-dsl 种子工作。种子作业需要能够从 github.com 或我的公司 github 企业服务器生成。我想保留一份工作而不是两份。

在每种情况下,我都希望对詹金斯进行身份验证。因此,为此,我将凭据硬编码到脚本中。然而我对此并不满意。我更愿意在种子作业中添加一个 Credentials 参数。

问题是,Creds 参数似乎将 en ENV 变量添加到包含 USERID/PASSWORD 的脚本中。 http://steve-jansen.github.io/blog/2014/12/16/parsing-jenkins-secrets-in-a-shell-script/

但是,git jobdsl 似乎需要一个凭据 ID,而不是 USERID/PASSWORD。

如何化解这一僵局?

scm {
    git {
        remote {
            name('origin')
                url(repo)
                credentials(myCredential)
        }
        branch('master')
    }
}
4

3 回答 3

5

可以在官方 wiki页面上找到 Job DSL 处理凭据的方式的一个很好的介绍。

两个示例说明如何将用户密码传递给 Jenkins 作业:

// use the github-ci-key credentials for authentication with GitHub 
job('example-1') { 
    scm { 
        git { 
            remote { 
                github('account/repo', 'ssh') 
                credentials('github-ci-key') 
            } 
        } 
    } 
} 

// assign the jarsign-keystore credentials to the PASSWORD build variable job('example-2') { 
    wrappers { 
        credentialsBinding { 
            usernamePassword('PASSWORD', 'jarsign-keystore') 
        } 
    } 
}
于 2016-04-03T14:53:01.917 回答
2

除了上面 Duane 的回答之外,CredentialID 是存储在 Jenkins 中的凭证的唯一 ID。您还可以提供自己的 ID 以有意义的方式识别它。

詹金斯凭证

在您的 job-dsl 脚本中使用上图中显示的此 ID,它应该适合您。

和平。

于 2018-01-18T20:42:02.263 回答
0

事实证明,问题的前提是错误的。CredentialsPlugin 1.7 将变量设置为 credentialID。

于 2016-04-01T21:45:45.937 回答