Bird
Raised Fist0
Jenkinsdevops~10 mins

Library versioning in Jenkins - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Library versioning
Start Jenkins Pipeline
↓
Load Library with Version
↓
Use Library Functions
↓
Execute Pipeline Steps
↓
Pipeline Completes
The Jenkins pipeline starts, loads a specific library version, uses its functions, executes steps, and then completes.
Execution Sample
Jenkins
library('my-shared-lib@v1.2')
node {
  stage('Build') {
    mySharedLib.buildApp()
  }
}
This Jenkins pipeline loads version v1.2 of a shared library and calls its buildApp function inside a build stage.
Process Table
StepActionLibrary VersionFunction CalledPipeline State
1Start pipelinenonenonePipeline started
2Load libraryv1.2noneLibrary v1.2 loaded
3Enter node blockv1.2noneNode allocated
4Enter stage 'Build'v1.2noneStage Build started
5Call buildApp()v1.2buildAppbuildApp function executed
6Stage 'Build' completev1.2noneStage Build finished
7Pipeline completev1.2nonePipeline finished successfully
💡 Pipeline finishes after executing all stages using library version v1.2
Status Tracker
VariableStartAfter Step 2After Step 5Final
libraryVersionnonev1.2v1.2v1.2
pipelineStatenot startedstartedrunning buildAppfinished
Key Moments - 2 Insights
Why do we specify '@v1.2' when loading the library?
Specifying '@v1.2' tells Jenkins exactly which version of the library to use, ensuring consistent behavior as shown in execution_table step 2.
What happens if we omit the version when loading the library?
Jenkins uses the default or latest library version, which might cause unexpected changes. The execution_table shows explicit version loading to avoid this.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the library version loaded at step 2?
Alatest
Bv1.2
Cv1.0
Dnone
💡 Hint
Check the 'Library Version' column at step 2 in the execution_table.
At which step does the buildApp function get executed?
AStep 5
BStep 3
CStep 6
DStep 7
💡 Hint
Look at the 'Function Called' column in the execution_table.
If we change the library version to '@v2.0', what changes in the execution table?
APipeline state changes to failed
BFunction called changes to buildAppV2
CLibrary Version column shows v2.0 instead of v1.2
DNo changes at all
💡 Hint
Changing version affects the 'Library Version' column in the execution_table.
Concept Snapshot
Jenkins Library Versioning:
- Use library('name@version') to load specific library version.
- Ensures consistent pipeline behavior.
- Call library functions after loading.
- Version controls shared code updates.
- Avoids unexpected changes from default/latest versions.
Full Transcript
This visual execution shows how Jenkins pipelines load a specific version of a shared library using the syntax library('my-shared-lib@v1.2'). The pipeline starts, loads version v1.2 of the library, then calls the buildApp function from that library inside a build stage. The execution table tracks each step, showing the library version loaded and pipeline state changes. Key moments clarify why specifying the version is important to avoid unexpected behavior. The quiz tests understanding of version loading and function execution steps. The snapshot summarizes the key points about library versioning in Jenkins pipelines.

Practice

(1/5)
1. What does specifying a library version with @version in Jenkins pipelines help achieve?
easy
A. It disables the use of shared libraries in the pipeline.
B. It automatically updates the library to the latest version every time.
C. It ensures the pipeline uses a specific stable version of the shared library.
D. It deletes the library after the pipeline finishes.

Solution

  1. Step 1: Understand library versioning purpose

    Library versioning lets you pick a specific version of shared code to keep builds stable.
  2. Step 2: Analyze the effect of specifying @version

    Using @version locks the pipeline to that library version, avoiding unexpected changes.
  3. Final Answer:

    It ensures the pipeline uses a specific stable version of the shared library. -> Option C
  4. Quick Check:

    Library versioning = stable builds [OK]
Hint: Use '@version' to lock library version for stability [OK]
Common Mistakes:
  • Thinking '@version' updates to latest automatically
  • Believing it disables libraries
  • Assuming it deletes libraries after use
