My road to Certified Jenkins Engineer

Exam Preparation

  • CloudBees University offers three free courses. AFAIK these three are the best resources to prepare for this exam.
  • Linux Academy: Unfortunately, Linux Academy Certified Jenkins Course doesn’t cover topics in-depth. I will talk more about this in the gotchas section, but I really like Implementing CI/CD Pipeline course, which is more of hands-on.
  • Jenkins World 2019 Video
  • 60 multiple-choice questions in 90 minutes
  • You must correctly answer 66% of the questions to pass the exam.
  • Exam cost: $150
  • The entire exam is divided into 4 main topics
  • Jenkins Plugins
  • Artifacts
  • DSL(Scripted and Declarative pipeline)
  • Is the frequent, automatic integration of code.
  • Automatically tests all new and modified code with the master
  • Ensures that the code is always ready to be deployed.
  • Manual approval is required to actually deploy the software to production.
  • In simplest word, it’s just a file produced as a result of a Jenkins build.
  • As a default process, artifacts are stored where they are created so they are deleted when the workspace is wiped.
  • To save the artifacts we need to achieve it.
  • They store indefinitely unless you have a retention policy and should be deleted periodically.
  • Archiving artifacts is the Post build action.
  • For Pipeline step you need to use archiveArtifacts. Practice it using Snippet Generator.
  • As well as using Blue Ocean Editor
stage('archiveartifacts') {
steps {
archiveArtifacts(artifacts: 'my-test.zip', fingerprint: true)
  • Location of fingerprints(fingerprint is the MD5 checksum of an artifact)
/var/lib/jenkins/fingerprints
  • How to enable it(Merely check the Fingerprint box when you create the archiving step)
  • Once archived, an archive is attached to the build that produced it.
  • Use of Copy Artifact Plugin(to take artifacts from one project(Pipeline run) and copy them to another project)
  • To access the artifacts via Blue Ocean Editor
# Declarative Pipeline Examplepipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
# Scripted Pipeline Examplenode {
def mvnHome
stage('Preparation') { // for display purposes
// Get some code from a GitHub repository
git '
https://github.com/jglick/simple-maven-project-with-tests.git'
// Get the Maven tool.
// ** NOTE: This 'M3' Maven tool must be configured
// ** in the global configuration.
mvnHome = tool 'M3'
}
stage('Build') {
// Run the maven build
withEnv(["MVN_HOME=$mvnHome"]) {
if (isUnix()) {
sh '"$MVN_HOME/bin/mvn" -Dmaven.test.failure.ignore clean package'
} else {
bat(/"%MVN_HOME%\bin\mvn" -Dmaven.test.failure.ignore clean package/)
}
}
}
stage('Results') {
junit '**/target/surefire-reports/TEST-*.xml'
archiveArtifacts 'target/*.jar'
}
}
  • Pull for when you don’t control the repository or polling is ok
  • Push for when you need an immediate build or don’t want to waste resources on polling
  • Make sure you understand all the constructs in Jenkinsfile
pipeline {
agent any
stages {
stage('Build') {
steps {
//
}
}
stage('Test') {
steps {
//
}
}
stage('Deploy') {
steps {
//
}
}
}
}
  • Check the different parameter agent support
1: any
2: none
3: label
4: node
5: docker
6: Kubernetes
  • Containing a sequence of one or more stage directives, the stages section is where the bulk of the "work" described by a Pipeline will be located.
  • The steps section defines a series of one or more steps to be executed in a given stage directive.
  • Unit Tests: Test a small piece of code
  • Integration Tests: Validate Integration between multiple sub-systems(eg: database)
  • Smoke Tests: Validates basic functions of the system also known as Sanity Checking
  • Functional Tests: Validates the normal behaviors against the expectations and requirements
  • Acceptance Tests: Tests the full product from the perspective of the end user use cases.
  • Slack(Slack Notification plugin)
  • Email(Pay special attention to Email extension plugin)
  • How to configure Node(Worker)
  • Remember this term Fungible which means Replaceable/Throwable i.e Agent can be substituted by any other agent.
  • Minimum Requirement for Jenkins
1: Java8 or Java 11 is required(Java 9 and Java10 not supported)
Beware of operating system Limits
2: Maximum number of open files
3: Maximum number of forked processes
4: Network tuning (packet size, TCP timeouts)
  • Make sure you go to each and every tab of the Plugin Manager page
  • Pay special attention to these options, eg. under Installed Tab you have the option to Uninstall
  • Under advanced tab, you have the option to configure proxy
  • Upload Plugin
  • How to use jenkins cli
java -jar jenkins-cli.jar -s <jenkins url> -auth username:<jenkins token> list-jobsjava -jar jenkins-cli.jar -s http://localhost:8080 -auth username:<jenkins token> build <build name>
  • Make sure you remember initial setup screen
  • You can skip user creation during installation by continuing as admin
  • How to skip install wizard
/etc/sysconfig/jenkinsJENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -D jenkins.install.runSetupWizard=false"
  • You should know how to parameterized the build
  • Hands-on experience on how to create the Freestyle Job
  • Folder creates a container that stores nested items in it. Useful for grouping things together. Unlike view, which is just a filter, a folder creates a separate namespace so you can have multiple things of the same name as long as they are in different folders.
  • I will highly recommend watching this video.
  • Please try to create and play with these pipelines.
a: Straight forward question(Either you know the answer or not)
b: Question which required memorization(Definitely not my cup of tea)
c: In-depth question, you must need to know that topic in-depth to answer those question
  • Key to clear this exam is your hands on experience
  • Keep calm and write this exam
  • Thanks for taking the time to read my blog, let me know in case if you have any questions.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store