Ashar
Ashar

Reputation: 3245

How to get Jenkins credentials variable in all stages of my Jenkins Declarative Pipeline

How do I get Jenkins credentials variable i.e "mysqlpassword" accessible to all stages of my Jenkins Declarative Pipeline?

The below code snippet works fine and prints my credentials.

node {
  stage('Getting Database Credentials') {
    withCredentials([usernamePassword(credentialsId: 'mysql_creds', passwordVariable: 'mysqlpassword', usernameVariable: 'mysqlusername')]) 
    {
        creds = "\nUsername: ${mysqlusername}\nPassword: ${mysqlpassword}\n"
    }
        println creds
  }
}

How can I incorporate the above code in my current pipeline so that mysqlusername & mysqlpassword variables are accessible to all stages across the pipeline script i.e globally.

My pipeline script layout looks like below:

pipeline {          //indicate the job is written in Declarative Pipeline

    agent { label 'Prod_Slave' }

    environment {
                     STAGE_2_EXECUTED = "0"
    }

        stages {
            stage ("First Stage")  {
                     steps {
                echo "First called in pipeline"
                                script {
                        echo "Inside script of First stage"
                    }

                } 
          }       // end of first stage

            stage ("Second Stage")  {
                     steps {
                echo "Second stage called in pipeline"
                                script {
                        echo "Inside script of Second stage"
                    }

                } 
          }     // end of second stage

   }      //end of stages
}      // end of pipeline

I m on the latest version of Jenkins.

Requesting solutions. Thank you.

Upvotes: 2

Views: 11443

Answers (1)

Pacifist
Pacifist

Reputation: 3203

You can do something like this. Here, you define you variables under environment { } and use it throughout your stages.

pipeline {
agent any
   environment {
        // More detail: 
        // https://jenkins.io/doc/book/pipeline/jenkinsfile/#usernames-and-passwords
        MYSQL_CRED = credentials('mysql_creds')
   }
stages {
    stage('Run Some Command') {
        steps{
            echo "Running some command"
            sh '<some-command> -u $MYSQL_CRED_USR -p $MYSQL_CRED_PSW'
        }
    }
}

Variables defined under environments are global to all the stages so can be used in the whole jenkinsfile.

More information about credentials() in official documentation.

Upvotes: 5

Related Questions