SlideShare a Scribd company logo
Continuous Integration &
Delivery Example
1
https://oncoscape.sttrcancer.org
Robert McDermott
rmcdermo@fredhutch.org
Center IT
“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
“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
Continuous Deployment is a third term that’s sometimes confused with Continuous
Delivery. Where Continuous Delivery provides a process to create frequent releases
but not necessarily deploy them, Continuous Deployment means that every change
you make automatically gets deployed through the deployment pipeline.
Continuous Integration, Delivery and Deployment
2
Oncoscape
 Project Overview: Oncoscape is a web application that hosts an integrated suite
of analysis tools for users to explore hypotheses related to molecular and clinical
data in order to better understand cancer biology and treatment options
o Technology stack: JavaScript, R, Angular.js, Node.js, Docker, AWS
o Team: 4 internal developers, 1 part time IT engineer and external developers
 Source Code Management
o GitHub: https://github.com/FredHutch/Oncoscape
o Public repository for external collaboration
 Development Workflow
o Two long running branches “master” and “develop” with a transient number of
feature branches
o Using “GitHub Flow”
o Internal workflow:
 Create a feature branch off of the develop branch
 Commit changes to the feature branch
 Create a “pull request” (PR) targeting the development branch
 Merge PR after it passes CI tests and team review
 Delete feature branch after integration is complete 3
Oncoscape Continuous Integration and Delivery
 Development Workflow (continued)
o External workflow:
 Create a fork of the Oncoscape repository
 Create a feature branch
 Commit changes to the feature branch
 Create a “pull request” (PR ) targeting the development branch
 Merge PR after it passes CI tests and team review
 Delete feature branch after integration is complete
 Continuous Integration
o Using CircleCI: https://circleci.com/
o CircleCI integrated with GitHub via Webhooks
o Any commits, merges or pull requests trigger the CI pipeline
o Oncoscape is automatically built, run and tested on CircleCI
o Merges to Master and Develop branches create and register deployable containers
o Passing CI tests on Master and Develop branches trigger deployment
4
Oncoscape Continuous Integration and Delivery
 Continuous Deployment
o Circle CI triggers deployment services defined in Docker Cloud service
o Docker Cloud service pulls new container image from registry and deploys it to AWS
o The deployment is sequential so only one application server is updated at a time
 Event Notification
o Slack pushes notifications to smart phones
o STTR team notified of every CI event (pass or fail)
o Notifications of service redeployments
o Notifications of service health / recovery status
5
Oncoscape Integration and Deployment Workflow
 All work (commits) happens on feature branches off of the “develop” branch
 Every pushed commit is tested via the CI system
 Feature branches are merged to the “develop” branch via PR workflow
 The “develop” branch is merged to “master” branch via PR workflow
6
CI and SCM Integration
 Pull request status while CI testing is in progress:
 Pull request status after CI testing is complete; ready to merge without fear
7
Oncoscape Integration and Delivery Pipeline
 Fully Automated
 Commits/merges to any branch trigger build and testing
 Commits/merges to Develop or Master branches trigger deployment
8
Oncoscape Integration and Delivery Pipeline
 Fully Automated
 Commits/merges to any branch trigger build and testing
 Commits/merges to Develop or Master branches trigger deployment
9
Oncoscape Integration and Delivery Pipeline
Source Code Management
 Git
 GitHub
10
Oncoscape Integration and Delivery Pipeline
CI Tool
 CircleCI: https://circleci.com/
 Triggered via GitHub webhooks
 Clones repository
 Builds app inside a container
 Runs container
 Connects to Oncoscape application
 Tests Oncoscape application
 Notifies team via Slack of the results
PASS? Master or Develop?
 Push container image to registry
 Trigger deployment
 Notify team via Slack of the status
11
Oncoscape Integration and Delivery Pipeline
Image Registry
 Docker Hub: https://hub.docker.com/
 CircleCI pushes working images to registry
 Images publically available at:
https://hub.docker.com/r/fredhutch/oncoscape/
12
Oncoscape Integration and Delivery Pipeline
Deployment Service
 Docker Cloud: https://cloud.docker.com
 CircleCI triggers deployment via webhook
 Master image deployed to prod env
 Develop image deployed to dev env
 Sequential deployment
 Monitors containers
 Automatically restarts containers if they fail
 Reports events to team via Slack
Docker
Cloud
13
Oncoscape Integration and Delivery Pipeline
Server Environments
 Prod and Dev environments are identical
 Amazon AWS region located in Oregon
 2 Servers per environment; scale out
 Load balancers for load balancing and HA
 Servers running Ubuntu Linux 14.04
 Containers running under Docker Engine
 Containers monitored, deployed, re-
