如何动态地将credentialsId传递给Jenkins管道

时间:2017-05-23 04:39:08

标签: jenkins groovy jenkins-plugins jenkins-pipeline

有没有办法使用环境变量在withCredentials块中动态传递Jenkins管道中的credentialsId?

目前这有效:

withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: 'my-aws-credentials',
                        ACCESS_KEY: 'ACCESS_KEY', SECRET_KEY: 'SECRET_KEY']]) { }

但这不是:

withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: '${AWS_CREDENTIAL_ID}',
                        ACCESS_KEY: 'ACCESS_KEY', SECRET_KEY: 'SECRET_KEY']]) { }

我应该补充说,构建在docker容器中运行,但其他环境变量工作正常,所以我希望这个也可以工作。

3 个答案:

答案 0 :(得分:2)

实际上,我能够通过这样做来解决它 - >

withCredentials([[$class: 'AmazonWebServicesCredentialsBinding', credentialsId: env.AWS_CREDENTIAL_ID,
                        ACCESS_KEY: 'ACCESS_KEY', SECRET_KEY: 'SECRET_KEY']]) { } 

答案 1 :(得分:0)

您可以结合使用withEnv和withCredentials并动态传递凭据。凭据必须使用凭据绑定插件在Jenkins的“全局凭据”部分中定义:

withEnv([""CREDENTIALID=pw_${<some global variable>}",]) {
withCredentials([string(credentialsId: "${CREDENTIALID}", variable: 'mypassword' )]) {



}
}

这对我有用。希望这会有所帮助!

答案 2 :(得分:0)

这里是一个如何根据环境变量a[np.isinf(a)] = 0 的值设置凭据ID的示例:

np.where(a == np.inf)[0][0]

Output:
0  # this is the index position of np.inf in array a