In Jenkinsfile, I want to make an ssh key
visible to all stages in the pipeline.
From the official document, I learned that:
environment
directive is used to defy environment variables for used within Jenkinsfile- The scope of the variables defined depends on the placement of the
environment
directive - One can set the some types of credentials inside
environment
directive with the help of thecredentials
helper - The types of credentials supported by the helper are:
- Secret text
- Usernames and passwords
- Secret files
For other types of credentials, the document suggests using the snippet generator
, which generates a step.
Example of an ssh key step
withCredentials([sshUserPrivateKey(credentialsId: 'jenkins_aws_to_bitbucket', keyFileVariable: 'BITBUCKET_PRV_KEY')]) {
// some block
}
This is meant to be used in a stage like:
pipeline {
agent {
// define agent details
}
stages {
stage('Example stage 1') {
steps {
withCredentials(bindings: [sshUserPrivateKey(credentialsId: 'jenkins-ssh-key-for-abc', \
keyFileVariable: 'SSH_KEY_FOR_ABC')]) {
//
}
withCredentials(bindings: [certificate(credentialsId: 'jenkins-certificate-for-xyz', \
keystoreVariable: 'CERTIFICATE_FOR_XYZ', \
passwordVariable: 'XYZ-CERTIFICATE-PASSWORD')]) {
//
}
}
}
stage('Example stage 2') {
steps {
//
}
}
}
}
Question
- If the steps are within a stage, are these credentials visible within other stages?
- If not, how to make these credentials global ~ visible within all stages