Bird
Raised Fist0
Jenkinsdevops~5 mins

Multiple SCM repositories in Jenkins - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does SCM stand for in Jenkins?
SCM stands for Source Code Management. It is used to manage and track changes in source code repositories.
Click to reveal answer
intermediate
How can Jenkins handle multiple SCM repositories in a single job?
Jenkins can handle multiple SCM repositories by adding multiple SCM configurations in the job's configuration using the 'Multiple SCMs' plugin or by using pipeline scripts to checkout multiple repositories.
Click to reveal answer
intermediate
What is the purpose of the 'Multiple SCMs' plugin in Jenkins?
The 'Multiple SCMs' plugin allows Jenkins jobs to check out source code from more than one SCM repository in a single build step.
Click to reveal answer
intermediate
In a Jenkins pipeline, how do you check out two Git repositories?
You use multiple 'checkout' steps with different 'git' commands or use the 'checkout' step twice with different repository URLs inside the pipeline script.
Click to reveal answer
beginner
Why might you want to use multiple SCM repositories in one Jenkins job?
You might want to use multiple SCM repositories if your project depends on code from different repositories, such as shared libraries or components, so you can build and test them together.
Click to reveal answer
Which Jenkins plugin allows you to configure multiple SCM repositories in a single job?
AMultiple SCMs plugin
BGit plugin
CPipeline plugin
DDocker plugin
In a Jenkins pipeline, how do you check out two different Git repositories?
AYou cannot check out multiple repositories in a pipeline
BUse two separate 'checkout' steps with different repository URLs
CUse the 'git clone' shell command only
DUse one 'checkout' step with multiple URLs separated by commas
What is a common reason to use multiple SCM repositories in Jenkins?
ATo avoid using pipelines
BTo speed up the build by using multiple repositories
CTo build projects that depend on multiple codebases
DTo reduce disk space usage
Which Jenkins feature is NOT directly related to handling multiple SCM repositories?
AMultiple SCMs plugin
BPipeline script with multiple checkouts
CGit plugin
DBuild triggers
If you want to add multiple SCM repositories in a freestyle Jenkins job, what should you do?
AInstall and use the Multiple SCMs plugin
BUse only one SCM repository per job
CUse pipeline scripts only
DUse the Git plugin multiple times without plugins
Explain how Jenkins can manage multiple SCM repositories in a single build job.
Think about plugins and pipeline capabilities.
You got /3 concepts.
    Describe a scenario where using multiple SCM repositories in Jenkins is beneficial.
    Consider projects that rely on code from different places.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What is the main benefit of using multiple SCM repositories in a Jenkins job?

      easy
      A. It allows Jenkins to fetch code from several repositories in one build.
      B. It speeds up the Jenkins server performance automatically.
      C. It merges all repositories into a single repository permanently.
      D. It restricts Jenkins to use only one branch per build.

      Solution

      1. Step 1: Understand Jenkins SCM usage

        Jenkins uses SCM to get source code for building projects.
      2. Step 2: Identify multiple SCM benefit

        Multiple SCM lets Jenkins pull from many repositories in one job, useful for projects with dependencies.
      3. Final Answer:

        It allows Jenkins to fetch code from several repositories in one build. -> Option A
      4. Quick Check:

        Multiple SCM = fetch multiple repos [OK]
      Hint: Multiple SCM means multiple code sources in one job [OK]
      Common Mistakes:
      • Thinking it merges repos permanently
      • Assuming it improves server speed
      • Believing it limits branches
      2.

      Which Jenkins pipeline syntax correctly defines two SCM repositories using checkout steps?

      <pre>1) checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo1.git']]]) checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo2.git']]]) 2) checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo1.git', url: 'https://repo2.git']]]) 3) checkout([$class: 'GitSCM', url: 'https://repo1.git']) checkout([$class: 'GitSCM', url: 'https://repo2.git']) 4) checkout([$class: 'GitSCM', userRemoteConfigs: ['https://repo1.git', 'https://repo2.git']])

      easy
      A. Option 1
      B. Option 2
      C. Option 3
      D. Option 4

      Solution

      1. Step 1: Check syntax for multiple SCM in Jenkins pipeline

        Each checkout step handles one SCM repo; multiple repos require multiple checkout calls.
      2. Step 2: Analyze options

        Option 1 uses two separate checkout calls with correct userRemoteConfigs. Option 2 tries to combine repos in one config incorrectly. Option 3 uses wrong key url directly. Option 4 uses wrong list format.
      3. Final Answer:

        Option 1 -> Option A
      4. Quick Check:

        Separate checkout per repo = Option 1 [OK]
      Hint: Use separate checkout steps for each repo [OK]
      Common Mistakes:
      • Combining multiple URLs in one userRemoteConfigs entry
      • Using 'url' key instead of userRemoteConfigs
      • Passing URLs as plain list without map
      3.

      Given this Jenkins pipeline snippet, what will be the result?

      stage('Checkout') {
        steps {
          checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo1.git']]])
          checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo2.git']]])
        }
      }

      Choose the correct statement about the workspace after this stage runs.

      medium
      A. The workspace contains code from both repo1 and repo2 in separate folders.
      B. The workspace contains only repo2 code, repo1 is overwritten.
      C. The workspace contains merged files from repo1 and repo2 in the root folder.
      D. The build will fail due to multiple checkout commands.

      Solution

      1. Step 1: Understand default checkout behavior

        By default, Jenkins checks out each repo into the same workspace folder, overwriting previous content.
      2. Step 2: Analyze the effect of two checkout calls

        The second checkout replaces the first repo's files because both use the root workspace folder without specifying subdirectories.
      3. Final Answer:

        The workspace contains only repo2 code, repo1 is overwritten. -> Option B
      4. Quick Check:

        Multiple checkout without directories overwrites workspace [OK]
      Hint: Without directories, last checkout overwrites workspace [OK]
      Common Mistakes:
      • Assuming repos merge automatically
      • Thinking Jenkins creates subfolders by default
      • Believing multiple checkouts cause build failure
      4.

      In a Jenkins job configured with multiple SCM repositories, the build fails with this error: hudson.plugins.git.GitException: Command "git clone" failed. What is the most likely cause?

      medium
      A. The workspace directory is not cleaned before checkout.
      B. The Jenkins server has no internet connection.
      C. The Jenkinsfile syntax is invalid.
      D. The userRemoteConfigs list is empty or missing URLs.

      Solution

      1. Step 1: Understand the error context

        Git clone failure usually means the repository URL is invalid or missing.
      2. Step 2: Check multiple SCM config

        If userRemoteConfigs is empty or missing URLs, Jenkins cannot clone repos, causing this error.
      3. Final Answer:

        The userRemoteConfigs list is empty or missing URLs. -> Option D
      4. Quick Check:

        Missing repo URLs cause git clone failure [OK]
      Hint: Check repo URLs in userRemoteConfigs first [OK]
      Common Mistakes:
      • Blaming workspace cleanup for git clone errors
      • Assuming Jenkinsfile syntax causes git clone failure
      • Ignoring network issues as cause
      5.

      You want to configure a Jenkins pipeline to checkout two Git repositories into separate folders repo1 and repo2 inside the workspace. Which pipeline snippet correctly achieves this?

      checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo1.git']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'repo1']]])
      checkout([$class: 'GitSCM', userRemoteConfigs: [[url: 'https://repo2.git']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'repo2']]])
      hard
      A. This snippet merges both repos into the root workspace folder.
      B. This snippet will fail because RelativeTargetDirectory is not supported.
      C. This snippet correctly checks out both repos into separate folders.
      D. This snippet only checks out the first repo; second is ignored.

      Solution

      1. Step 1: Understand RelativeTargetDirectory extension

        This extension tells Jenkins to checkout the repo into a specified subfolder inside the workspace.
      2. Step 2: Analyze the snippet

        Each checkout uses RelativeTargetDirectory with different folder names, so repos go into separate folders without overwriting.
      3. Final Answer:

        This snippet correctly checks out both repos into separate folders. -> Option C
      4. Quick Check:

        RelativeTargetDirectory separates repos in workspace [OK]
      Hint: Use RelativeTargetDirectory to separate repos in workspace [OK]
      Common Mistakes:
      • Not using RelativeTargetDirectory causes overwriting
      • Assuming Jenkins merges repos automatically
      • Believing second checkout is ignored
      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