Jenkins 2 Bootcamp: Fully Automate Builds to Deployment 2020
- Install Jenkins CI server on Windows
- Install and configure several tools commonly used with Jenkins
- Understand the basics of continuous inspection, continuous integration, and continuous deployment
- Use Jenkins effectively to build, test, analyze and deploy Java projects
- Apply the techniques and experience to implement Jenkins and/or a continuous integration system
An overview of the goals in this course, including understanding key concepts, creating end-to-end automation, and mastering the Jenkins essentials.
A quick summary of the focus of this course as well as the approach taken. This course focuses on step by step hands on examples, backed up with a minimal amount of slides to help teach needed theory.
A description of the states of build maturity, including Minimal build process, continuous inspection, and finally continuous integration.
A quick summary of how the Jenkins system works by running on Jetty on a host system, and how on a more macro scale Jenkins is basically an executor of plugins.
An overview of what basics will be covered in this section, including creating our first jobs, working with that job, managing Jenkins, managing plugins, changing configuration settings, and setting up the build languages Jenkins will use.
Creating our first job in our newly installed Jenkins installation, adding a build step to echo a basic command back to us, and then finally running the build and viewing the results.
Exploring the Jenkins interface on the main level to show how Jenkins handles our newly created job.
Making our job intentionally fail in order to give an excuse to disable and then re enable the job.
Renaming our job, including making sure we have a separate name for the project URL to make the URL web friendly. Afterwards creating copies of our job to have multiple jobs to work with for future lessons.
Researching, installing and updating plugins in our Jenkins installation, including an instillation of a purposefully out of date plug in.
Deleting specific builds within a project, as well as deleting an entire project when it is no longer needed.
An overview of the process for this section, including validating our project outside of Jenkins, creating a Maven based Jenkins project, reviewing build results, integrating Maven deeper with Jenkins, and creating a workspace for Maven projects.
Compiling our project from GitHub on our local system first in order to ensure that it is working.
Taking a look at the workspace that accompanies the Jenkins project, which contains the entire Maven project.
Installing the Maven Integration plugin into Jenkins in order to build our Maven project with more features.
Taking a look at the specific features provided by the Maven integration plugin, namely how it allows us to see build results for the individual Maven Modules.
Intentionally failing our Maven project to show what a failure looks like with the Maven project type.
Automating builds by building our project every so often on a set schedule using the cron-like scheduling format used in Jenkins.
Using the cron-like format in order to periodically poll changes from our source code management to only build only when changes are detected on our GitHub repository.
Looking at Jenkins views, which are tabs on the Jenkins homepage that allow us to sort our projects into groups.
Looking at our local files of our Jenkins build system, including the location within our build system where our Jobs and their workspaces are stored.
An overview of what will be covered in this section, such as Java-focused code quality analysis tools, plugins to help with quality analysis, building and reviewing our quality analysis, and enforcing code quality by failing builds falling behind a threshold.
Reviewing the source code for our time tracker project on GitHub in order to understand better how the unit test dependencies work, where the unit test Java code is located, and how the project itself fits into all of this.
Installing the quality analysis plugins we will need to do unit testing, including Junit, PMD, FindBugs, and Checkstyle, configuring them to work in our project by adding their goals to the Maven project.
Reviewing the Unit test results for our time tracker project within the terminal output as well as within the individual modules for our Maven build. Also will causing a test to fail in order to observe what that does to our results trend.
Reviewing the code quality reports to view where specific code quality issues come up in our build, such that we will be able to fix them in later lessons.
Using thresholds from the static analysis collector plugin in order to either make our build fail or become unstable based upon the unit test results we have run on the build.
An overview of the ways we will create a Jenkins artifact repository in this section, which is not a long term solution to publishing build artifacts but rather a simple one we can do within Jenkins.
An overview of the topics that will be covered in this section on AWS lightsail for Jenkins Production, with an explanation of what creating a production style environment for Jenkins can do.
Creating a new AWS account and signing into it, making sure to fill out the payment information as it will be required to follow along.
Setting up a static IP address for our Lightsail installation and then associating it with a domain name record, forcing the association on our local system before the global DNS record updates to include it. You must own a domain name in order to fully complete this section.
- Basic computer skills
- Ability and access to install software (admin rights required)
- Desire to learn something new
This is a comprehensive course designed to show how to setup and run a Jenkins CI server starting with continuous inspection (build, test and analysis) all the way through to continuous deployment. This course provides a strong foundation for implementing continuous inspection, continuous integration, continuous delivery, and even continuous deployment at your company or studio. In order to ikeep the course short and to-the-point, several decisions were made in order to provide a complete path from CI to CD.
The pipeline created in this course consists of the following:
Jenkins CI server installed and configured on Windows
Git as the source control system
Java as the main programming language of build projects
Maven as the build tool
Findbugs, PMD, and Checkstyle as the static code analysis tools
Tomcat as the deployment server
Setup Jenkins in AWS using Lightsail
Use EC2 Plugin for Auto-scaling
This set of tools provides a comprehensive, end-to-end implementation continuous deployment pipeline. Jenkins can be installed on many operating systems and supports a myriad of tools and technologies -- which means, this course provides tremendous value to those comfortable or interested in other operating systems and/or technologies.
Introduction provides an overview for the course, which leas to the Core Concepts for Jenkins. This provides a foundation for the remainder of the course.
Installation provides step-by-step instructions on how to setup Jenkins and all the related tools specifically on Windows. The same principles are applicable to other operating systems as well.
The Basics provides a first look at Jenkins at work with a very simple "freestyle" project. This allows us to learn the Jenkins interface and the key features it provides.
After that, we dive into Maven Projects specifically -- since Jenkins natively understand Maven and thus provides special features for Maven projects.
Jenkins can do so much more than simply building. In Test & Quality, we hook up a standard set of unit testing and quality analysis tools for Java projects. Then, we use that information to affect the build status based on established standards.
We also cover how to use Jenkins as an artifact repository which is used to store the build artifacts, like jars and wars, after successful builds. This is particularly useful when integrating Jenkins with other tools in a more comprehensive software delivery strategy.
Then, we bring everything together for Deployment to a running Tomcat server. Don't worry, I'll walk you through the complete setup and configuration to work seamlessly with Jenkins!
Finally, no course would be complete without talking about Security. In this final chapter, we setup Jenkins to allow users to login and only see their projects.
Presentations provide audio/video training of conceptual ideas in each major area or introduction of new concepts.
Screencasts provide a video of the instructor's computer system with any actions, commands, or screens displayed and narrated. There are several hours of screencat video content -- it makes up the vast majority of the course. Any command line based screencast will include a command listing in the lecture downloads.
- Developers, software engineers, and programmers wanting to avoid "it works on my machine" syndrome
- IT professions looking to implement continuous inspection through continuous deployment at their company
- IT management that wants to have a deeper understanding of Jenkins and other DevOps concepts
- DevOps (Development/Operations) professional looking at Jenkins as a build tool or as part of a larger software delivery pipeline