SlideShare a Scribd company logo
1 of 55
Download to read offline
An Almost Complete Continuous Delivery 
Pipeline Including Configuration Management

Ulf Månsson @ulfmansson
Recorded Future AB
Why almost complete?

You never complete
It's not easy
Recorded Future
We wanted
●

Quick feedback

●

Build all artifacts

●

Upload all build artifacts to s3

●

Trust in deploying every successful build

●

Test everything
What do we mean test everything?
●

Unit tests

●

Integration tests

●

End-to-end test

●

UI test

●

Performance test

●

Cookbook tests

●

Deployment tests

●

Configuration tests
No champagne
Long journey
●

The “build master” left the company

●

Lacking focus

●

Very long build times

●

Use the build pipe line plugin
Continues delivery embrace devops
●

Everyone should dare to touch stuff

●

Developers touch ops code

●

Operation touch application code

●

Everyone should be able to deploy
operations@recordedfuture
●

Quite big team

●

Infra code

●

Build pipe line

●

Service and on premise installations

●

End to end tests

●

Performance tests

●

Amazon operation costs
Our system
●

●

●

●

●

A number of major infrastructure
components – ElasticSearch,
RabbitMQ etc
About 45 different processes
Development in Java, Python, Scala
and Ruby
External API and web servers
Developed by 5 different teams in
Sweden, US and Ukraine
Subversion
For good and bad
All code is code
Keep the code in the same repository
Configurations also in subversion
Treat all code in the same way, it doesn’t matter if it’s application
code, infra code, test code or whatever
Feature toggling to our help
●

No branching

●

One trunk

●

Took some time train developers

●

●

Now we try to train infra coders as well – Feature
toggling in Chef
Read more by Jez Humble
http://continuousdelivery.com/2011/07/on-dvcs-contin
uous-integration-and-feature-branches/
Jenkins

and his slaves...
Build Flow Plugin ­ the thing!
out.println "Start"
revision=build.properties["environment"]["SVN_REVISION"]
out.print "Original revision for this build is "
out.println revision
parallel (
{build("master-build-flow",SVN_REVISION: revision)},
{ ignore(FAILURE) {build("master-infrastructure_test",SVN_REVISION: revision)}},
{build("master-fast_track_upload_cookbooks-flow",SVN_REVISION: revision)},
{ ignore(FAILURE){build("master-infrastructure_lint",SVN_REVISION: revision)}}
)
build( "master-fast_track_deploy-flow", SVN_REVISION: revision)
build( "master-fast_track_integration_test_harvesting-flow", SVN_REVISION: revision)
parallel (
{ build("master-fast_track_test_ff-flow", SVN_REVISION: revision) },
{ build("master-fast_track_test_ie-flow", SVN_REVISION: revision) }
)
Build Graph View Plugin
Jenkins text finder

puts "The build is UNSTABLE" if failed
S3
●

Store artifacts

●

Simple

●

Control

●

Reliable

●

Accessible
Test tools
●

Test kitchen

●

Server spec

●

Maven

●

Cucumber

●

Rspec

●

Load impact

●

Selenium
Build tools
Then: Only Maven
Now: Mix of Rake and Maven
Environment cookbook
# Cookbook Name:: env
# Recipe:: fast_track_1  (test environment)
include_recipe 'env::prod'
node.default[:rabbitmq][:version] = "3.1.5"
# Interactive
node.default['rfwebapp']['interactive']['java_opts'] = '­Xms1G 
­Xmx1G'
In env::default include_recipe "env::#{node.chef_environment}"
Why environment cookbook
●

●

●

●

We can version handle it
We are sure that the test environment will get the
same settings as production environment
On premise installation use chef-solo
When we upload the cookbooks the environment
settings will be uploaded as well
Our master build pipe line
Master­flow
●

Only the build-flow plugin, describes the build

●

Triggered by subversion polls

●

Co-ordinate the sub build processes

●

Only one at a time running
Master build flow
●

Compiles all application code

●

Run unit tests

●

Builds application artifacts

●

Uploads artifacts to S3
Upload cookbooks
●

