SlideShare a Scribd company logo
1 of 20
Download to read offline
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 | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | EdurekaEdureka!
 
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
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOpsRed Gate Software
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...Edureka!
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...Sonatype
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICDKnoldus Inc.
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+OpsShalu Ahuja
 
DevOps overview 2019-04-13 Nelkinda April Meetup
DevOps overview  2019-04-13 Nelkinda April MeetupDevOps overview  2019-04-13 Nelkinda April Meetup
DevOps overview 2019-04-13 Nelkinda April MeetupShweta Sadawarte
 
Azure DevOps Presentation
Azure DevOps PresentationAzure DevOps Presentation
Azure DevOps PresentationInCycleSoftware
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersAmazon Web Services
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaEdureka!
 

What's hot (20)

Introduction to DevOps | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | Edureka
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
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...
 
DevOps 101 - an Introduction to DevOps
DevOps 101  - an Introduction to DevOpsDevOps 101  - an Introduction to DevOps
DevOps 101 - an Introduction to DevOps
 
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
 
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
DevOps and Continuous Delivery Reference Architectures (including Nexus and o...
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Introduction to CICD
Introduction to CICDIntroduction to CICD
Introduction to CICD
 
Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Devops architecture
Devops architectureDevops architecture
Devops architecture
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
Jenkins with SonarQube
Jenkins with SonarQubeJenkins with SonarQube
Jenkins with SonarQube
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
DevOps overview 2019-04-13 Nelkinda April Meetup
DevOps overview  2019-04-13 Nelkinda April MeetupDevOps overview  2019-04-13 Nelkinda April Meetup
DevOps overview 2019-04-13 Nelkinda April Meetup
 
Azure DevOps Presentation
Azure DevOps PresentationAzure DevOps Presentation
Azure DevOps Presentation
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Building a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containersBuilding a CICD pipeline for deploying to containers
Building a CICD pipeline for deploying to containers
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
 

Viewers also liked

Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and TellE. Camden Fisher
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with JenkinsMartin Málek
 
Build and use a DevOps driven Migration Pipeline
Build and use a DevOps driven Migration PipelineBuild and use a DevOps driven Migration Pipeline
Build and use a DevOps driven Migration PipelineVedanta Barooah
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentChristopher Read
 
Commonwealth Bank of Australia's Private Cloud Implementation
Commonwealth Bank of Australia's Private Cloud ImplementationCommonwealth Bank of Australia's Private Cloud Implementation
Commonwealth Bank of Australia's Private Cloud ImplementationVishal Sharma
 
IBM 클라우드플랫폼 DM 2017
IBM 클라우드플랫폼 DM 2017IBM 클라우드플랫폼 DM 2017
IBM 클라우드플랫폼 DM 2017HyunHwa Myoung
 
The Path to Open Banking
The Path to Open BankingThe Path to Open Banking
The Path to Open BankingMuleSoft
 

Viewers also liked (7)

Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
Build and use a DevOps driven Migration Pipeline
Build and use a DevOps driven Migration PipelineBuild and use a DevOps driven Migration Pipeline
Build and use a DevOps driven Migration Pipeline
 
Continuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous DeploymentContinuous Integration, Build Pipelines and Continuous Deployment
Continuous Integration, Build Pipelines and Continuous Deployment
 
Commonwealth Bank of Australia's Private Cloud Implementation
Commonwealth Bank of Australia's Private Cloud ImplementationCommonwealth Bank of Australia's Private Cloud Implementation
Commonwealth Bank of Australia's Private Cloud Implementation
 
IBM 클라우드플랫폼 DM 2017
IBM 클라우드플랫폼 DM 2017IBM 클라우드플랫폼 DM 2017
IBM 클라우드플랫폼 DM 2017
 
The Path to Open Banking
The Path to Open BankingThe Path to Open Banking
The Path to Open Banking
 

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

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 FasterAmazon 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.0Jasmine 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 servicesAndré 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 ConcourseVMware 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 applicationsSunil Dalal
 
CICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureCICD Pipeline - AWS Azure
CICD Pipeline - AWS AzureRatan 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-26Vulk 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 KubernetesAmbassador Labs
 
CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018CNCF Introduction - Feb 2018
CNCF Introduction - Feb 2018Krishna-Kumar
 
CI and CD with Spinnaker
CI and CD with SpinnakerCI and CD with Spinnaker
CI and CD with SpinnakerVMware 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 toolkitMarco Ferrigno
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps ParadigmNaLUG
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoringOracle Korea
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringDonghuKIM2
 
JCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxJCON_15FactorWorkshop.pptx
JCON_15FactorWorkshop.pptxGrace 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.0Jasmine Conseil
 

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

『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书rnrncn29
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptxmohitesoham12
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSsandhya757531
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Sumanth A
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Communityprachaibot
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating SystemRashmi Bhat
 
Industrial Applications of Centrifugal Compressors
Industrial Applications of Centrifugal CompressorsIndustrial Applications of Centrifugal Compressors
Industrial Applications of Centrifugal CompressorsAlirezaBagherian3
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substationstephanwindworld
 
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.elesangwon
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming languageSmritiSharma901052
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Romil Mishra
 
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfImmutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfDrew Moseley
 
Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionSneha Padhiar
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsapna80328
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxRomil Mishra
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodManicka Mamallan Andavar
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solidnamansinghjarodiya
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxsiddharthjain2303
 
List of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfList of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfisabel213075
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmDeepika Walanjkar
 

Recently uploaded (20)

『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
『澳洲文凭』买麦考瑞大学毕业证书成绩单办理澳洲Macquarie文凭学位证书
 
Python Programming for basic beginners.pptx
Python Programming for basic beginners.pptxPython Programming for basic beginners.pptx
Python Programming for basic beginners.pptx
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
 
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
Robotics-Asimov's Laws, Mechanical Subsystems, Robot Kinematics, Robot Dynami...
 
Prach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism CommunityPrach: A Feature-Rich Platform Empowering the Autism Community
Prach: A Feature-Rich Platform Empowering the Autism Community
 
Main Memory Management in Operating System
Main Memory Management in Operating SystemMain Memory Management in Operating System
Main Memory Management in Operating System
 
Industrial Applications of Centrifugal Compressors
Industrial Applications of Centrifugal CompressorsIndustrial Applications of Centrifugal Compressors
Industrial Applications of Centrifugal Compressors
 
Earthing details of Electrical Substation
Earthing details of Electrical SubstationEarthing details of Electrical Substation
Earthing details of Electrical Substation
 
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
2022 AWS DNA Hackathon 장애 대응 솔루션 jarvis.
 
OOP concepts -in-Python programming language
OOP concepts -in-Python programming languageOOP concepts -in-Python programming language
OOP concepts -in-Python programming language
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________
 
Immutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdfImmutable Image-Based Operating Systems - EW2024.pdf
Immutable Image-Based Operating Systems - EW2024.pdf
 
Cost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based questionCost estimation approach: FP to COCOMO scenario based question
Cost estimation approach: FP to COCOMO scenario based question
 
signals in triangulation .. ...Surveying
signals in triangulation .. ...Surveyingsignals in triangulation .. ...Surveying
signals in triangulation .. ...Surveying
 
Mine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptxMine Environment II Lab_MI10448MI__________.pptx
Mine Environment II Lab_MI10448MI__________.pptx
 
Levelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument methodLevelling - Rise and fall - Height of instrument method
Levelling - Rise and fall - Height of instrument method
 
Engineering Drawing section of solid
Engineering Drawing     section of solidEngineering Drawing     section of solid
Engineering Drawing section of solid
 
Energy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptxEnergy Awareness training ppt for manufacturing process.pptx
Energy Awareness training ppt for manufacturing process.pptx
 
List of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdfList of Accredited Concrete Batching Plant.pdf
List of Accredited Concrete Batching Plant.pdf
 
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithmComputer Graphics Introduction, Open GL, Line and Circle drawing algorithm
Computer Graphics Introduction, Open GL, Line and Circle drawing algorithm
 

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