Skip Navigation LinksCI

​​​​Continuous Integration

Course Overview

Purpose: 

Learn how to implement Continuous Integration techniques & practices which achieve better code quality, better maintenance, and speed to delivery.

Type:                                  Course
Level:                                 200
Technology:                       C#, Java
Length:                              4 days
Language(s):                      English

Audience: 

  • Software Developers
  • Project Managers
  • Quality Assurance
  • Product Owners
  • Business Intelligence Professionals

By the end of this course, students will be able to:

  • Explain the value of continuous integration
  • Provide real world examples of continuous integration benefits
  • Learn to Set up/Navigate a CI environment that enables automated testing & automated builds
  • Execute Releases in test environments prior to product delivery
  • Identify the most efficient CI tools for quick release & reliable maintenance of products
  • Integrate Continuous Integration methods & techniques into current workflow for a SCM environment
This 4-day instructor led Workshop will teach the fundamental concepts, practical application, and workflow integration skills necessary for successful CI implementation. Students will learn through hands on labs, class demos, class participation exercises, frequent quizzes, video tutorials, and traditional power point presentations. This is an interactive class, and individuals will be expected to participate fully in all exercises to retain maximum benefit of the course.

Module 1: What is Continuous Integration?

This Module covers the fundamentals of Continuous Integration, a software development methodology that focusses on consistent code testing. For any team that is implementing an Agile programming approach to software development, Continuous Integration (CI) will be an integral part of the process.

Continuous Integration Overview

  • Where does Continuous Integration fit into the DevOps Landscape
  • How Test Driven Development relates to CI
  • Automated Builds and Tests

The difference between Integration, Deployment, and Delivery

  • Continuous integration
  • Continuous deployment
  • Continuous delivery

​Continuous Integration Flow

  • Checking for updates
  • Extracting Code
  • Integrating updates into a test environment
  • Reviewing test results
  • Integrating updates into the Build 

Demo

  • Make a Change in CI environment
  • Check in update
  • View Code Analysis Report
  • View Test Results
  • Verify Build 

Module 2: Advantages of Continuous Integration

This Module covers the results that CI delivers, and how they translate into more efficient workflows, higher deliverability, and less overall cost. Benefits associated with CI will be exemplified including:

Reaping the benefits of Continuous Integration

  • Reduce implementation effort
  • Increase speed of resolution
  • Improve quality & maintenance of each product release
  • Increase speed of delivery 

Communicating Analytics with Clients & Managers

  • High Transparency
  • Running Tests in the real world
  • Updating code with changing requirements

Class Quiz

  • Fundamentals of Continuous Integration
  • Execution of Continuous Integration
  • Testing Results of Continuous Integration

Companies utilize CI techniques successfully 

Class discussion regarding real world companies which have successfully integrated Continuous Integration into their common practice.  Review of released content thaqt their deployment workflows. 

Case Studies for Continuous Integration

Class Discussion

  • How did each company in these reports utilize Continuous Integration?
  • How was CI most likely implemented in each example?
  • How would you apply CI to your own production environment?

Module 3: Implementing a CI Environment

In this Module, we will take a deep dive into the analyzation, best practices, and setup of a CI environment.

Creating & Managing a Source Code Repository

  • Distributed code Repositories
  • Choosing the right tools: Repository Tools Review
  • Separating requirements & dependencies
  • To use branches or not to use branches? 

Configure Automated Deployment

  • Configuring the DHPC server
  • Source Commit Check
  • Starting with simple Deployment scripts
  • Real time bug alerts

Creating Automated Tests

  • Unit Testing
  • User Interface Testing
  • API Testing
  • Regression Testing
  • Load Testing
  • Security Testing 

Lab

  • Create a Source Code Repository
  • Build an Automated Test
  • Check new code into Repository
  • Run a unit Test on New Code

Module 4: Database Versioning

​This module will detail a rarely discussed topic source control and versioning of the Database Schema, Scripts, Projects and Data.

​Database Versioning Overview

  • Best Practices for database versioning
  • Database Schema & scripts
  • Database versioning tools
  • Multiple database instances for each developer
  • Benefits of Database Versioning 

Database Versioning Process

  • Check out object to be modified
  • Apply modifications in database test environment
  • Run tests to verify changes have not broken the build
  • Check in object for final authentication 

Database Versioning Approaches

  • Task Based Development
  • Compare & Sync
  • Database version checks
  • Upgrade scripts & Parallel Development

Lab

  • Modify an object in test environment
  • Check in modifications to repository
  • Run Unit test to check against changes
  • Run final test for deployment

Module 5: Maintaining a CI Environment

Module 6 investigates CI methods & techniques which ensure problems & bugs are detected early, and speed to deployment is consistent.

Implementing the Build, Deploy, Test, and Release Process

  • Software Configuration
  • Automatic Launch
  • Test Report Generation
  • Submit to Testers 

Product Maintainability & Monitoring

  • Reliability, Availability, Maintainability: Why you need all three
  • Criteria for "pass" requirements
  • Scope & Scalability
  • Consistent updating of Software functionality
  • Analytics & Reporting

Module 6: Agile tools for Continuous Integration

Before selecting a CI/CD solution, it is crucial for developers & project managers to choose the correct path for each particular application.  In this module we will review open source tools, and delve into the pros & cons that they bring to the table.

Setting up the CI server

  • CI environment, standard workflows, & core tech architecture
  • Software Configuration Management (SCM)
  • Setting up Jenkins as a CI server
  • Open source CI tools
  • Build automation tools for CI
  • Recommended learning resources

Lab

  • Set up the Jenkins build server
  • Run a shell script
  • Archive the build result
  • Run integration tests
  • Run report on test results