2. Which of the following is the correct syntax to load a shared library named utils at version v2.1 in a Jenkins pipeline?
easy
A. library('utils@v2.1')
B. library('utils:v2.1')
C. library('utils#v2.1')
D. library('utils-v2.1')

Solution

  1. Step 1: Recall Jenkins library version syntax

    Jenkins uses @ to specify the version or branch of a shared library.
  2. Step 2: Match syntax to options

    Only library('utils@v2.1') uses the correct @ symbol for versioning.
  3. Final Answer:

    library('utils@v2.1') -> Option A
  4. Quick Check:

    Version syntax uses '@' [OK]
Hint: Use '@' to specify library version in library() call [OK]
Common Mistakes:
  • Using ':' or '#' instead of '@' for version
  • Combining name and version with '-'
  • Omitting quotes around library name
3. Given this Jenkins pipeline snippet:
library('commonLib@release-1.0')
node {
  echo commonLib.hello()
}

What will happen if commonLib has a method hello() that returns "Hello v1.0"?
medium
A. The pipeline prints "Hello v1.0".
B. The pipeline prints "Hello latest".
C. The pipeline fails with a method not found error.
D. The pipeline ignores the library and prints nothing.

Solution

  1. Step 1: Identify library version used

    The pipeline loads commonLib at version release-1.0.
  2. Step 2: Understand method call effect

    Calling commonLib.hello() runs the method from version release-1.0, which returns "Hello v1.0".
  3. Final Answer:

    The pipeline prints "Hello v1.0". -> Option A
  4. Quick Check:

    Versioned library method returns expected output [OK]
Hint: Versioned library methods return outputs from that version [OK]
Common Mistakes:
  • Assuming it prints latest version output
  • Expecting a failure without checking version
  • Thinking library is ignored without error
4. You wrote this line in your Jenkinsfile:
library('sharedLib@v1.2.3')

But the pipeline fails with an error: Library not found: sharedLib@v1.2.3. What is the most likely cause?
medium
A. The library name sharedLib is misspelled in the Jenkinsfile.
B. The version tag v1.2.3 does not exist in the library repository.
C. The Jenkins server is offline and cannot load any libraries.
D. The pipeline syntax requires double quotes instead of single quotes.

Solution

  1. Step 1: Analyze error message

    The error says the library with version v1.2.3 was not found.
  2. Step 2: Identify common causes

    This usually means the version tag v1.2.3 does not exist in the library's source repository.
  3. Final Answer:

    The version tag v1.2.3 does not exist in the library repository. -> Option B
  4. Quick Check:

    Missing version tag causes library not found error [OK]
Hint: Check if version tag exists in library repo when loading fails [OK]
Common Mistakes:
  • Assuming syntax quotes cause the error
  • Blaming library name spelling without checking version
  • Ignoring network or server issues without evidence
5. You want to update your Jenkins pipeline to use a new library version feature-x but keep the old version stable available for some jobs. How can you manage this using Jenkins library versioning?
hard
A. Delete the stable version from the repository to force use of feature-x.
B. Rename the library folder for each version and update the pipeline accordingly.
C. Use library('lib') without version to automatically switch between versions.
D. Specify library('lib@feature-x') in new jobs and library('lib@stable') in old jobs.

Solution

  1. Step 1: Understand versioning usage

    Jenkins library versioning lets you specify which version to use per pipeline.
  2. Step 2: Apply versioning to different jobs

    By specifying @feature-x or @stable, you control which version each job uses independently.
  3. Final Answer:

    Specify library('lib@feature-x') in new jobs and library('lib@stable') in old jobs. -> Option D
  4. Quick Check:

    Use '@version' per job to manage multiple library versions [OK]
Hint: Use '@version' per job to switch library versions easily [OK]
Common Mistakes:
  • Renaming folders instead of using version tags
  • Omitting version to auto-switch versions
  • Deleting stable version causing build failures
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