84

I have the following step in my declarative jenkins pipeline: I create script which comes from my resources/ folder using libraryResource. This script contains credentials for my autobuild user and for some admintest user.

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 "
                        }

                    }

                }   

This works fine. I can use my autobuild user. Now I'm searching for the best way how I can include also the crendentials of my admintest user. Do I have to 'nest' it with a second withCredentials part or can I add again a usernamePassword 'array'?

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
lvthillo
  • 28,263
  • 13
  • 94
  • 127

2 Answers2

183

Sure, you can use one withCredentials block to assign multiple credentials to different variables.

withCredentials([
    usernamePassword(credentialsId: credsId1, usernameVariable: 'USER1', passwordVariable: 'PASS1'),
    usernamePassword(credentialsId: credsId2, usernameVariable: 'USER2', passwordVariable: 'PASS2')
]){
    //...
}
Vitalii Vitrenko
  • 9,763
  • 4
  • 43
  • 62
  • How to do this with Groovy? – Stephan Kristyn Dec 03 '18 at 23:19
  • 20
    @meshfields this is Groovy – Vitalii Vitrenko Mar 04 '20 at 13:38
  • @SteveK stage('stage 2') { steps{ withCredentials([usernamePassword(usernameVariable: 'user_1', passwordVariable: 'password_1', credentialsId: 'id_1'), usernamePassword(usernameVariable: 'username_2', passwordVariable: 'password_2', credentialsId: 'id_2')]){ sshagent(credentials : ['jenkins_ssh_user_key']) { sh """ """ } } } } – Mohsen Abasi Jul 11 '21 at 07:15
10

Also, you can use this with $class

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

                    [$class: 'UsernamePasswordMultiBinding',
                      credentialsId: 'myID',
                      usernameVariable: 'USR',
                      passwordVariable: 'PWD']])
Max
  • 4,292
  • 1
  • 20
  • 14