deployed, recovered by Docker Cloud service
14
Oncoscape Integration and Delivery Pipeline
Event Reporting
 Slack: https://slack.com/
 Status/results of CI runs
 Status/results of deployments
 Container health/recovery events
15
CI Build, Test and Deployment Metrics
16
Live Demo
17
 Single environment
 Single branch
 Continuous deployment
1 2
5
3 7
4
8
6Git GitHub
CircleCI
Slack
Docker Hub
Docker Cloud
Amazon AWS
Continuous Integration Tool Options
Solution Site SCM Support
Travis CI https://travis-ci.org GitHub
Circle CI https://circleci.com GitHub
CodeShip https://codeship.com GitHub, Bitbucket
Drone.io https://drone.io GitHub, Bitbucket
Shippable https://app.shippable.com GitHub, Bitbucket
Appveyor http://www.appveyor.com GitHub, Bitbucket, VSTS (visual studio online)
Distelli https://www.distelli.com GitHub, Bitbucket
Jenkins https://jenkins.io/ SVN, GitHub, Bitbucket, CVS, Perforce, TFS, …
Jenkins
18
CI & CD Principles
 Automate everything: build, test and deployment
 Keep everything in a source code management system (use GitHub)
 Keep absolutely everything in a source code management system
 Use a CI tool that integrates tightly (webhooks) with your source code repository
 Commit your code to the repository frequently
 Don’t commit directly to a delivery branch; use a feature branch and PR workflow
 Don’t ignore failing CI tests even on feature branches
 Don’t merge broken code to a delivery branch; it must pass the CI system first
 Deploy the same way to every environment
 No-downtime deployments; stateless frontend, load balancer and sequential
deployment
 Automated feedback on the entire process
 Use a container technology (Docker) if possible as makes deployment simple
 If the process is painful, you’re doing it wrong
19
20
Thank You!
To learn more about Oncoscape:
 Home page: http://www.sttrcancer.org/en/biotools/oncoscape.html
 Code repository: https://github.com/FredHutch/Oncoscape
 Application: https://oncoscape.sttrcancer.org

More Related Content

What's hot

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Hawkman Academy
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and TellE. Camden Fisher
 
About DevOps in simple steps
About DevOps in simple stepsAbout DevOps in simple steps
About DevOps in simple steps
Ihor Odynets
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
Edureka!
 
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Simplilearn
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
Alexander Meijers
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
Shalu Ahuja
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
Hazzim Anaya
 
DevOps
DevOps DevOps
DevOps
Hakan Yüksel
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
Md. Minhazul Haque
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
Simplilearn
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
Azure Riyadh User Group
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
Knoldus Inc.
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
Knoldus Inc.
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
CodeOps Technologies LLP
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
Kumar Shìvam
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Troublemaker Khunpech
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
Oleksii Holub
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
Red Gate Software
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation Slides
SlideTeam
 

What's hot (20)

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
About DevOps in simple steps
About DevOps in simple stepsAbout DevOps in simple steps
About DevOps in simple steps
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
DevOps
DevOps DevOps
DevOps
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
 
An Introduction To Jenkins
An Introduction To JenkinsAn Introduction To Jenkins
An Introduction To Jenkins
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
DevOps - A Gentle Introduction
DevOps - A Gentle IntroductionDevOps - A Gentle Introduction
DevOps - A Gentle Introduction
 
CICD Pipeline Using Github Actions
CICD Pipeline Using Github ActionsCICD Pipeline Using Github Actions
CICD Pipeline Using Github Actions
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
GitHub Actions in action
GitHub Actions in actionGitHub Actions in action
GitHub Actions in action
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
 
DevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation SlidesDevOps Powerpoint Presentation Slides
DevOps Powerpoint Presentation Slides
 

Similar to Anatomy of a Continuous Integration and Delivery (CICD) Pipeline

Azure DevOps in Action
Azure DevOps in ActionAzure DevOps in Action
Azure DevOps in Action
Callon Campbell
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
Ifunga Ndana
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
eleksdev
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
Amazon Web Services
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
Jasmine Conseil
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
André Agostinho
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
VMware Tanzu
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
Sunil Dalal
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS Azure
Ratan Das
 
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
Vulk Coop
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
Ambassador Labs
 
CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018
Krishna-Kumar
 
CI and CD with Spinnaker
CI and CD with SpinnakerCI and CD with Spinnaker
CI and CD with Spinnaker
VMware Tanzu
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
Marco Ferrigno
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps Paradigm
NaLUG
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
Oracle Korea
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
DonghuKIM2
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
Grace Jansen
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
Jasmine Conseil
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
Callon Campbell
 

Similar to Anatomy of a Continuous Integration and Delivery (CICD) Pipeline (20)