Upload cookbooks to chef server for the build test
environment - fast_track
Infrastructure lint
●

Food critic of course

●

Tailor – nope

●

Rubocop – probably as next step
Fast track...
●

All-in-one box

●

Will deploy,configure and launch all processes

●

Configure infrastructure components

●

Spin-up EC2 instance
Fast track cont...
●

Use Chef server

●

Deploy all processes with Chef

●

Instance used for following tests

●

Perfect case for Docker
Infrastructure test
●

Test-kitchen tests

●

Mainly server-spec

●

Run in lxc with vagrant-lxc

●

Run our “default” suite in test-kitchen

●

Disabled in the Master-flow at the moment
End­to­end test
●

Cucumber tests

●

Populate system with data

●

Tests via our API

●

Check process log database to ensure all steps has
been run
Browser tests IE and Firefox
●

Run via Selenium

●

Test browser functionality

●

Upload screen snapshots from the tests to s3
Supporting tools
Bygge – an overview
Logstash
●

Collect all log from the fast track run

●

Used for problem solving

●

Easy to access with a link from Bygge

●

We also use it in production
Sensu ­ monitoring
●

Almost same monitoring as in production of each fast
truck run

●

Easy to access monitoring dashboard and see errors

●

Will fail builds when we have checks that fails
Lessons learned
Opscode jenkins cookbook
●

Really good

●

Providers for slaves, jobs, plugins

●

Updated
Run parallel

Many and smaller build steps
From 150 minutes to 45 minutes in 3 days
●

SSD instances for Jenkins

●

SSD test instances

●

Build slaves

●

Parallel execution

●

Pre upload
Infrastructure
Logstash
Jenkins

Sensu

Fast track instances
Fast track instances
Fast track instances
I would like to share experience
An almost complete continuous delivery pipeline including configuration management

More Related Content

What's hot

Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 

What's hot (20)

How to Leverage XCUITest for Continuous Testing
How to Leverage XCUITest for Continuous TestingHow to Leverage XCUITest for Continuous Testing
How to Leverage XCUITest for Continuous Testing
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)Testing API's: Tools & Tips & Tricks (Oh My!)
Testing API's: Tools & Tips & Tricks (Oh My!)
 
So we're going no-QA - how do we get the devs to do enough testing?
So we're going no-QA - how do we get the devs to do enough testing?So we're going no-QA - how do we get the devs to do enough testing?
So we're going no-QA - how do we get the devs to do enough testing?
 
Comparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End TestingComparing Agile QA Approaches to End-to-End Testing
Comparing Agile QA Approaches to End-to-End Testing
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?有了 Agile,為什麼還要有 DevOps?
有了 Agile,為什麼還要有 DevOps?
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014
 
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, SixtAndroid Continuous Integration and Automation - Enrique Lopez Manas, Sixt
Android Continuous Integration and Automation - Enrique Lopez Manas, Sixt
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Continuous Deployment to the cloud
Continuous Deployment to the cloudContinuous Deployment to the cloud
Continuous Deployment to the cloud
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
 
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
6º Encontro do Grupo de Testes Carioca - Testes em um contexto de Continuous ...
 
Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.Effective Android Development. UA Mobile 2016.
Effective Android Development. UA Mobile 2016.
 
CICD by Teerapat
CICD by TeerapatCICD by Teerapat
CICD by Teerapat
 
DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)
DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)
DevQA: make your testers happier with Groovy, Spock and Geb (Greach 2014)
 
Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點Monitoring 改造計畫:流程觀點
Monitoring 改造計畫:流程觀點
 
Rewriting DevOps - Lessons from a 15 month software rewrite
Rewriting DevOps - Lessons from a 15 month software rewriteRewriting DevOps - Lessons from a 15 month software rewrite
Rewriting DevOps - Lessons from a 15 month software rewrite
 
DevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps WorldDevQAOps - Surviving in a DevOps World
DevQAOps - Surviving in a DevOps World
 

Viewers also liked

Viewers also liked (11)

Continuous Delivery Pipeline - Patterns and Anti-patterns
Continuous Delivery Pipeline - Patterns and Anti-patternsContinuous Delivery Pipeline - Patterns and Anti-patterns
Continuous Delivery Pipeline - Patterns and Anti-patterns
 
