Continuous Delivery is used so as to have a constant flow of changes into production through an automated software production line. The combination of Docker and Jenkins improves your Continuous Delivery pipeline using a few resources. It also helps you scale up your builds, automate tasks, and speed up Jenkin’s performance with the benefits of Docker containerization. So if you are a developer or DevOps engineer and want to master the techniques of Continuous Delivery Pipeline, then go for this Learning Path.
Packt’s Video Learning Paths are a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.
The highlights of this Learning Path are:
- Learn how to dockerize an application for the continuous delivery process
- Understand the principles and technical aspects of a successful continuous delivery pipeline
- Combine Ansible with Docker and Docker Compose
- Implement server clustering using Docker Swarm
Let’s take a quick look at your learning journey. You will start off with an introduction of continuous delivery. You will then set up a Docker server and configuring Jenkins on it. You will work through the steps to build applications on Docker files and integrate them with Jenkins using continuous delivery processes such as continuous integration and automated acceptance testing. Next, you will be introduced to continuous delivery pipelines in depth and improve the continuous integration and delivery process of app development. Finally, you will build a complete continuous delivery pipeline.
On the completion of this Learning Path, you will be able to implement a mixture of different aspects related to the continuous delivery process in your application.
Meet Your Expert:
We have the best works of the following esteemed author to ensure that your learning journey is smooth:
- Rafal Leszko is a passionate software developer, trainer, and conference speaker living in Krakow, Poland. He has spent his career writing code, designing architecture, and tech leading in a number of companies and organizations such as Google, CERN, and AGH University. Always open to new challenges, he has given talks and conducted workshops at more than a few international conferences such as Devoxx and Voxxed Days.
Fundamentals of Continuous Delivery Pipeline
This video, deals with basics of continuous delivery process
In this video, we describe how to implement Continuous Delivery process.
In this video, we take a holistic look at the whole process and define the Continuous Delivery requirements in three areas.
In this video, we describe the tools that will be used throughout the book and their place in the complete system.
In this video, we will look how to install Docker.
We will run a simple first example.
In this video, we will find the desired application image on the Docker Hub.
This section, we will see how to build Docker images using two different methods.
If we want to run a website, web service, database, or a cache server inside a Docker container, then we need to understand at least the basics of Docker networking.
So far, when we operated on the containers, we always used autogenerated names. This approach has some advantages, such as the names being unique) and automatic. In many cases, however, it's better to give a real userfriendly name for the container or the image.
Even when the containers are not running at the moment, they need to be stored on the Docker host. This can quickly result in exceeding the storage space and stopping the machine.
Jenkins is an open source automation server written in Java. With the very active community-based support and a huge number of plugins, it is the most popular tool to implement the Continuous Integration and Continuous Delivery processes.
This video deals with simple hello world example.
The pipelines are usually more complex and spend time on tasks such as downloading files from the internet, compiling the source code, or running tests
We may want to build our own images to satisfy the specific build environment requirements. In this section, we cover how to do it.
Since Jenkins is highly configurable, you can expect much more possibilities to adjust it to your needs.
A pipeline is a sequence of automated operations that usually represents a part of software delivery and the quality assurance process.
The most basic Continuous Integration process is called a commit pipeline. This classic phase, as its name says, starts with a commit (or push in Git) to the main repository and results in a report about the build success or failure.
We will extend the classic three steps of Continuous Integration with additional steps. The most widely used are code coverage and static analysis. Let's look at each of them.
Docker registry is a storage for Docker images. To be precise, it is a stateless server application that allows the images to be published (pushed) and later retrieved (pulled) when needed.
This video deals with the solutions to the issue of curl command and create tests with a good structure, readable by users, and meet its fundamental goal.
Advanced Continuous Delivery Pipeline
This video gives an overview of the entire course.
This video shows how to use Ansible.
In this section, we will discuss different types of environments, their role in the Continuous Delivery process, and infrastructure security aspects.
After discussing all the aspects of Ansible, environments, nonfunctional testing, and versioning, we are ready to extend the Jenkins pipeline and finalize a simple, but complete, Continuous Delivery pipeline.
In this section, you will be introduced to the concept of server clustering and the Docker Swarm toolkit.
Docker Swarm offers many interesting features that are useful in the Continuous Delivery process. In this section, we will walk you through the most important ones.
Docker Compose provides a method to defin dependencies between containers and enables scaling containers, but everything is done inside one Docker host.
Docker Swarm is not the only system for clustering Docker containers. Even though it's the one available off the shelf, there may be some valid reasons to install a third-party cluster manager. Let's walk through the most popular alternatives.
If we don't want to use the dynamic slave provisioning, then another solution for clustering Jenkins slaves is to use Jenkins Swarm.
In this section, we will explain how to address these challenges so that the Continuous Delivery process will be as safe as possible.
This section presents the next group of patterns, this time related to the release process. They are designed to reduce the risk of updating the production to a new software version.
Legacy systems are, however, way more challenging because they usually depend on manual tests and manual deployment steps. In this section, we will walk through the recommended scenario to incrementally apply Continuous Delivery to a legacy system.