How to Use Credentials Binding Plugin in Jenkins for Secure Secrets
Use the
Credentials Binding Plugin in Jenkins to securely inject credentials like passwords or tokens into your build environment as environment variables. Configure the plugin in your pipeline or freestyle job by selecting the credential type and binding it to a variable, which your build steps can then use without exposing sensitive data.Syntax
The Credentials Binding Plugin syntax depends on the job type. In a Pipeline, use the withCredentials block to bind credentials to environment variables. For example, bind a username and password or a secret text.
Key parts:
credentialsId: The ID of the stored credential in Jenkins.usernameVariableandpasswordVariable: Environment variable names for username and password.string(credentialsId: ..., variable: ...): For secret text credentials.
groovy
pipeline {
agent any
stages {
stage('Example') {
steps {
withCredentials([usernamePassword(credentialsId: 'my-cred-id', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
sh 'echo Username is $USER'
sh 'echo Password is $PASS'
}
}
}
}
}Example
This example shows a Jenkins Pipeline that uses the Credentials Binding Plugin to inject a secret text credential into an environment variable called SECRET_TOKEN. The secret is used in a shell step without printing it to the console.
groovy
pipeline {
agent any
stages {
stage('Use Secret') {
steps {
withCredentials([string(credentialsId: 'token-id', variable: 'SECRET_TOKEN')]) {
sh '''
echo "Using secret token in script"
# Use the secret token here, e.g., curl with header
curl -H "Authorization: Bearer $SECRET_TOKEN" https://api.example.com/data
'''
}
}
}
}
}Output
Using secret token in script
{API response data here}
Common Pitfalls
Common mistakes when using the Credentials Binding Plugin include:
- Not using
withCredentialsblock, which causes credentials to be exposed in logs. - Using wrong
credentialsIdthat does not exist or is misspelled. - Printing credentials directly in
echoorshsteps, exposing secrets. - Not binding credentials to environment variables properly, causing build failures.
Always verify credential IDs in Jenkins and avoid printing secrets.
groovy
/* Wrong way: prints secret directly */ withCredentials([string(credentialsId: 'token-id', variable: 'SECRET_TOKEN')]) { sh 'echo $SECRET_TOKEN' // This exposes the secret in logs } /* Right way: use secret without printing */ withCredentials([string(credentialsId: 'token-id', variable: 'SECRET_TOKEN')]) { sh 'curl -H "Authorization: Bearer $SECRET_TOKEN" https://api.example.com/data' }
Quick Reference
Tips for using Credentials Binding Plugin:
- Store credentials in Jenkins Credentials Manager with unique IDs.
- Use
withCredentialsblock in Pipeline to bind secrets. - Bind credentials as
usernamePassword,string,file, or other supported types. - Never print secrets in logs or console output.
- Use environment variables inside
withCredentialsscope only.
Key Takeaways
Use the Credentials Binding Plugin to inject secrets securely as environment variables in Jenkins builds.
Always wrap secret usage inside the withCredentials block to avoid exposing credentials in logs.
Verify the credentialsId matches the stored credential in Jenkins to prevent errors.
Never print or echo credentials directly in build steps to keep secrets safe.
Use appropriate binding types like usernamePassword or string depending on your credential.