Continous delivery
Continous deliveryContinous delivery
Continous delivery
 
DevOps for the Enterprise: Continuous Integration
DevOps for the Enterprise: Continuous IntegrationDevOps for the Enterprise: Continuous Integration
DevOps for the Enterprise: Continuous Integration
 
From Continous Integration to Continuous Delivery
From Continous Integration to Continuous DeliveryFrom Continous Integration to Continuous Delivery
From Continous Integration to Continuous Delivery
 
Continuous Integration, the minimum viable product
Continuous Integration, the minimum viable productContinuous Integration, the minimum viable product
Continuous Integration, the minimum viable product
 
Improving software quality using Continuous Integration
Improving software quality using Continuous IntegrationImproving software quality using Continuous Integration
Improving software quality using Continuous Integration
 
Case Study: ING Builds Highly Available Continuous Delivery Pipeline with Mic...
Case Study: ING Builds Highly Available Continuous Delivery Pipeline with Mic...Case Study: ING Builds Highly Available Continuous Delivery Pipeline with Mic...
Case Study: ING Builds Highly Available Continuous Delivery Pipeline with Mic...
 
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
Day 3 - DevOps Culture - Continuous Integration & Continuous Deployment on th...
 
Agile Release Planning
Agile Release PlanningAgile Release Planning
Agile Release Planning
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 
Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.Musings on Mesos: Docker, Kubernetes, and Beyond.
Musings on Mesos: Docker, Kubernetes, and Beyond.
 

Similar to An almost complete continuous delivery pipeline including configuration management

Similar to An almost complete continuous delivery pipeline including configuration management (20)

Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook QualityContinuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
 
Expedia 3x3 presentation
Expedia 3x3 presentationExpedia 3x3 presentation
Expedia 3x3 presentation
 
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
Introduction to DevOps. Continuous Integration by Myroslav Dmytrus
 
Yet Another Continuous Integration Story
Yet Another Continuous Integration StoryYet Another Continuous Integration Story
Yet Another Continuous Integration Story
 
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...Testing Rest with Spring  by Kostiantyn Baranov (Senior Software Engineer, Gl...
Testing Rest with Spring by Kostiantyn Baranov (Senior Software Engineer, Gl...
 
CI for Chefs
CI for ChefsCI for Chefs
CI for Chefs
 
Confoo - DevOps & Agile Infrastructure
Confoo - DevOps & Agile InfrastructureConfoo - DevOps & Agile Infrastructure
Confoo - DevOps & Agile Infrastructure
 
JenkinsCI
JenkinsCIJenkinsCI
JenkinsCI
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Cloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud PipelinesCloud Native CI/CD with Spring Cloud Pipelines
Cloud Native CI/CD with Spring Cloud Pipelines
 
Production Ready WordPress #WPLDN
Production Ready WordPress #WPLDNProduction Ready WordPress #WPLDN
Production Ready WordPress #WPLDN
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Production Ready WordPress - WC Utrecht 2017
Production Ready WordPress  - WC Utrecht 2017Production Ready WordPress  - WC Utrecht 2017
Production Ready WordPress - WC Utrecht 2017
 
Continuous Delivery at Snyk
Continuous Delivery at SnykContinuous Delivery at Snyk
Continuous Delivery at Snyk
 
Continuous Development Pipeline
Continuous Development PipelineContinuous Development Pipeline
Continuous Development Pipeline
 
DevOps presentation
DevOps presentationDevOps presentation
DevOps presentation
 
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.Jenkinsconf Presentation - Advance jenkins management with multiple projects.
Jenkinsconf Presentation - Advance jenkins management with multiple projects.
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 

Recently uploaded

Recently uploaded (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
TEST BANK For Principles of Anatomy and Physiology, 16th Edition by Gerard J....
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Decarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational PerformanceDecarbonising Commercial Real Estate: The Role of Operational Performance
Decarbonising Commercial Real Estate: The Role of Operational Performance
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 

An almost complete continuous delivery pipeline including configuration management