如何在 jenkins 管道 groovy 文件中使用 withcredentials 设置多个凭据
How to Set multiple credentials using withcredentials in jenkins pipeline groovy file
我需要为一个作业设置两个或多个凭据,我的计划是像下面这样单独使用它,以便它可以在多个作业中使用
static void _artifactoryCredentialBinding(Job job) {
job.with {
wrappers {
credentialsBinding {
usernamePassword('USERNAME', 'PASSWORD', 'xxxxx')
}
}
}
}
static void _jasyptCredentialBinding(Job job) {
return job.with {
wrappers {
credentialsBinding {
usernamePassword('', 'PASSWORD', 'jasypt-credentials')
}
}
}
}
当我这样做时,第一个凭据被第二个凭据覆盖。
我将在我的 groovy 文件中的任何需要的地方调用这两个方法作为辅助方法。
我需要在少数工作中添加多个凭据,而在一个工作中只需要一个凭据。
在一个包装器下添加凭据会起作用 - ,但如果我在同一包装器下添加多个,我将无法重复使用。
我尝试在上述方法中返回 Job 并使用相同的方法设置 creds 但在构建时出现错误 -
ERROR: (CredentialBindingUtil.groovy, line 28) No signature of method: xxxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3.wrappers() is applicable for argument types: (xxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3$_closure9) values: [xxxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3$_closure9@11b4d391]
[Office365connector] No webhooks to notify
如何使凭据附加到现有凭据?
正如评论中所讨论的,可以通过配置块实现这一点。
static void _artifactoryCredentialBinding(def job) {
job.with {
configure { node ->
node / 'buildWrappers' / 'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper' / 'bindings' << 'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' {
usernameVariable 'some-credential-id'
credentialsId PASS1
passwordVariable USER1
}
}
}
}
static void _jasyptCredentialBinding(def job) {
job.with {
configure { node ->
node / 'buildWrappers' / 'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper' / 'bindings' << 'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' {
usernameVariable 'some-credential-id'
credentialsId PASS2
passwordVariable USER2
}
}
}
}
def a_job = job('a-temporaryjob')
_artifactoryCredentialBinding(a_job)
_jasyptCredentialBinding(a_job)
要了解配置块的工作原理,我强烈建议阅读 wiki page and an older blog post,其中逐步解释了如何配置不受支持的插件。
我需要为一个作业设置两个或多个凭据,我的计划是像下面这样单独使用它,以便它可以在多个作业中使用
static void _artifactoryCredentialBinding(Job job) {
job.with {
wrappers {
credentialsBinding {
usernamePassword('USERNAME', 'PASSWORD', 'xxxxx')
}
}
}
}
static void _jasyptCredentialBinding(Job job) {
return job.with {
wrappers {
credentialsBinding {
usernamePassword('', 'PASSWORD', 'jasypt-credentials')
}
}
}
}
当我这样做时,第一个凭据被第二个凭据覆盖。
我将在我的 groovy 文件中的任何需要的地方调用这两个方法作为辅助方法。
我需要在少数工作中添加多个凭据,而在一个工作中只需要一个凭据。
在一个包装器下添加凭据会起作用 -
我尝试在上述方法中返回 Job 并使用相同的方法设置 creds 但在构建时出现错误 -
ERROR: (CredentialBindingUtil.groovy, line 28) No signature of method: xxxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3.wrappers() is applicable for argument types: (xxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3$_closure9) values: [xxxx.CredentialBindingUtil$__pfJasyptCredentialBinding_closure3$_closure9@11b4d391] [Office365connector] No webhooks to notify
如何使凭据附加到现有凭据?
正如评论中所讨论的,可以通过配置块实现这一点。
static void _artifactoryCredentialBinding(def job) {
job.with {
configure { node ->
node / 'buildWrappers' / 'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper' / 'bindings' << 'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' {
usernameVariable 'some-credential-id'
credentialsId PASS1
passwordVariable USER1
}
}
}
}
static void _jasyptCredentialBinding(def job) {
job.with {
configure { node ->
node / 'buildWrappers' / 'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper' / 'bindings' << 'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' {
usernameVariable 'some-credential-id'
credentialsId PASS2
passwordVariable USER2
}
}
}
}
def a_job = job('a-temporaryjob')
_artifactoryCredentialBinding(a_job)
_jasyptCredentialBinding(a_job)
要了解配置块的工作原理,我强烈建议阅读 wiki page and an older blog post,其中逐步解释了如何配置不受支持的插件。