Azure DevOps in Action
Azure DevOps in ActionAzure DevOps in Action
Azure DevOps in Action
 
DevOps & DevEx
DevOps & DevExDevOps & DevEx
DevOps & DevEx
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
DevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver FasterDevOps on AWS - Building Systems to Deliver Faster
DevOps on AWS - Building Systems to Deliver Faster
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
 
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with ConcourseContinuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
Continuous Delivery: Fly the Friendly CI in Pivotal Cloud Foundry with Concourse
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS Azure
 
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
CNCF: Cross-cloud CI v1.0.0 Dashboard Release 2018-01-26
 
DevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for KubernetesDevOps Days Boston 2017: Developer first workflows for Kubernetes
DevOps Days Boston 2017: Developer first workflows for Kubernetes
 
CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018
 
CI and CD with Spinnaker
CI and CD with SpinnakerCI and CD with Spinnaker
CI and CD with Spinnaker
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps Paradigm
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptx
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
 

Recently uploaded

Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
abh.arya
 
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdfCOLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
Kamal Acharya
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
TeeVichai
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
Robbie Edward Sayers
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
Amil Baba Dawood bangali
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
ViniHema
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
TECHNICAL TRAINING MANUAL GENERAL FAMILIARIZATION COURSE
TECHNICAL TRAINING MANUAL   GENERAL FAMILIARIZATION COURSETECHNICAL TRAINING MANUAL   GENERAL FAMILIARIZATION COURSE
TECHNICAL TRAINING MANUAL GENERAL FAMILIARIZATION COURSE
DuvanRamosGarzon1
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
Jayaprasanna4
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
Kamal Acharya
 

Recently uploaded (20)

Democratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek AryaDemocratizing Fuzzing at Scale by Abhishek Arya
Democratizing Fuzzing at Scale by Abhishek Arya
 
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdfCOLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
COLLEGE BUS MANAGEMENT SYSTEM PROJECT REPORT.pdf
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Railway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdfRailway Signalling Principles Edition 3.pdf
Railway Signalling Principles Edition 3.pdf
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
NO1 Uk best vashikaran specialist in delhi vashikaran baba near me online vas...
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
TECHNICAL TRAINING MANUAL GENERAL FAMILIARIZATION COURSE
TECHNICAL TRAINING MANUAL   GENERAL FAMILIARIZATION COURSETECHNICAL TRAINING MANUAL   GENERAL FAMILIARIZATION COURSE
TECHNICAL TRAINING MANUAL GENERAL FAMILIARIZATION COURSE
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
 
Event Management System Vb Net Project Report.pdf
Event Management System Vb Net  Project Report.pdfEvent Management System Vb Net  Project Report.pdf
Event Management System Vb Net Project Report.pdf
 

Anatomy of a Continuous Integration and Delivery (CICD) Pipeline

  • 1. Continuous Integration & Delivery Example 1 https://oncoscape.sttrcancer.org Robert McDermott rmcdermo@fredhutch.org Center IT
  • 2. “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 “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 Continuous Deployment is a third term that’s sometimes confused with Continuous Delivery. Where Continuous Delivery provides a process to create frequent releases but not necessarily deploy them, Continuous Deployment means that every change you make automatically gets deployed through the deployment pipeline. Continuous Integration, Delivery and Deployment 2
  • 3. Oncoscape  Project Overview: Oncoscape is a web application that hosts an integrated suite of analysis tools for users to explore hypotheses related to molecular and clinical data in order to better understand cancer biology and treatment options o Technology stack: JavaScript, R, Angular.js, Node.js, Docker, AWS o Team: 4 internal developers, 1 part time IT engineer and external developers  Source Code Management o GitHub: https://github.com/FredHutch/Oncoscape o Public repository for external collaboration  Development Workflow o Two long running branches “master” and “develop” with a transient number of feature branches o Using “GitHub Flow” o Internal workflow:  Create a feature branch off of the develop branch  Commit changes to the feature branch  Create a “pull request” (PR) targeting the development branch  Merge PR after it passes CI tests and team review  Delete feature branch after integration is complete 3
  • 4. Oncoscape Continuous Integration and Delivery  Development Workflow (continued) o External workflow:  Create a fork of the Oncoscape repository  Create a feature branch  Commit changes to the feature branch  Create a “pull request” (PR ) targeting the development branch  Merge PR after it passes CI tests and team review  Delete feature branch after integration is complete  Continuous Integration o Using CircleCI: https://circleci.com/ o CircleCI integrated with GitHub via Webhooks o Any commits, merges or pull requests trigger the CI pipeline o Oncoscape is automatically built, run and tested on CircleCI o Merges to Master and Develop branches create and register deployable containers o Passing CI tests on Master and Develop branches trigger deployment 4
  • 5. Oncoscape Continuous Integration and Delivery  Continuous Deployment o Circle CI triggers deployment services defined in Docker Cloud service o Docker Cloud service pulls new container image from registry and deploys it to AWS o The deployment is sequential so only one application server is updated at a time  Event Notification o Slack pushes notifications to smart phones o STTR team notified of every CI event (pass or fail) o Notifications of service redeployments o Notifications of service health / recovery status 5
  • 6. Oncoscape Integration and Deployment Workflow  All work (commits) happens on feature branches off of the “develop” branch  Every pushed commit is tested via the CI system  Feature branches are merged to the “develop” branch via PR workflow  The “develop” branch is merged to “master” branch via PR workflow 6
  • 7. CI and SCM Integration  Pull request status while CI testing is in progress:  Pull request status after CI testing is complete; ready to merge without fear 7
  • 8. Oncoscape Integration and Delivery Pipeline  Fully Automated  Commits/merges to any branch trigger build and testing  Commits/merges to Develop or Master branches trigger deployment 8
  • 9. Oncoscape Integration and Delivery Pipeline  Fully Automated  Commits/merges to any branch trigger build and testing  Commits/merges to Develop or Master branches trigger deployment 9
  • 10. Oncoscape Integration and Delivery Pipeline Source Code Management  Git  GitHub 10
  • 11. Oncoscape Integration and Delivery Pipeline CI Tool  CircleCI: https://circleci.com/  Triggered via GitHub webhooks  Clones repository  Builds app inside a container  Runs container  Connects to Oncoscape application  Tests Oncoscape application  Notifies team via Slack of the results PASS? Master or Develop?  Push container image to registry  Trigger deployment  Notify team via Slack of the status 11
  • 12. Oncoscape Integration and Delivery Pipeline Image Registry  Docker Hub: https://hub.docker.com/  CircleCI pushes working images to registry  Images publically available at: https://hub.docker.com/r/fredhutch/oncoscape/ 12
  • 13. Oncoscape Integration and Delivery Pipeline Deployment Service  Docker Cloud: https://cloud.docker.com  CircleCI triggers deployment via webhook  Master image deployed to prod env  Develop image deployed to dev env  Sequential deployment  Monitors containers  Automatically restarts containers if they fail  Reports events to team via Slack Docker Cloud 13
  • 14. Oncoscape Integration and Delivery Pipeline Server Environments  Prod and Dev environments are identical  Amazon AWS region located in Oregon  2 Servers per environment; scale out  Load balancers for load balancing and HA  Servers running Ubuntu Linux 14.04  Containers running under Docker Engine  Containers monitored, deployed, re- deployed, recovered by Docker Cloud service 14
  • 15. Oncoscape Integration and Delivery Pipeline Event Reporting  Slack: https://slack.com/  Status/results of CI runs  Status/results of deployments  Container health/recovery events 15
  • 16. CI Build, Test and Deployment Metrics 16
  • 17. Live Demo 17  Single environment  Single branch  Continuous deployment 1 2 5 3 7 4 8 6Git GitHub CircleCI Slack Docker Hub Docker Cloud Amazon AWS
  • 18. Continuous Integration Tool Options Solution Site SCM Support Travis CI https://travis-ci.org GitHub Circle CI https://circleci.com GitHub CodeShip https://codeship.com GitHub, Bitbucket Drone.io https://drone.io GitHub, Bitbucket Shippable https://app.shippable.com GitHub, Bitbucket Appveyor http://www.appveyor.com GitHub, Bitbucket, VSTS (visual studio online) Distelli https://www.distelli.com GitHub, Bitbucket Jenkins https://jenkins.io/ SVN, GitHub, Bitbucket, CVS, Perforce, TFS, … Jenkins 18
  • 19. CI & CD Principles  Automate everything: build, test and deployment  Keep everything in a source code management system (use GitHub)  Keep absolutely everything in a source code management system  Use a CI tool that integrates tightly (webhooks) with your source code repository  Commit your code to the repository frequently  Don’t commit directly to a delivery branch; use a feature branch and PR workflow  Don’t ignore failing CI tests even on feature branches  Don’t merge broken code to a delivery branch; it must pass the CI system first  Deploy the same way to every environment  No-downtime deployments; stateless frontend, load balancer and sequential deployment  Automated feedback on the entire process  Use a container technology (Docker) if possible as makes deployment simple  If the process is painful, you’re doing it wrong 19
  • 20. 20 Thank You! To learn more about Oncoscape:  Home page: http://www.sttrcancer.org/en/biotools/oncoscape.html  Code repository: https://github.com/FredHutch/Oncoscape  Application: https://oncoscape.sttrcancer.org