Jenkins Unlocked: 4-In-One
This training program includes 4 complete courses, carefully chosen to give you the most comprehensive training possible.
The first course, Effective Jenkins: Getting Started with Continuous Integration, covers key concepts of Continuous Integration, as well Continuous Deployment. You will understand the main parts of Jenkins and create different types of Jenkins projects to automate everything that you want. You will finish the first course by looking at a Java web project and creating the necessary steps to build and test it, thereby empowering you to implement it in a real project.
The second course, Effective Jenkins: Continuous Delivery with Jenkins Pipeline, covers key concepts of DevOps and delve into Jenkins Pipeline, a set of plugins that provides a toolkit for designing simple-to-complex delivery pipelines as code. To design a production-ready delivery pipeline, you will start by creating a simple pipeline and understanding Jenkins Pipeline terms and its particularities. Next, you will set up Docker to create isolated build environments. To consolidate your learning, you will create a delivery pipeline to build, test, and deploy a Java web project.
The third course, Effective Jenkins: Improving Quality in the Delivery Pipeline with Jenkins, cover various branching strategies and how to implement continuous feedback on every feature branch using Jenkins multi-branch. Moving on, you’ll improve the quality of your software development workflows and learn how to integrate Jenkins with GitHub to automatically build pull requests.
The fourth course, Practical Jenkins, gets you up and running with Jenkins and enables you to deliver an optimal Jenkins deployment. Explore and configure features such as high availability, security, monitoring, and backing up/restoring data, which are basically all of the things you need to implementing a scalable and production grade infrastructure. Also, learn how to implement distributed builds, automate build pipelines, and integrate your Jenkins deployment with external services, thus showing you how to increase your team’s productivity with pipeline as a code building advanced pipelines faster and easier.
By the end of this training program you’ll be thoroughly equipped with the concepts of Jenkins and be able to automate, implement, secure, and manage your Jenkins deployment in no time
About the Author
Rodrigo is a Certified Jenkins Engineer and has 14+ years’ experience in software development with different programming languages and technologies in different countries (Brazil, US, Portugal, Germany, and Austria) and projects in companies ranging from financial institution to game and e-commerce ventures including Walmart. com, Goodgame Studios and HERE. He is an enthusiastic practitioner of Agile methodologies, Continuous Delivery, and DevOps, with large-scale adoption experience. He is always seeking to optimize the software development life cycle through automation, process improvements, and developing new tools and techniques. Rodrigo holds a B.S. in Computer Science and a postgraduate qualification in Software Engineering.
Anirban Saha is an infrastructure professional with more than seven and half years’ experience in infrastructure management at various industries and organizations ranging from early startups to corporate environments. He has worked extensively with configuration management and automation tools including Puppet, Chef, Ansible, Saltstack, and Terraform, to name a few. He has extensive experience in architecting, deploying, and managing large infrastructures and speaks at various conferences on the latest technologies.
Effective Jenkins: Getting Started with Continuous Integration
This video provides an overview of the entire course.
In this video, we will understand what Continuous Integration is and why it is important, see its key practices and how to practice it when you change the source code of our application.
- What is Continuous Integration?
- Understand the key practices of Continuous Integration
- Understand a workflow of changing code practicing Continuous Integration
This video aims to explain what is Continuous Delivery, its fundamentals and the Deployment pipeline.
- What is Continuous Delivery?
- Understand the pillars of Continuous Delivery
- Understand the Deployment pipeline
This video will explain the differences between Continuous Delivery and Continuous Deployment.
- Introduction to the software release process
- Understand Continuous Deployment
- Understand the difference between Continuous Delivery and Continuous Deployment
In this video, we will expand the differences between CI, CD and Continuous Deployment in the software development life cycle.
- Explain the boundaries of each practice
- Define the journey among these practices
In this video, we will understand what is Jenkins and its architecture.
- What is Jenkins and for what can I use it?
- Understand the Jenkins architecture
In this video, we are going to create a virtual machine with Linux and install Jenkins step-by-step.
- Prepare our isolated environment with vagrant and VirtualBox
- Install and configure Jenkins to start creating the projects
In this video, we are going to create our first Jenkins project and understand the key elements of the Jenkins Dashboard.
- Create the first Jenkins project, schedule a build and understand the project interface elements
- Understand the Jenkins Dashboard and its elements
In this video, we will understand the Jenkins global configuration, the place where you can define global setting to all Jenkins projects.
- Understand the Jenkins global settings
- Explore the Jenkins global tool configuration and install a JDK
In this video we will learn how to deal with it on Jenkins. Security is essential to control the users and its permission.
- Understand the Jenkins Realm, responsible for user authentication and add a new user
- Explore the authorization strategy by configuring the matrix-base security
- Grant permissions to the users
In this video, Jenkins is heavily based on plugins, it can integrate with thousands of tools and services from the plugins, and we are going to see how to do it.
- Explore the Jenkins Plugin management view
- See updates, available and installed plugins
- Explore the advanced tab of plugins
This video will focus on How to add and configure Jenkins build nodes?
- Create ssh-key for the Jenkins user in the Jenkins Master machine and configure Jenkins credentials
- Create a new virtual machine and configure ssh access
- Configure Jenkins and the project to use the new build node
In this video, Jenkins has different types of projects or jobs and we are going to explore the difference between then.
- Copy existing Jenkins projects and create new ones on different type of projects
In this video we are going so explore how Jenkins deal with that and how to define a retention policy to keep the relevant builds.
- Configure a project to trigger a build automatically based on a schedule
- Configure a project to trigger a build automatically in a specific date and time
- Configure the Jenkins retention policy
In this video we configure Jenkins to send e-mail notification on broken and fixed builds.
- Setup the SMTP server on the Jenkins global configuration.
- Configure the project/job to send e-mail notification on broken builds
- Configure the project/job to send e-mail notification on fixed builds
In this video, Part of the CI foundations is to maintain a single source repository. This video you explain how to integrate Jenkins with Github to use git repositories.
- Create a git repository on Github
- Integrate Jenkins with Github
This video will introduce the Sprint PetClinic, an open source sample project to be used in the next videos. Nothing better than using a sample project to understand how Jenkins works with a real life project.
- Introduction to Spring PetClinic project
- Build the project locally
- Install maven on Jenkins and create a job to build the PetClinic project
In this video, Using the java web project, we are going to create a CI build pipeline in Jenkins based on Upstream and Downstream jobs.
- Create a CI build pipeline
- Configure the initial job in the pipeline to trigger on every change in the source code.
This Video will show you two different possibilities to give enough visibility of the status of the builds for the development team. Visualizing the state of the mainline build is essential to practice continuous integration and get people embracing it.
- Install the build pipeline plugin
- Install the build monitor plugin
Effective Jenkins: Continuous Delivery with Jenkins Pipeline
This video provides an overview of the entire course.
DevOps has innumerous definitions, in this video we will clarify how the DevOps concept came to live and define the term.
- Understand why the DevOps concept has been created
- Define what is DevOps
When we talk about DevOps, collaboration is a key point. To support the DevOps culture, in this video, we will learn about the Delivery pipeline to support all people involved in the delivery process to easily visualize the stages to deploy a new change in the software.
- Understand the continuous delivery pipeline
- Understand a typical delivery pipeline
For a long time, Jenkins has had a default interaction model the web UI, but together with CI practices, Jenkins creator has understood that the delivery pipeline should be part of the source code. In this video we will give an introduction of this new feature.
- Review the default Jenkins interaction model and its disadvantages
- Introduce the CI as Code concept through Jenkins pipeline and its advantages
To start using Jenkins pipeline we need to install some required plugins. In this video, we will install the necessary plugins to start writing Jenkins Pipelines.
- Verify the necessary list of plugins and install using Jenkins
- Verify the installation by creating a new Jenkins Pipeline project
In this video, we will understand the scripted pipeline, a flexible and powerful way to start creating pipelines in groovy on Jenkins.
- Introduce the scripted pipeline
- Introduce the Jenkins Project
- Create a pipeline with Jenkins Pipeline
In this video, we will explore the most common step in a Jenkins pipeline and see how we can handle password on Jenkins pipeline to do not expose it to the users.
- Explore the most common steps in the pipeline
- Learn how to use the hidden password
Life is not a bed of roses, and with Jenkins it’s not different. In this video, we will understand how we can handle error during the pipeline execution and add post build steps.
- Handle error in the scripted pipeline
- Add a post build step
- Explore notification system with Jenkins pipeline
Jenkins pipeline can be written in two ways, declarative and scripted. In this video, we will understand the declarative pipeline syntax and its nuances.
- Learn what a declarative pipeline is
- Understand Sections, Directives and Steps
- Learn how to use scripts inside a declarative pipeline
CI as code can be accomplished via the JenkinsFile, a way of keeping the logic of your pipeline stored at the same repository as the application that you are build. This video will explain how this is possible with Jenkins.
- Learn what the JenkinsFile is
- Understand how the pipeline works with JenkinsFile
In this video, we will create a JenkinsFile and commit it together with a java project and create a pipeline project on Jenkins to run the pipeline from this file.
- Create a JenkinsFile and prepare a Jenkins pipeline project to use it
- Improve the JenkinsFile to checkout, build, and test and package the application
Docker is a well-known technology widely used today. In this video, we will briefly explain what Docker is and how it can support the CI environment.
- Understand the basics of Docker
- Learn how Docker can help on CI environment
To run Docker on Jenkins nodes we need first to install the Docker platform to start building the application with containers. This video will explain how to prepare the Jenkins machine for that.
- Install Docker on a Linux Jenkins node machine
- Create a Jenkins job to test the Docker installation
To have isolated and reproducible environments, Docker is the right tool to enable developers and the CI system to achieve it. In this video, we will see how to use Docker containers from Jenkins pipeline.
- Introduction to the Docker Hub
- Use one Docker container for the pipeline
- Use one Docker container per stage
To effectively apply the techniques learnt in this course, we will learn the Spring PetClinic project - a Java web project that we will create to deploy to a production-like environment.
- Introduce the Spring PetClinic Project
- Create a Continuous delivery pipeline on Jenkins
Traceability is an important topic for DevOps teams, who need to be able to trace code from commit to deployment. In this video, we will understand how Jenkins can help us with that.
- Understand what is Jenkins fingerprinting
- Archive an artefact
In this video, we will create an approval gate and a stage to deploy the project onto a production-like environment.
- Implement an approval gate in the pipeline requesting a human input
- Learn how to deploy our Java web project
Effective Jenkins: Improving Quality in the Delivery Pipeline with Jenkins
This video provides an overview of the entire course.
In this video, we will understand the Agile testing quadrants and how it impacts in the software development workflow based on Continuous Delivery.
- Understand what the Agile testing quadrants are
- Understand each Agile testing quadrant
In this video, we will extend our knowledge of tests from Continuous Delivery point of view, by understanding why tests are crucial to practice CD.
- Run automated tests on CI/CD
- Understand the automated testing pyramid
In this video, we will bring the theory to practice, by using a Java project to add tests, configure the build system and Jenkins to run and export the tests results on each execution of the build pipeline.
- Understand a Java project to be used to run tests
- Create the Jenkins build pipeline
- Show test results on Jenkins
In this video, we will add JaCoCo to the build system to understand the code coverage and add a quality gate on Jenkins by defining a threshold to fail the build in case the code coverage decreases.
- Measure tests with JaCoCo
- Add a quality gate on Jenkins
In this introductory video, we will understand database migration and why it is important.
- Understand what is database migration
- Understand why is data migration important towards CD
In this video, we will understand what Flyway, the database migration framework/tool is and how it fits and works for running migrations.
- Understand what is Flyway
- Understand how does Flyway work
In this video, we will prepare a Java project to run database migrations on integrations tests with H2 database and prepare our project to run the database migrations against the staging environment.
- Run migrations with H2 database
- Prepare Flyway to run migrations on staging environment
In this video, we will run the database migration scripts against the staging environment and create the Jenkins build pipeline to orchestrate it together with the execution of the automated tests.
- Verify staging environment
- Create the build pipeline
Now that we have a Jenkins build pipeline migrating the database to the latest version and running tests against it, we will change the database and the tests to make sure the build pipeline is reliable.
- Add new column to table user
- Run database migration and integration tests
- Run database migration on staging environment
In this video, we will understand what a branching strategy or workflow development is for your team and we will see the centralized workflow.
- Get an introduction to branching strategy
- Centralize your workflow
In this video, we will explore the feature branch workflow and understand how it works.
- Get an introduction to feature branch workflow
- Understand how feature branch workflow works
In this video, we will work with feature branches in practice, and configure Jenkins to execute a Jenkins build pipeline on each feature branch.
- Create feature branches
- Configure Jenkins to build feature branches
In this video, we will prepare Jenkins to run a multibranch pipeline project to execute the build pipeline for features and master branches.
- Configure a multibranch pipeline for feature branches and master
In this first video, we will deploy the Jenkins master to cloud via Vagrant. It will give us the base for the next videos, where we need Jenkins accessible to GitHub.
- Learn why do we need to deploy Jenkins on cloud
- Setup Jenkins on Digital Ocean
In this video, we will setup the authentication method on GitHub for Jenkins. After that, we will configure a GitHub server on Jenkins, and finally create a Jenkins GitHub organization project to build all the repositories, branches and opened Pull Requests in our GitHub account.
- Create GitHub personal token
- Configure GitHub server on Jenkins
- Create GitHub organization project
In this video, we are going to prepare a GitHub repository to be integrated with Jenkins. The integration will be used on Jenkins to run opened Pull Requests.
- Configure GitHub repository integration and services
In this video, we will install the GitHub Pull Request build plugin to be able to process Pull Requests from a particular repository and then, create a Jenkins pipeline project to trigger the build pipeline on every new Pull Request.
- Install Jenkins GitHub Pull Request builder plugin
- Create Jenkins pipeline project
This video will give you an overview about the course.
To work with any technology, it is crucial and mandatory to have a detailed understanding of the concepts and terminologies associated with it.
- Learn about Jenkins and it’s features
- Understand the development stages and Jenkins’ role in supporting them
- Learn about advanced features of Jenkins
Jenkins is a release engineering tool and there are few terminologies which need to be clarified with respect to Jenkins and release engineering.
- Explore Continuous Integration in detail
- Explore Continuous Delivery in detail
- Learn about Continuous Deployment in detail
To carry out even the most basic development support tasks with Jenkins, some essential tools need to be prepared such as softwares, repositories, storage and others.
- Install git and the Java runtime environment
- Create a Github account and add basic data to use repositories
- Set up dedicated storage for Jenkins data
To use Jenkins, an installation is required first. Jenkins is not bound to a specific method and can be installed using different procedures and on different infrastructure platforms.
- Install Jenkins via packages from a Jenkins managed repository
- Install Jenkins by deploying the Jenkins WAR file in Apache Tomcat
- Install Jenkins in a Docker container
After installation, Jenkins is accessible in form which is not very user-friendly. Some configurations and steps are needed to make it available for first time use and to users.
- Install nginx and add reverse proxy configuration
- Access Jenkins user interface and explore the setup wizard
- Configure SSH user with keys and git data
Preparation, installation and configuration of Jenkins is a long process and even more tedious if needed to perform repeatedly for different environments and in case of failures. It needs automation.
- Disable setup wizard and automate the steps using scripts
- Create Puppet module for Jenkins installation and configuration
- Apply Puppet module to node and automate the process
The primary function of Jenkins is to let users configure jobs and run builds from them. Although they can be done from the user interface, for more large and complex deployments, they need to be done from the command line or by using scripts.
- Create a small program and write tests for it
- Create a Jenkins job from the user interface and run builds
- Learn about Jenkins API and create jobs using API
With the growing number of projects in a Jenkins deployment, it is crucial to make sure that it withstands failures without any downtime. A highly available infrastructure tries to achieve this objective.
- Explore high availability support in Jenkins ecosystem
- Create multiple Jenkins master nodes with shared storage
- Use HAProxy as load balancer and test by failing nodes
Jenkins data, be it build history, information or configuration files, it is a good production practice to back them up so that they can be restored in event of a failure.
- Explore methods to backup and restore Jenkins data
- Install Periodic Backup plugin, configure and run backup of Jenkins data
- Simulate data loss and restore from backup
Without proper monitoring of the Jenkins infrastructure and its various components, it would be impossible to know about arising problems and fix them in time.
- Monitor Jenkins deployment using the monitoring plugin
- Monitor Jenkins metrics using Graphite reporting plugin and a graphite server
- Monitor Jenkins components using "monit"
With bigger deployments, comes bigger risk of data and permission abuse including accidental actions causing widespread damage. The only way to check these situations is by implementing correct security measures and role-based access control.
- Explore best practices in security and advanced authentication mechanisms
- Configure LDAP based security realm for authentication
- Manage access control using role-based authorization strategy
The Jenkins user interface is quite good and very helpful in performing tasks. However, for the more automation savvy people, it is just not enough. They need solutions which can be scripted to achieve the same objectives but much faster.
- Use API token to make calls and explore API endpoints
- Use Jenkins-cli to perform tasks
- Manage plugins efficiently using Jenkins-cli
No matter how much we scale a Jenkins master vertically, it simply would not be enough to support an ever-growing deployment. At some point of time, a distributed approach will need to be adopted.
- Understand distributed architecture and slave concepts
- Explore agent launch methods
- Understand labels in details
An efficient way to run a Jenkins deployment is to offload build tasks to slave nodes while keeping the administrative tasks to the master. The most traditional way of running slaves is by adding dedicated Jenkins slave nodes.
- Set up slave nodes along with dependencies
- Configure SSH access and add slave node via user interface
- Configure labels and run builds on the slave
With cloud platforms running a huge part of the global infrastructure, testing is another function we can add to it. Dynamic EC2 instances are an excellent and cost-effective way of running Jenkins slaves.
- Configure AWS IAM user and credentials
- Install EC2 plugin and configure the data to connect to AWS
- Run builds on AWS EC2 slaves
Containers are the newest revolution to take over the infrastructure space. With launch times of few seconds and flexible architecture, they are a great choice for running disposable Jenkins slaves.
- Understand containers as Jenkins slaves and select an image for running slaves
- Install and configure the Docker plugin
- Run builds on remote Docker containers
Although standalone containers are quite good for running Jenkins slaves, an even more efficient workflow can be achieved by using container orchestration and clustering platform such as Kubernetes.
- Understand how Kubernetes runs Jenkins slaves
- Install and configure the Kubernetes plugin and dependencies
- Run builds on remote Kubernetes pods
To achieve continuous deployment, one of the most important methods of release engineering, an efficient code deployment design is required. With the numerous tools available for deployments, it is crucial that we choose the right one for the complexity and size involved.
- Understand code deployments and involved concepts
- Configure AWS EC2 and CodeDeploy to provide a platform for rapid and efficient deployment
- Install and configure the CodeDeploy plugin and deploy code from Jenkins
For complex integration and release scenarios, jobs are not just enough. Jobs need to work together to create a sequenced workflow called pipeline. In the new model, Jenkins pipelines are a game changer with all features of pipelines integrated in itself.
- Understand workflow of release engineering
- Understand legacy pipeline model using Jenkins jobs
- Understand new pipeline model and its features
The new pipeline model of Jenkins has its core in the Jenkisfile. It is the source of all configurations related to the pipeline and involves a domain specific language with its own syntax. With detailed documentation, it needs some exploring.
- Understand the Jenkinsfile and basic syntax
- Explore Jenkinsfile syntax documentation and reference materials
- Understand some important section and directives
With knowledge of the Jenkinsfile syntax, the next step is to create the pipelines following the different methods available. Also automating the creation and update of pipeline jobs are necessary.
- Create pipeline from Jenkinsfile in pipeline project
- Create pipeline from Jenkinsfile in the code repository
- Automate pipeline creation using scripts
Almost all projects have multiple branches for efficient integration practices and the general pipeline is only able to handle one branch. Multi-branch pipelines are essential for automating projects involving multiple branches.
- Understand concept of multi-branch pipeline
- Configure prerequisites for multi-branch pipelines
- Create and explore new multi-branch pipelin0065
Although Jenkins has been solving release engineering problems for long, for some users, the learning curve is a bit high. With Blue Ocean, even the least technical users are able to view and use Jenkins pipelines with ease.
- Understand concepts and features of Blue Ocean
- Install and enable Blue Ocean
- Create pipelines using Blue Ocean
To achieve continuous integration, efficient branching and code commits are not enough. There needs to be a process to automatically trigger and run pipelines to process builds continuously. Github support is essential for this process.
- Explore required plugins
- Configuring Github and Jenkins for communication
- Configure pipeline for workflow and test scenarios
In modern day software development, its not just enough to write code. Efficient and optimized coding practices are essential and continuous code inspection and analysis becomes an integral part of the process.
- Install and configure Sonarqube plugin
- Add pipeline configuration for Sonarqube analysis
- Run pipeline and generate analysis report for project
With the numerous programming languages available in the software ecosystem, there arises the need for packaging of each type of software. It is critical that the software is packaged efficiently and made available to end users for use.
- Install and configure Artifactory plugin
- Add configuration for package creating and upload to Artifactory
- Run pipeline, upload to Artifactory and test on instance
With continuous integration, problems are identified readily and can be fixed early in the process. However, problems can differ in complexities and need efficient tracking throughout the process of fixing. JIRA integrates in an excellent manner and achieves the same objective.
- Install and configure the JIRA plugin
- Configure JIRA, Github and Jenkins for inter-communication
- Configure pipeline for JIRA and test pipeline
With large environments and numerous projects and pipelines, identifying problems and getting readily notified about them becomes essential. In addition to emails, instant notifications come handy when concerned people need to be updated.
- Install and configure Slack plugin in Jenkins
- Install and configure Jenkins app in Slack
- Add pipeline configuration for Slack and run pipelines