O'Reilly logo
live online training icon Live Online training

The DevOps Toolkit

Continuously delivering software at scale

Viktor Farcic

The combination of Docker and Jenkins improves your continuous deployment pipeline using fewer resources. It also helps you scale up your builds, automate tasks, provide high availability, and speed up Jenkins performance with the benefits of Docker containerization.

The goal of the training course is to design a fully automated continuous deployment (CDP) pipeline. We’ll see how Microservices fit into CDP and immutable containers concepts and why the best results are obtained when those three are combined into one unique framework. We’ll explore tools like Docker, container schedulers, Docker Compose, Jenkins, and quite a few others. The end result will be a fully operational continuous deployment pipeline that will deploy a new release to production with every commit.

This live hands-on training course will walk you through setting up a Docker cluster and deploying Jenkins master and agent services. This course will then provide steps to run unit tests and build applications as Docker images. Once we understand the process through Docker commands we'll automate it through Jenkins pipeline. Further on, we'll explore how we can extend the pipeline with functional and other types of automated tests that will give us confidence that the application under test passed all the quality requirements. Moving on you will learn how to deploy new releases to production without downtime and run post-production deployment tests. We'll extend Jenkins pipeline to include all the steps thus creating a fully functional continuous deployment process.

Moving on, we'll explore how to optimize the continuous deployment pipeline. You'll learn how to use shared libraries for the common code used across different pipelines and how to store those pipelines in a version control repository (e.g., GitHub) and allow teams in charge of applications to take control of their continuous deployment processes while still leveraging commonly used snippets.

What you'll learn-and how you can apply it

By the end of this live, online course, you'll understand:

  • How to improve your processes by creating a fully automated continuous deployment pipeline using Docker, schedulers, and Jenkins
  • You will be able to explore the lethal combination of Docker and Jenkins in order to enhance the DevOps workflow

And you'll be able to:

  • Create a cluster?
  • Deploy Jenkins master as a service and scale it using Docker-based agents?
  • Understand the principles and the technical aspects of a successful Continuous Delivery pipeline?
  • Create a complete Continuous Delivery process using modern tools like Docker and Jenkins?
  • Build and deploy applications with Jenkins using Docker Swarm cluster?
  • Publish a built Docker image to a Docker Registry and deploy cycles of Jenkins pipelines using community best practices?

This training course is for you because...

  • You're a DevOps Engineer
  • You're a Developer
  • You're in IT Operations
  • You've been struggling to find the time to gain proficiency and confidence with Docker containers, Continuous Delivery and everyday DevOps tasks

Prerequisites

Course Materials:

http://vfarcic.github.io/jenkins-docker/workshop.html#/cover

Learning Docker, Second Edition (book)

Docker Cookbook (book)

Learning Continuous Integration with Jenkins, Second Edition (book)

Jenkins Continuous Integration Cookbook, Second Edition (book)

Materials, downloads, or Supplemental Content needed in advance:

About your instructor

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

DAY 1 (4 hours)

Section 1: DOCKER FOR AWS (1 hour)

  • Create a fully operational production-ready Docker cluster using CloudFormation templates.
  • Deploy a few services to the cluster that will visualize it and forward requests to destination services.
  • Explore basic commands used to operate a Docker cluster.

Section 2: JENKINS MASTER SERVICE (1 hour)

  • Deploy Jenkins master as a service.
  • Explore high-availability, fault tolerance, and secrets management.
  • Modify the service so that Jenkins setup is fully automated.
  • Modify the service so that the state is preserved across failures.

Break Time 10mins

Section 3: JENKINS AGENTS AS A SERVICE (30 min)

  • Deploy Jenkins agents as services.
  • Explore scaling

Section 4 : DOCKER IMAGES (1 hour 30 min)

  • Explore different ways to run unit tests and build binaries using containers
  • Create a single command Docker build process that will execute the whole CI process.
  • Store a new image in Docker Hub.

DAY 2 (4hours 30 min)

Section 5: FUNCTIONAL TESTING (1 hour)

  • Explore different ways to run functional tests using Docker containers.

Section 6: DEPLOYING TO PRODUCTION (1 hour)

  • Explore all the steps required to deploy a service to a production cluster.
  • Explore roll-back and roll-forward strategies.
  • Translate all the previous steps in a Jenkins pipeline in an attempt to create a fully automated continuous deployment process

Break Time 10mins

Section 7: REUSING CODE (1 hour)

  • Explore ways to reuse code across multiple pipelines and thus apply DRY principles.

Section 7: PIPELINE IN A VERSION CONTROL SYSTEM (VCS) (1 hour)

  • Explore Jenkinsfile as a way to decentralize Jenkins job by putting them in Git.

Wrap-up: Summary, Discussions (30 min)

  • Interactive Discussion
  • Final Q&A