如何在Jenkins管道中的withCredentials中使用多个凭据

lvt*_*llo 41 credentials jenkins jenkins-pipeline

我在声明式jenkins管道中有以下步骤:我resources/使用libraryResource 创建来自我的文件夹的脚本.此脚本包含我的autobuild用户和某些admintest用户的凭据.

stage('Build1') {
                steps {
                    node{
                        def script = libraryResource 'tests/test.sh'
                        writeFile file: 'script.sh', text: script
                        sh 'chmod +x script.sh'
                        withCredentials([usernamePassword(credentialsId: xxx, usernameVariable: 'AUTOBUILD_USER', passwordVariable: 'AUTOBUILD_PASSWD')]){
                            sh './script.sh "
                        }

                    }

                }   
Run Code Online (Sandbox Code Playgroud)

这很好用.我可以使用我的autobuild用户.现在我正在寻找最好的方法,我也可以包括我的admintest用户的crendentials .我是否必须用第二withCredentials部分"嵌套"它还是可以再添加一个usernamePassword"数组"?

Vit*_*nko 79

当然,您可以使用一个withCredentials块将多个凭据分配给不同的变量.

withCredentials([
    usernamePassword(credentialsId: credsId1, usernameVariable: 'USER1', passwordVariable: 'PASS1'),
    usernamePassword(credentialsId: credsId2, usernameVariable: 'USER2', passwordVariable: 'PASS2')
]){
    //...
}
Run Code Online (Sandbox Code Playgroud)

  • @meshfields 这是 Groovy (10认同)
  • @nottinhill是什么意思?这已经很时髦了。 (3认同)

Max*_*Max 9

此外,您可以将其与 $class 一起使用

                    withCredentials([[
                      $class: 'AmazonWebServicesCredentialsBinding',
                      credentialsId: 'awsID',
                      accessKeyVariable: 'AWS_ACCESS_KEY_ID',
                      secretKeyVariable: 'AWS_SECRET_ACCESS_KEY'],

                    [$class: 'UsernamePasswordMultiBinding',
                      credentialsId: 'myID',
                      usernameVariable: 'USR',
                      passwordVariable: 'PWD']])
Run Code Online (Sandbox Code Playgroud)