Agenda
● Framework Overview
● Continuous Integration
● Continuous Delivery
● Continuous Deployment
● Feedback Loops
● Demo
John Ray
Practice Manager, DevOps
Derrick Sutherland
Senior Consultant
Slide 3
Slide 3 text
A brief history...
1948
Toyota engineers begin the
development of the Toyota
Production System (TPS)
2001
The Agile manifesto is
released.
1913
Henry Ford wants to sell more
cars.
1981
Waterfall becomes the
dominant software
development practice.
2009
10 Deploys a Day and DevOps
2010
Continuous Delivery
Slide 4
Slide 4 text
framework
/ˈfrāmˌwərk’/
noun
● a basic structure underlying a system, concept, or
text.
"the theoretical framework of CI/CD"
Slide 5
Slide 5 text
What’s in a Framework?
Sociotechnical systems (STS) in organizational development
is an approach to complex organizational work design that
recognizes the interaction between people and technology
in workplaces.
● coined by Eric Trist, Ken Bamforth and Fred Emery during
World War II
Slide 6
Slide 6 text
What’s in a Framework?
Toyota embodied this approach by way of
Jidoka – meaning
"Automation with a human touch"
Slide 7
Slide 7 text
Why?
Lower Cost
Reduce Risk
Respond to your clients and the market quickly
Framework Principles
Reduce Waste
● Human Touches
● Alerts that aren’t useful
Feedback
● Continuous Improvement
● Feedback at all stages
Use the right tools
● Evangelize
● Train
Adhere to process
● Fix problems from the start
● Discipline = Freedom
Continuous Integration
The practice of frequently integrating one's new or changed code with the
existing code repository
The main aim of CI is to prevent integration problems, referred to as
"integration hell"
“Continuous Integration is a software development practice where
members of a team integrate their work frequently, usually each person
integrates at least daily - leading to multiple integrations per day.” -
Martin Fowler
Slide 12
Slide 12 text
Principles for CI
● Maintain a code repository
● Everyone commits to feature branch daily
● All builds must include unit testing
● Orchestration system will trigger builds on every commit
● Feature branches must be continually merged with
baseline
Getting Started
● Setup a code repository
ex.
● Setup a continuous integration orchestration system
ex.
● Setup webhook publishing
● Install build and testing frameworks on CI system
ex.
● Build an orchestration pipeline
● Ensure code merges with baseline on build
Slide 15
Slide 15 text
Continuous Integration
Slide 16
Slide 16 text
Continuous Delivery
Includes all the practices of Continuous Integration and takes it a step
further to include acceptance testing and artifact release.
Ensures products are always reliably releasable
“Continuous Delivery is a software development discipline where you
build software in such a way that the software can be released to
production at any time.” - Martin Fowler
Slide 17
Slide 17 text
Principles for Continuous Delivery
● Deliver to staging environment
● Maintain valid acceptance and user tests
● Release new artifact with every commit
Slide 18
Slide 18 text
Tools for Continuous Delivery
Same as Continuous Integration
Additionally…
● Artifact Repositories (Nexus, Artifactory)
Slide 19
Slide 19 text
Getting Started
● Build a Continuous Integration Pipeline
● Install automation deployment tools on CI system
ex.
● Install integration & acceptance testing tools on CI system
ex.
● Expand pipeline to include staging, further testing and artifact release
Slide 20
Slide 20 text
Continuous Delivery
Slide 21
Slide 21 text
Continuous Deployment
Includes all the practices of Continuous Delivery and takes it a step
further to include deploying into production automatically
“Continuous Deployment means that every change is deployed
through an automated pipeline.”
Slide 22
Slide 22 text
Principles for Continuous Deployment
● Maintain visibility across pipeline
● Automatically provide feedback to team
● Ensure approval before pushing to new environments
● Continually deploy releasable code to production
systems
Slide 23
Slide 23 text
Tools for Continuous Deployment
Same as Continuous Delivery
Additionally…
● Automation (Ansible, Terraform, etc)
● Chatops (Rocketchat, Slack, Hipchat, etc)
Slide 24
Slide 24 text
Feedback Loop
Slide 25
Slide 25 text
Principles for Feedback Loops
Alerts must be:
● Useful
● Informative
● Actionable
● Visible
Slide 26
Slide 26 text
Getting Started with CI/CD/CD
● Select the “right” tools
● Build your process iteratively
● Adhere to the process
● Feedback from all stakeholders
● Practice continuous improvement
Slide 27
Slide 27 text
Continuous Deployment
Slide 28
Slide 28 text
Developers
Demo Architecture
Pre-Prod (Resource
Group)
Prod (Resource
Group)
#General channel
Master
Feature
Feature
dsutherland1492/jenkinsframeworkapp
Pull
Build
Unit Test
Preprod Deploy
Preprod Test
Prod Deploy
Prod Test
Merge
Create-instance
Config Instance
Deploy Code
Integration Test
Merge
Acceptance Test
Slide 29
Slide 29 text
Pipeline
git clone 1. build (mvn)
2. unit test
(junit)
3. Notify
Success
(Rocketchat)
1. Wait for
input
2. Deploy
with
Ansible to
Azure
PreProd
1. Test with
Inspec
2. Notify
Success
(Rocketchat)
1. Wait for
input
2. Deploy
with
Ansible to
Azure Prod
1. Test with
Inspec
2. Notify
Success
(Rocketchat)
Slide 30
Slide 30 text
Demo
Slide 31
Slide 31 text
CI/CD Framework Review
1. Shadow-Soft will review your existing framework,
architecture, and tooling
2. You’ll receive recommendations on how to
improve processes and governance
3. Learn how other clients are using Ansible and
Jenkins for automation
Schedule a time with a consultant
[email protected]