Continuous Delivery Jump Start Training

Originally published at: https://gradle.org/training/continuous-delivery-jump-start-training-2/
The Continuous Delivery Jump Start training course is a one day, hands-on, instructor lead training course designed for all audiences that want to learn more about Continuous Delivery. Continuous Delivery (CD) is a design practice used in software development to automate and improve the process of software delivery. Techniques such as automated testing, continuous integration, and continuous deployment allow software to be developed to a high standard and easily packaged and deployed to test environments, resulting in the ability to rapidly, reliably and repeatedly push out enhancements and bug fixes to customers at low risk and with minimal manual overhead. In this training course we use open source tools, Gradle and Jenkins to build the examples and hands-on labs.

Getting software from a developer’s machine to a production environment without a fully automated process is time-consuming and error-prone. Continuous Delivery enables building, testing, and deploying of software through build pipelines with well-defined quality gates. In this one-day hands-on training class, we will discuss how to build an exemplary pipeline with the help of Gradle and Jenkins.

Duration

One day (If delivered virtually: two sessions of 3.5 Hours + 30 minutes Q&A)

Objectives

Upon completion of this course you will get/learn…
  • Principles and practices of Continuous Delivery
  • A brief introduction into necessary tools like Git and Jenkins
  • A brief overview to Gradle, its core concepts and how to execute a build from the command line
  • Developing automated tests, incorporating popular OSS code quality tools as well as packaging, publishing and deploying the deliverable with Gradle
  • Introduction to relevant Jenkins plugins and modeling a build pipeline jobs in Jenkins

Audience

Either you are completely new to the concept of Continuous Delivery or you are doing it now but are not sure if you are following the best practices, this course is designed for a wide range of audiences. This course is designed for developers, architects, technical managers, and team leads looking to understand the benefits of Continuous Delivery and how it can be implemented in your organization with Gradle and Jenkins.

Prerequisites

Prior exposure to project automation concepts and Continuous Integration is helpful but not required. Basic knowledge of Gradle core concepts are required.

Course Outline

The proposed one day training course is divided into six segments, each providing time for some Q&A plus a short break before continuing into the next segment. The last two segments are very demo and lab driven.

Segment #1: Continuous Delivery fundamentals

  • Why is releasing painful?
  • What is Continuous Delivery?
  • Principles
  • Benefits
  • Organizational prerequisites
  • Technical prerequisites
  • Automated testing at all levels
  • Recap: Continuous Integration
  • Continuous evolution
  • Perfect world

Segment #2: Deployment pipelines

  • What is a deployment pipeline?
  • Quality gates
  • Stages of a deployment pipeline
    • Commit stage
    • Acceptance stage
    • Manual phase

Segment #3: Case study application

  • Functionality
  • Architecture overview
  • Software components
  • Technical implementation
  • Lab: “Showcasing the application’s functionality”

Segment #4: Tooling options

  • Why these tools?
  • Git primer
    • What is Git?
    • Definitions
    • Basic commands
  • Jenkins primer
    • What is Jenkins?
    • Definitions
    • Creating a new job
    • Installing plugins
    • Lab: “Building case study application with Jenkins”

Segment #5: Building Java projects with Gradle

  • Compiling code
  • Lab: “Compiling code”
  • Running and configuring unit tests
  • Lab: “Executing unit tests”
  • Partitioning tests types with SourceSets
  • Lab: “Modeling and exercising integration tests”
  • Integrating code quality tools
  • Lab: “Generating code quality metrics with FindBugs”
  • Generating code coverage
  • Lab: “Generating code coverage metrics with JaCoCo”
  • Assembling the deliverable artifact
  • Lab: “Building and configuring a WAR archive”
  • Implementing a versioning strategy
  • Lab: “Coding a custom project version”
  • Publishing to a Maven repository
  • Lab: “Publishing the deliverable artifact”
  • Writing custom deployment code
  • Environment-specific logic
  • Lab: “Deploying the application to a target environment”

Segment #6: Build pipeline with Jenkins

  • The bigger picture
  • Relevant Jenkins plugins
  • Modeling the pipeline
  • Automated vs. manual job execution
  • Lab: “Creating and executing the pipeline”

Video: Building a Continuous Delivery Pipeline with Gradle and Jenkins

Want to get a feel for what will be covered in the Continuous Delivery training course? Check out the video below by Ben Muschko, the author of the training course.