Bird
Raised Fist0
Jenkinsdevops~5 mins

Credential types and storage in Jenkins - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of credentials in Jenkins?
Credentials in Jenkins store sensitive information like passwords, tokens, or keys securely to allow Jenkins jobs to access external systems without exposing secrets.
Click to reveal answer
beginner
Name three common types of credentials supported by Jenkins.
Jenkins supports Username and Password, Secret Text, and SSH Username with Private Key as common credential types.
Click to reveal answer
intermediate
How does Jenkins store credentials securely?
Jenkins encrypts credentials and stores them in its internal credentials store, which is protected by Jenkins' security settings and file system permissions.
Click to reveal answer
intermediate
What is the difference between 'Secret Text' and 'Username and Password' credential types in Jenkins?
'Secret Text' stores a single secret string like an API token, while 'Username and Password' stores a pair of username and password for authentication.
Click to reveal answer
intermediate
Where can Jenkins credentials be scoped to control their availability?
Credentials in Jenkins can be scoped globally (available to all jobs) or to specific folders or pipelines to limit access.
Click to reveal answer
Which Jenkins credential type would you use to store an SSH private key?
ACertificate
BSecret Text
CUsername and Password
DSSH Username with Private Key
Where are Jenkins credentials stored?
AIn environment variables only
BIn plain text files on the Jenkins server
CEncrypted in Jenkins internal credentials store
DOn the user's local machine
What is the main benefit of scoping credentials in Jenkins?
ATo limit credential access to specific jobs or folders
BTo speed up Jenkins builds
CTo make credentials available to all users
DTo store credentials in plain text
Which credential type is best for storing an API token in Jenkins?
AUsername and Password
BSecret Text
CSSH Username with Private Key
DCertificate
Can Jenkins credentials be shared between different pipelines?
AYes, if credentials are scoped globally or to a shared folder
BNo, credentials are always private to one pipeline
COnly if stored in environment variables
DOnly if manually copied
Explain the different types of credentials Jenkins supports and when to use each.
Think about what kind of secret you need to store and how Jenkins uses it.
You got /4 concepts.
    Describe how Jenkins stores credentials securely and how scoping affects their availability.
    Consider both storage and access control.
    You got /4 concepts.

      Practice

      (1/5)
      1. Which of the following is NOT a common Jenkins credential type?
      easy
      A. Database connection string
      B. Secret text
      C. SSH private key
      D. Username and password

      Solution

      1. Step 1: Review common Jenkins credential types

        Jenkins commonly uses username/password, secret text, SSH keys, and secret files as credential types.
      2. Step 2: Identify the option not listed as a credential type

        Database connection string is not a built-in Jenkins credential type; it can be stored as secret text but is not a distinct type.
      3. Final Answer:

        Database connection string -> Option A
      4. Quick Check:

        Credential types exclude database connection string [OK]
      Hint: Remember Jenkins main credential types: user/pass, secret text, SSH keys [OK]
      Common Mistakes:
      • Confusing secret text with specific data types
      • Assuming all data can be a credential type
      • Thinking database strings are a separate credential type
      2. Which syntax correctly defines a secret text credential in Jenkins pipeline script?
      easy
      A. credentials('my-secret-text')
      B. withCredentials([string(credentialsId: 'my-secret-text', variable: 'SECRET')])
      C. secretText('my-secret-text')
      D. useSecret('my-secret-text')

      Solution

      1. Step 1: Understand Jenkins pipeline credential syntax

        Jenkins uses the withCredentials step with a list of credential bindings like string() for secret text.
      2. Step 2: Match correct syntax for secret text

        The correct syntax is withCredentials([string(credentialsId: 'id', variable: 'VAR')]) to bind secret text to an environment variable.
      3. Final Answer:

        withCredentials([string(credentialsId: 'my-secret-text', variable: 'SECRET')]) -> Option B
      4. Quick Check:

        Use withCredentials and string binding for secret text [OK]
      Hint: Use withCredentials and string() for secret text in pipelines [OK]
      Common Mistakes:
      • Using credentials() directly without withCredentials
      • Using non-existent secretText() or useSecret() steps
      • Confusing variable binding syntax
      3. What will be the output of this Jenkins pipeline snippet if the secret text credential 'API_KEY' has value '12345'?
      pipeline {
        agent any
        stages {
          stage('Show Secret') {
            steps {
              withCredentials([string(credentialsId: 'API_KEY', variable: 'KEY')]) {
                echo "API Key is: ${KEY}"
              }
            }
          }
        }
      }
      medium
      A. API Key is: 12345
      B. API Key is: ${KEY}
      C. API Key is:
      D. Error: credentials not found

      Solution

      1. Step 1: Understand withCredentials usage

        The withCredentials block binds the secret text with ID 'API_KEY' to the environment variable 'KEY'.
      2. Step 2: Check echo statement output

        The echo command prints the value of ${KEY}, which is '12345' from the secret text credential.
      3. Final Answer:

        API Key is: 12345 -> Option A
      4. Quick Check:

        Secret text bound to variable prints actual value [OK]
      Hint: withCredentials binds secrets to env vars, echo prints actual value [OK]
      Common Mistakes:
      • Expecting literal ${KEY} instead of variable substitution
      • Assuming empty output if secret is set
      • Confusing variable name or missing credentials
      4. Identify the error in this Jenkins pipeline snippet that tries to use SSH credentials:
      pipeline {
        agent any
        stages {
          stage('Use SSH') {
            steps {
              withCredentials([sshUserPrivateKey(credentialsId: 'ssh-key', keyFileVariable: 'KEYFILE')]) {
                sh 'ssh -i $KEYFILE user@host'
              }
            }
          }
        }
      }
      medium
      A. The sh step cannot access environment variables
      B. Incorrect use of keyFileVariable instead of usernameVariable
      C. sshUserPrivateKey cannot be used in withCredentials
      D. Missing usernameVariable in sshUserPrivateKey binding

      Solution

      1. Step 1: Review sshUserPrivateKey binding requirements

        sshUserPrivateKey requires both credentialsId and usernameVariable to bind the SSH username.
      2. Step 2: Identify missing usernameVariable

        The snippet only uses keyFileVariable but misses usernameVariable, which is required for proper binding.
      3. Final Answer:

        Missing usernameVariable in sshUserPrivateKey binding -> Option D
      4. Quick Check:

        sshUserPrivateKey needs usernameVariable and keyFileVariable [OK]
      Hint: sshUserPrivateKey needs usernameVariable and keyFileVariable [OK]
      Common Mistakes:
      • Omitting usernameVariable in sshUserPrivateKey
      • Thinking keyFileVariable alone is enough
      • Believing sh cannot use env variables
      5. You want to securely use a secret file credential in a Jenkins pipeline to deploy a configuration file. Which is the correct way to access the secret file inside the pipeline?
      hard
      A. Use credentials('config-file') directly in the shell command
      B. Use withCredentials([string(credentialsId: 'config-file', variable: 'CONFIG')]) and echo $CONFIG
      C. Use withCredentials([file(credentialsId: 'config-file', variable: 'CONFIG')]) and refer to $CONFIG path
      D. Store the file content as secret text and write it manually in the pipeline

      Solution

      1. Step 1: Understand secret file credential usage

        Secret files are accessed by binding them to a file path variable using file() in withCredentials.
      2. Step 2: Use the file path variable in pipeline steps

        The variable (e.g., CONFIG) holds the path to the secret file, which can be used in shell commands safely.
      3. Final Answer:

        Use withCredentials([file(credentialsId: 'config-file', variable: 'CONFIG')]) and refer to $CONFIG path -> Option C
      4. Quick Check:

        Secret files bind to file path variables with file() [OK]
      Hint: Use file() binding for secret files to get file path [OK]
      Common Mistakes:
      • Using string() for secret files instead of file()
      • Trying to use credentials() directly in shell
      • Manually writing file content instead of binding
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard