Certified Jenkins Engineer
Study Guide for Certified Jenkins Engineer exam
The outline is copied from Certified Jenkins Engineer (CJE) 2018 Study Guide. The rest of information is taken from Jenkins User Documentation.
The Certified Jenkins Engineer (CJE) exam consists of 60 multiple-choice questions testing knowledge of open-source Jenkins.
Introduction
This document is intended to help you prepare for the Certified Jenkins Engineer (CJE) exam.
The exam consists of 60 multiple-choice questions, divided into 4 sections, which will test your skills as a Jenkins Engineer.
In this guide, you will find a list of the topics tested on the exam, links to external references, and sample questions.
Main differences between 2016 and 2017 certification exams:
- Questions about open-source Jenkins are now based on Jenkins 2.19.4
- Pipeline related questions upgraded to the latest syntax coming with the version 2.4 of Pipeline plugin
- Open-source section includes questions on Multibranch and Pipeline Global Libraries
- Plugins covered in the exam now include only those in the “suggested” set (see below for details)
- Questions about CJP are now based on CJP 2.7.20.2
- CJP questions now include a section about CloudBees Assurance Program
Structure
This exam is comprised of 4 sections:
- Key CI/CD/Jenkins concepts
- Jenkins usage
- Building Continuous Delivery (CD) Pipelines
- CD-as-code best practices
All questions are based on version v2.176.2 [new] of the Jenkins core.
All questions are based on an out-of-the-box standard installation of Jenkins (“base” Jenkins), with the default recommended plugin set installed (“Suggested plugins”).
See section “Plugins” for more information.
NOTE: On the exam, questions are presented in random order, not in sections.
Plugins
Questions in sections 1–4 primarily cover questions about a “base” Jenkins installation, but knowledge of the “suggested” plugins will also be covered. Candidates are expected to know the functionality/uses of these plugins but will not be tested on detailed usage.
[new] The “suggested” plugins are the default plugins installed by the “Setup Wizard” on a fresh new Jenkins installation. You can find the exhaustive list, bound to a fixed Jenkins version, by following this link: Jenkins 2.176.2 suggested plugin list.
[new] Please note that the “Pipeline Plugin” is itself an aggregation of plugins implementing the Pipeline and related features. It includes the following capabilities:
Terminology
Please also note the following:
- SCM stands for “source code management” unless otherwise specified.
- Pipeline refers to the job type created by the Pipeline plugin (formerly known as the “Workflow plugin”), except where used generically (e.g., “CD pipelines”) or in the names of specific plugins (e.g., “Build Pipeline plugin”).
- Various UI elements in Jenkins will be referred to using the following terms:
1. Key CI/CD/Jenkins Concepts - 18%
This topic comprises approximately 18% of the exam. Questions cover the following topics:
- Continuous Delivery/Continuous Integration Concepts
- Define continuous integration, continuous delivery, continuous deployment
Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly. This article is a quick overview of Continuous Integration summarizing the technique and its current usage.
Continuous Delivery is a software development discipline where you build software in such a way that the software can be released to production at any time.
Continuous Deployment means that every change goes through the pipeline and automatically gets put into production, resulting in many production deployments every day.
- Difference between CI and CD
Continuous Integration is a core technique where everyone commits every day and code is integrated early and often. This improves frequency and reduces difficulty.
Continuous delivery takes this a step further. This is essentially the same as CI with one crucial difference: it allows us to deploy to production with a manual step, like the tap of a button.
What is great about this solution, is that everybody on the team can deploy; a project manager, a tester or the product owner. This is because there are no weird, secret dev-only procedures.
If you want a 100% automated process, you need to make the jump to what is commonly called Continuous Deployment. With this in place, nobody needs to touch a button to have a working build deployed – every step is automated!
Continuous Integration usually refers to integrating, building, and testing code within the development environment. Continuous Delivery builds on this, dealing with the final stages required for production deployment.
- Stages of CI and CD
CI Practices:
- Maintain a Single Source Repository.
- Automate the Build
- _Make Your Build Self-Smoketesting
- Everyone Commits To the Mainline Every Day
- Every Commit Should Build the Mainline on an Integration Machine
- Fix Broken Builds Immediately
- Keep the Build Fast
- Test in a Clone of the Production Environment
- Make it Easy for Anyone to Get the Latest Executable
- Everyone can see what’s happening
CD stages:
A typical CI/CD pipeline explained
The actual list of steps depends highly on the language and platform used, but typically consists of (at least) checkout, compilation and running unit tests. Some pipelines also add steps to perform code analysis and run additional tests (such as integration tests).
When all these steps are successful, a unique artifact is built, packaged, and published to a repository. This can be a JAR, .tar.gz file, a container image, or whatever is applicable to the chosen language and platform.
Some pipelines deploy the generated artifact to a test environment, to run additional checks.
Next, the artifact is deployed to staging/acceptance (or whatever you want to call it, the environment should be equivalent to production) and verified.
Now this is where Continuous Delivery and Continuous Deployment will start to diverge. If you want to do the former, there will be a manual gate, usually in the form of a button or similar. Pressing the button is required to “promote” an artifact to production.
When and what to promote is a choice. Promotion typically happens when a build is considered to be “good enough”. QA has run their tests, the Product Owner has signed off, etc. This means that not all artifacts make it to production!
Continuous Deployment gets rid of the manual gate and fully relies on automatic verification of the acceptance environment to determine whether the pipeline can continue on to production. Production, in turn, is verified in the same way.
Automation in general, and test automation specifically, is a crucial aspect of any CI/CD process and pipeline. Automatic verification is used in all stages, to validate artifacts, deployments, etc.
The goal of test automation is to catch known problems. Exploratory testing, usability reports, customer feedback, etc. helps us to identify the unknown issues, at which point automated tests can be adjusted to cover whatever’s been found.
- Continuous delivery versus continuous deployment
Continuous Delivery just means that you are able to do frequent deployments but may choose not to do it, usually due to businesses preferring a slower rate of deployment. In order to do Continuous Deployment you must be doing Continuous Delivery.
- Jobs
- What are jobs in Jenkins?
- Types of jobs
- Scope of jobs
- Builds
- What are builds in Jenkins?
- What are build steps, triggers, artifacts, and repositories?
- Build tools configuration
- Source Code Management
- What are source code management systems and how are they used?
- Cloud-based SCMs
- Jenkins changelogs
- Incremental updates v clean check out
- Checking in code
- Infrastructure-as-Code
- Branch and Merge Strategies
- Testing
- Benefits of testing with Jenkins
- Define unit test, smoke test, acceptance test, automated verification/functional tests
- Notifications
- Types of notifications in Jenkins
- Importance of notifications
- Distributed Builds
- What are distributed builds?
- Functions of masters and agents
- Plugins
- What are plugins?
- What is the plugin manager?
- Jenkins Rest API
- How to interact with it
- Why use it?
- Security
- Authentication versus authorization
- Matrix security
- Definition of auditing, credentials, and other key security concepts
- Fingerprints
- What are fingerprints?
- How do fingerprints work?
- Artifacts
- How to use artifacts in Jenkins
- Storing artifacts
- Using 3rd party tools
- How to use 3rd party tools
- Installation Wizard [new]
- What is the Jenkins Installation Wizard?
- How to use the Wizard?
- Which configurations are covered by the Installation Wizard?
These online resources provide entry points to understanding the above topics:
- http://www.martinfowler.com
- http://www.informit.com
- http://devops.com
- https://jaxenter.com
- http://www.infoq.com
- http://technologyconversations.com
- https://en.wikipedia.org
- https://jenkins.io [new]
- Jenkins Installation and Setup [new]
- Jenkins Documentation [new]
- Jenkins Pipeline [new]
- Jenkins HandBook [new]
- https://plugins.jenkins.io [new]
- https://www.safaribooksonline.com
- https://wiki.jenkins-ci.org
- http://docs.openstack.org
- https://www.simple-talk.com
- http://stackoverflow.com
- https://www.cloudbees.com/
- http://searchsecurity.techtarget.com/
2. Jenkins usage (features and functionality) - 23%
This topic comprises approximately 23% of the exam. Questions cover the following topics:
- Jobs
- Organizing jobs in Jenkins
- Parameterized jobs
- Usage of Freestyle/Pipeline/Matrix jobs
- Builds
- Setting up build steps and triggers
- Configuring build tools
- Running scripts as part of build steps
- Source Code Management
- Polling source code management
- Creating hooks
- Including version control tags and version information
- Testing
- Testing for code coverage
- Test reports in Jenkins
- Displaying test results
- Integrating with test automation tools
- Breaking builds
- Notifications
- Setup and usage
- Email notifications, instant messaging
- Alarming on notifications
- Distributed Builds
- Setting up and running builds in parallel
- Setting up and using SSH agents, JNLP agents, cloud agents
- Monitoring nodes
- Plugins
- Setting up and using Plugin Manager
- Finding and configuring required plugins
- CI/CD
- Using Pipeline (formerly known as “Workflow”)
- Integrating automated deployment
- Release management process
- Pipeline stage behavior
- Jenkins Rest API
- Using REST API to trigger jobs remotely, access job status, create/delete jobs
- Security
- Setting up and using security realms
- User database, project security, Matrix security
- Setting up and using auditing
- Setting up and using credentials
- Fingerprints
- Fingerprinting jobs shared or copied between jobs
- Artifacts
- Copying artifacts
- Using artifacts in Jenkins
- Artifact retention policy
- Alerts
- Making basic updates to jobs and build scripts
- Troubleshooting specific problems from build and test failure alerts
These online resources provide entry points to understanding the above topics:
3. Building Continuous Delivery (CD) Pipelines - 16%
This topic comprises approximately 16% of the exam. Questions cover the following topics:
- Pipeline Concepts
- Value stream mapping for CD pipelines
- Why create a pipeline?
- Gates within a CD pipeline
- How to protect centralized pipelines when multiple groups use same tools
- Definition of binary reuse, automated deployment, multiple environments
- Elements of your ideal CI/CD pipeline - tools
- Key concepts in building scripts (including security/password, environment information, etc.)
- Upstream and downstream
- Triggering jobs from other jobs
- Setting up the Parameterized Trigger plugin
- Upstream/downstream jobs
- Triggering
- Triggering Jenkins on code changes
- Difference between push and pull
- When to use push vs pull
- Pipeline (formerly known as “Workflow”)
- Benefits of Pipeline vs linked jobs
- Functionalities offered by Pipeline
- How to use Pipeline
- Pipeline stage view [new]
- Folders
- How to control access to items in Jenkins with folders
- Referencing jobs in folders
- Parameters
- Setting up test automation in Jenkins against an uploaded executable
- Passing parameters between jobs
- Identifying parameters and how to use them: file parameter, string parameter
- Jenkins CLI parameters
- Promotions
- Promotion of a job
- Why promote jobs?
- How to use the Promoted Builds plugin
- Notifications
- How to radiate information on CD pipelines to teams
- Pipeline Multibranch and Repository Scanning [new]
- Usage of Multibranch jobs
- Scanning GitHub and BitBucket Organization
- Scanning basic SCM repositories
- Pipeline Global Libraries [new]
- How to share code across Pipelines
- Usages of the Shared Libraries
- Interaction with Folders and Repository scanning
- Security and Groovy sandbox
These online resources provide entry points to understanding the above topics:
- https://jenkins.io/ [new]
- Handbook [new]
- Pipeline [new]
- Pipeline Global Shared Libraries [new]
- Pipeline Multibranch [new]
- Controlling the Flow with Stage, Lock, and Milestone [new]
- https://plugin.jenkins.io/ [new]
- Pipeline Plugin 2.4 [new]
- CloudBees Knowledgebase
- https://www.cloudbees.com
- CloudBees Documentation
- https://github.com
- http://wiki.jenkins-ci.org
4. CD-as-Code Best Practices - 10%
This topic comprises approximately 10% of the exam. Questions cover the following topics:
- Distributed builds architecture
- Fungible (replaceable) agents
- Master-agent connectors and protocol
- Tool installations on agents
- Cloud agents
- Traceability
- High availability
These online resources provide entry points to understanding the above topics: