Certified Jenkins Engineer

Course

November 16th, 2018

Intro Video

Photo of Michael McClaren

Michael McClaren

Linux Training Architect I in Content

Length

14:14:10

Difficulty

Intermediate

Course Details

The purpose of this course is to prepare students to pass the Certified Jenkins Engineer 2018 exam. Student will learn CI/CD concepts as well as Jenkins installation and functionality. We will discuss Best practices for CD pipelines as well as taking a look at Jenkins Securtiy.

Syllabus

Course Introduction

Who Am I and What Are We Doing Here?

About the Author

00:00:21

Lesson Description:

This video is an intorduction to course author Mike McClaren. Mike has over a decade of experience in infrastructure as code at all levels of information technology.

Course Intro

00:01:14

Lesson Description:

This is the introduction to the course. In this lesson we provide an overview of the topics that are covered on the certified Jenkins engineer exam.

KeyConcepts

Jenkins and Continuous Integration ( CI ) / Continuous Delivery ( CD )

CI/CD

00:10:13

Lesson Description:

In this lesson we discuss the concepts behind Continuous Integration, Continuous Delivery, and Continuous Deployment. We will look at how software development was done in the past, and show how the new methodology makes software development and release easier.

What Is a Job?

00:08:22

Lesson Description:

In this lesson we will learn about jobs, and the job types that are available in the default Jenkins installation. We will be creating various types of jobs later in the course, and this video provides a knowledge overview we'll need for future lessons.

What Is a Build?

00:05:13

Lesson Description:

In this lesson we will discuss what constitutes a build, and what a build produces. We will cover the steps of a build, and the configuration of build tools. These continue to form the base for later lessons, where we will be building software using Jenkins.

Source Code Management ( SCM )

00:07:22

Lesson Description:

In this lesson we will look at what SCM is, and what different types of SCM exist. How does code flow, and why we need an SCM in the first place? We take a very brief peek at the concept of infrastructure as code, and show how to branch and merge to ensure that the changes that you want are the changes that you keep.

Testing and Notifications

00:05:52

Lesson Description:

In this video we'll explore the concepts behind testing, and the resons that we need notifications.

Distributed Builds

00:03:56

Lesson Description:

In this lesson we will examine distributed builds, what they are, and the reason that you need to use them.

Plugins

00:04:09

Lesson Description:

In this lesson we look at plugins and what they are. Plugins are fundamental for maximizing the utility of Jenkins. We will see how to manage plugins, which will get us ready for some hands-on usage of plugins in Jenkins.

Jenkins Rest API

00:05:50

Lesson Description:

In this lesson we will look at the Jenkins API, and demonstrate some reasons to use it. We will see some examples of the API, and get ready for the hands-on portion of the course, where we'll implement it.

Security

00:06:28

Lesson Description:

In this lesson we will explore security in Jenkins, as it relates to permissions and how they are applied. We will look at matrix security and see how contexts affect permissions.

Artifacts and Fingerprints

00:03:45

Lesson Description:

In this lesson we will define artifacts and fingerprints, looking at where they are stored and what they are used for. This will allow us to understand better when we get our hands on them in later lessons, where we'll configure them in our builds and pipelines.

Installing Jenkins

Installation walkthrough

00:12:52

Lesson Description:

In this video we cover the installtion of jenkins on the cloud playground. This installation will differe from the installation that was done in the quick start course. please note that all commands that are run in the video lesson are run as root using sudo su. If you skip this step you will need to prefix each command with sudo. commands used in this video: sudo su # this prevents us from having to issue sudo each time. yum install -y wget wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key yum install jenkins java-1.8.0-openjdk-devel git -y systemctl enable jenkins && systemctl restart jenkins

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Using Jenkins

Features and Functionality

Jobs

00:14:08

Lesson Description:

In this video we will look at jobs/projects and see how to parameterize them from the gui. We will also take a look at the basics of a Freestyle project and get familiar with the gui so that as we move ahead we are more comfortable with the temrinology and location of the tools that we will use to create pipelines and more complicated builds.

Builds

00:10:24

Lesson Description:

In this lesson we will see how to use simple triggers to create upstream and downstream jobs. We will also look at how to get resources from one build into another build. We will also look at running simple script as steps in a build.

Source Code Management ( SCM )

00:10:33

Lesson Description:

In this video we will integrate source control into our project, we will pull from github and we will also implement webhooks to trigger our build. This will get us one step closer to building a full featured pipleline. In this lesson we are reaching out to outside services, this means that if the IP address of your cloudinstance changes you may need to update the Jenkins configuration to ensure that it is also showing the new IP address in the Jenkins URL section of the configuration page.

Testing

00:13:04

Lesson Description:

In this video we will look at how to perform testing using ant, how to configure Jenkins to consume test reports and how to use the build history to see how builds are progressing. We will get ant installed and configured using junit amd this will give us a basis for the more advanced configuratiuons that we will be moving tword as we progress into full fledged pipelines.

Notifications and Alerts

00:11:36

Lesson Description:

In this video we will look at enabling email notificaitons for builds and see how we can track the progress of a build from when it fails to when the build next completes sucesfully. This is one of the fundamental building blocks in the CI/CD pipeline and will be used in later lessons when we implement a full pipeline.

Distributed Builds

00:10:36

Lesson Description:

In this video we will be looking at setting up JNLP slave nodes for distributing builds. This builds on the knowledge that was obtained in the Jenkins Quick start course and allows us to procees with building on both linux and windows slave machines.

Plugins

00:07:46

Lesson Description:

In this video we will look at installing a plugin from the plugin manager as well as removing a plugin, we will also touch on how to restart Jenkins if the need arises without resorting to the command line.

Rest API

00:11:48

Lesson Description:

In this video we are going to be looking at the Jenkins rest API. We will investigate how to run a build, copy a job and restart the server. Commands that were used in this lesson: Get crumb CRUMB=$(wget -q --auth-no-challenge --user username --password Password --output-document - 'http://192.168.1.49:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') 1139d7870b3745018e44079544ac478117 Run a build curl -I -X POST http://darealmc:1193974fe1f27156c1cca4f218d9f0b751@192.168.1.49:8080/job/realmcjobs/job/pipeone/build -H "$CRUMB" Get job info curl -X GET http://darealmc:1193974fe1f27156c1cca4f218d9f0b751@192.168.1.49:8080/job/realmcjobs/job/pipeone/config.xml -H "$CRUMB" -o ./jobconfig.xml Create a job not in folder curl -s -X POST 'http://darealmc:1193974fe1f27156c1cca4f218d9f0b751@192.168.1.49:8080/createItem?name=copyone' --data-binary @jobconfig.xml -H "$CRUMB" -H "Content-Type:text/xml" Create a job in a folder curl -s -XPOST 'http://darealmc:1193974fe1f27156c1cca4f218d9f0b751@192.168.1.49:8080/job/realmcjobs/createItem?name=copyone' --data-binary @jobconfig.xml -H "$CRUMB" -H "Content-Type:text/xml

Security

00:16:14

Lesson Description:

In this video we are going to look at the Global security settings and the Matrix security plugin. We will see how permissions are inherited and how they are applied to child objects. We will also discuss secrutiy realms and contexts and how they affect our users.

Artifacts

00:06:16

Lesson Description:

In this video we will take a quick look into artifacts and where they are created in the build process. We will see where they are stored on disk and take a look at the fingerprints that are genereated for them. We will discuss planning for artifacts and how to get artifacts packaged for use in other builds.

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

00:30:00

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Pipelines

Building CD Pipelines

Pipeline Concepts

00:07:01

Lesson Description:

In this video we discuss some of the underlying concepts of pipelines. We duscuss the reason for Value Stream Mapping and tlak about the benifits of pipelines. This is a short Video but this is the foundation for what is to come.

Upstream, Downstream and Triggers

00:11:04

Lesson Description:

In this video we are going to look at how jobs can be triggered, how to order jobs to fire off in the correct order and the difference between an upstream and downstream job. We will also look at triggering from upstream jobs and ensuring that only validated build are triggering jobs. Below is the code that is used in the job 'generate a name' NAMES=(steve laura jim) NAMEPARAM=“${NAMES[1]}” echo $NAMEPARAM > /tmp/paramfile cat /tmp/paramfile

Parameters

00:09:24

Lesson Description:

In this lesson we will look at the parameters that are passed to jobs, we will see the file paramter in action and we will look at ways to pass parameters from one job to another.

Promotions

00:07:18

Lesson Description:

In this lesson we will talk about the reaosns that build promotion is needed and how it fits in with the build process overall. I will show you how to promote a build and ensure that only the artifacts from sucessfull builds are used in their downstream dependencies.

Pipeline ( the artist formerly known as "Workflow" )

00:09:51

Lesson Description:

In this lesson we will see how to convert a freestyle job to a declarative pipeline. We will see how stages are used to monitor the build process and how to look at the console output of a scripted pipeline. We will discuss the advantages of a scripted pipeline such as saving the code in an SCM as well as code reuse.

Pipeline Multibranch and Repository Scanning

00:07:38

Lesson Description:

In this lesson we will discuss pipeline multibranch repository scanning. We will look at how this can be leveraged to provide build tools to all of the branches that are feeding into the master branch on a project. This allows developers to build against the CI server in the same way that the master build will be validated. We will look at a jenkins file and see how these files are used to automate the building of branches in a multibranch pipeline.

Pipeline Global Libraries

00:09:43

Lesson Description:

In this lesson we will see how global libraries are used to share code between pipelines. We will discuss the groovy sandbox and the scope of a shared library. We will look at a shared library and its configuration as a global library and then see how it is implemented in pipeline code. We will talk about placement of libraries to ensure that code is run in a safe manner and yet allow developers the ability to generate libraries.

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:00:00

Hands-on Labs are real live environments that put you in a real scenario to practice what you have learned without any other extra charge or account to manage.

01:30:00

Best Practices

CD as Code

Distributed Builds Architecture

00:03:19

Lesson Description:

In this lesson we will be discussing best practices for Distributing builds in Jenkins. This is a small section on the exam but is important to the overall scope of Jenkins. Remeber to do your homework! https://wiki.jenkins.io/display/JENKINS/Distributed+builds

Replaceable Agents

00:05:06

Lesson Description:

In this video we will discuss Best Practices for replaceable agents. I will also talk about using configuration management to stand up agents. This is one of the things that is at the heart of infrastructure as code.

Master Agent Connectors and Protocol

00:03:30

Lesson Description:

In this video we talk about masters and agents, how they are connected and what remoting is. This is a quick overview of topics we covered earlier.

Tool Installation on Agents

00:04:28

Lesson Description:

In this short lesson we will discuss standardizing tool install on agents and the difference in installation locaitons between the automatic install from jenkins and a standard installation of a build tool.

Cloud Agents

00:03:22

Lesson Description:

In this short video we will discuss the options for deploying cloud agents. We will look at some plugins for managing cloud agents and see what native plugins that come with the suggested set are able to interact with cloud agents.

High Availability

00:05:03

Lesson Description:

In this video we will take a look at options for high availability in Jenkins. We will discuss some options for creating a more robust installation and how to go about backing up Jenkins.

Bring it all together.

The Exam

What to expect

00:06:25

Lesson Description:

In this video we will discuss how the exam is delivered. What you will see at the testing center as well as take a look at the registration site for the exam and talk about pricing.

Where to Go from Here

00:02:38

Lesson Description:

In this video we discuss where to go next, what pairs with your new certification and how to make the most out of what you have learned.

Jenkins Engineer

01:30:00