SlideShare a Scribd company logo
Continuous Integration
KuberDock, 10 Jun 2016
Agenda
- Why so continuous?
- Some huge examples
- OpenStack
- Spotify
- World of Tanks
- Ancestry
- KuberDock CI today
- Automated Dev/QA env
- Integration Testing API & Tests
- Jobs, Triggers
- KuberDock CI in future
- Parallelization -> scaling
- CI as a Service
- Quality Authority, sticking into the business processes
- Continuous Delivery
Why so continuous?
Continuous integration (CI) is the practice, in software engineering, of merging
all developer working copies to a shared mainline several times a day © Wikipedia
Benefits:
- Detect failure as earlier as possible
- Repeatable, Stable & Incrementally improving
- Catchall CI == Low mistake fear & Lower project entry barrier
- Constant flow of changes to benefit users, no break & fix turnarounds
- Fast regression == Fast release cycle
Cons:
- Expensive to Implement & Maintain
Yes, catchall CI is expensive, but
Source: Bug fix cost over SW lifecycle
OpenStack CI
OpenStack - Open source cloud platform
~ 20M Lines of code
~ 800 subprojects (different repos)
~ 2,5K Active contributors
~ 80K Gerrit reviews per cycle (6 months)
OpenStack CI:
Source: Zuul
OpenStack CI: the workflow
OpenStack CI, points of interest
Their CI is fully declarative, lives under git
- project:
name: cinder
github-org: openstack
node: bare-precise
tarball-site: tarballs.openstack.org
doc-publisher-site: docs.openstack.org
jobs:
- python-jobs
- python-grizzly-bitrot-jobs
- python-havana-bitrot-jobs
- openstack-publish-jobs
- gate-{name}-pylint
- translation-jobs
- job:
name: example-docs
node: node-label
triggers:
- zuul
builders:
- git-prep
- docs
publishers:
- scp:
site: 'scp-server'
files:
- target: 'dir/ectory'
source: 'build/html/foo'
keep-hierarchy: true
- console-log
OpenStack CI, points of interest
Elastic Recheck
With elastic-recheck now in place, contributors can:
1. Identify a pattern in the failure logs and visualize it in Kibana at http://logstash.openstack.org/
to search through a few weeks of logs to determine frequency.
2. Create a bug in our bug tracker for the error, add a comment to the bug with the exact query
identified via Kibana, and a link to the logstash url for that query search.
3. Submit a simple YAML-based change to the elastic-recheck repository’s queries/ directory,
which contains the list of bugs to track:
https://git.openstack.org/cgit/openstack-infra/elastic-recheck/tree/queries.
4. Re-run tests only on the affected reviews / projects
OpenStack CI, points of interest
Hardware vendors CI plugins
TL;DR if you are hardware vendor writing your driver for an OpenStack component, you build your own CI
server with that particular hardware, and link it to a common OpenStack gate.
Gerrit has an event stream which can be subscribed to. Using this event stream, it is possible to test commits against
testing systems beyond those supplied by OpenStack’s Jenkins setup. It is also possible for these systems to feed
information back into Gerrit and they can also leave non-gating votes on Gerrit review requests.
There are several examples of systems that read the Gerrit event stream and run their own tests on the commits on this
page. For each patch set the third party system tests, the system adds a comment in Gerrit with a summary of the test
result and links to the test artifacts.
Let’s talk about
~ 100M active users
~ 12K servers
~ Once a month desktop client releases - seamless
~ Clients on all mainstream mobiles and desktops & web.
~ All under CI/CD based on own container orchestration: Helios
How Spotify does Continuous Delivery with Docker and Helios (video)
Managing Machines at Spotify (tech blog)
Let’s talk about
Let’s talk about
source
KuberDock CI today
- Automated Dev/QA environment. About 20 minutes build time.
TASK [debug] *******************************************************************
ok: [kd_master] => {
"msg": "http://XXX.XXX.XXX.XXX:5000 [user:XXX, password:XXX]"
}
TASK [debug] *******************************************************************
skipping: [kd_master]
PLAY RECAP *********************************************************************
kd_master : ok=69 changed=32 unreachable=0 failed=0
kd_node1 : ok=34 changed=9 unreachable=0 failed=0
- Based on Vagrant and Ansible
- Hosted in CL OpenNebula OR locally (VirtualBox)
- Engineer can multiple environments at time
- Customizable - skip_by_tag, hooks, dotfiles, etc.
- Developer friendly - code runs from source, multiple hacks are built-in.
KuberDock CI today
Integration tests are built on top of automated dev/qa env
KuberDock CI today
Easy to use Integration Testing API
KuberDock CI today
Integration tests triggers:
- “integration” comment posted to review.
- “dev-cluster” comment posted to review.
- Night builds of both variants
Unit tests triggers:
- Run for each review
- Run before merge (Workflow +1): 1-threaded rebase -> test -> merge
KuberDock CI in nearest future
KuberDock Upgrades testing:
- Allow to run the same test for clean cluster & upgraded cluster.
- @clean_cluster()
- @upgraded_cluster(from=’release’, to=’latest’)
- Dedicated test to check if cluster workload survives after the upgrade
- self.cluster.start(version=’release’)
- pod = self.cluster.create_pod(healthcheck=True)
- self.cluster.upgrade(version=’latest’)
- pod.healthcheck()
KuberDock CI in nearest future
Parallelization and test pipelines:
- Tests are grouped in test pipelines
- Pipelines are run in parallel to each other (they are differently-configured clusters)
- Pipeline itself is divided to threads (one or more - different clusters, similar config)
- Parallelized declaratively, constant arrangement, via pipeline name and thread
number:
- @pipeline(“clean”, thread=1)
- @pipeline(“upgrade”, thread=1)
- @pipeline(“non_floating_ips_clean”, thread=1)
- @pipeline(“non_floating_ips_upgrade”, thread=1)
- New tests are creating new pipelines or go to the new threads in existing ones
- Integration test suite grows horizontally (more servers involved).
- Full integration run time is kept around 40 minutes
KuberDock CI in future future
- CI as a Service : everything is done through CI
- Automated regression
- Clusters for QAs for manual regression
- Stable master cluster every hour
- Release Candidate clusters
- Release process tied to CI
- Failure conditions (HA) testing (dropping nodes by one etc.)
- Backup & restore testing (deploy -> check -> backup -> kill -> restore -> check)
- Deployment configurations testing
- Deployment performance testing
- Cluster performance testing
Q & A
Links
● Understanding OpenStack CI
● OpenStack Gerrit-based workflow
● Elastic Recheck
● A CI/CD Alternative to Push and Pray for OpenStack
● How Spotify does Continuous Delivery with Docker and Helios
● Ancestry
● KuberDock automated DEV/QA env
● KuberDock integration tests

More Related Content

PDF
Leveraging Ansible for CI/CD
PDF
Kubelet with no Kubernetes Masters | DevNation Tech Talk
PDF
Writing Rust Command Line Applications
PDF
Git deep dive – chopping Kubernetes
PDF
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
PDF
Extend and build on Kubernetes
PDF
JAWS-UG ECS Best Practices #jawsug_ct
PDF
Beyond static configuration
Leveraging Ansible for CI/CD
Kubelet with no Kubernetes Masters | DevNation Tech Talk
Writing Rust Command Line Applications
Git deep dive – chopping Kubernetes
Continuous Delivery in Enterprise Environments using Docker, Ansible and Jenkins
Extend and build on Kubernetes
JAWS-UG ECS Best Practices #jawsug_ct
Beyond static configuration

What's hot (20)

PDF
Cutting the Kubernetes Monorepo in pieces – never learnt more about git
PDF
Monitoring Akka with Kamon 1.0
PDF
OpenStack Preso: DevOps on Hybrid Infrastructure
PDF
Deep dive in container service discovery
PDF
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
PDF
Short Lived Tasks in Cloud Foundry #cfdtokyo
PDF
Building kubectl plugins with Quarkus | DevNation Tech Talk
PDF
How to integrate Kubernetes in OpenStack: You need to know these project
PDF
KubeCon EU 2016: Kubernetes and the Potential for Higher Level Interfaces
PDF
7 Habits of Highly Effective Jenkins Users
PDF
Introduction to tempest
PPTX
Ci with jenkins docker and mssql belgium
PPTX
Immutable infrastructure 介紹與實做:以 kolla 為例
PDF
Git 101: Git and GitHub for Beginners
PDF
Api versioning w_docker_and_nginx
PPTX
Jenkins, pipeline and docker
PDF
An Introduction to the Kubernetes API
PDF
Building A SaaS with CoreOS, Docker, and Etcd
PPTX
7 Habits of Highly Effective Jenkins Users
PDF
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
Cutting the Kubernetes Monorepo in pieces – never learnt more about git
Monitoring Akka with Kamon 1.0
OpenStack Preso: DevOps on Hybrid Infrastructure
Deep dive in container service discovery
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...
Short Lived Tasks in Cloud Foundry #cfdtokyo
Building kubectl plugins with Quarkus | DevNation Tech Talk
How to integrate Kubernetes in OpenStack: You need to know these project
KubeCon EU 2016: Kubernetes and the Potential for Higher Level Interfaces
7 Habits of Highly Effective Jenkins Users
Introduction to tempest
Ci with jenkins docker and mssql belgium
Immutable infrastructure 介紹與實做:以 kolla 為例
Git 101: Git and GitHub for Beginners
Api versioning w_docker_and_nginx
Jenkins, pipeline and docker
An Introduction to the Kubernetes API
Building A SaaS with CoreOS, Docker, and Etcd
7 Habits of Highly Effective Jenkins Users
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
Ad

Viewers also liked (20)

PPTX
Openstack 2016 Barcelona - Adiuvo Bot – Smart DevOps using bots for effectiv...
PDF
DevOps and OpenStack December 2012
PDF
Openstack devops challenges
PDF
OSCON 2012 OpenStack Automation and DevOps Best Practices
PDF
Bareon functional testing ci
PPTX
The Key Components of Adopting CI The OpenStack Way
PDF
Unix in the Cloud — Ignorance, Stagnation, Obsolescence
PDF
4.4 fractional exponents notes 2
ODP
Nadya ip 9ci
PPTX
Tarea 3: Competencias informáticas
PDF
Ieeepro techno solutions ieee java project - privacy-preserving multi-keywor...
PDF
Same looks, different compo...
DOCX
HIPERVINCULOS
ODP
Barak Merimovich (GIgaSpaces) & Gal Moav (Ravello) - Devstack on Demand, Open...
PDF
Application Management in Openstack
PPTX
Eli Mansoor, Rackspace - The Rackspace Story, OpenStacl Israel 2015
PDF
Foire de Caen 2015 - Communiqué de Presse
PPTX
muhammad salman LI ppt
PDF
How Openstack is Built
PDF
TechStory_CLASA_A4_eng_[1]
Openstack 2016 Barcelona - Adiuvo Bot – Smart DevOps using bots for effectiv...
DevOps and OpenStack December 2012
Openstack devops challenges
OSCON 2012 OpenStack Automation and DevOps Best Practices
Bareon functional testing ci
The Key Components of Adopting CI The OpenStack Way
Unix in the Cloud — Ignorance, Stagnation, Obsolescence
4.4 fractional exponents notes 2
Nadya ip 9ci
Tarea 3: Competencias informáticas
Ieeepro techno solutions ieee java project - privacy-preserving multi-keywor...
Same looks, different compo...
HIPERVINCULOS
Barak Merimovich (GIgaSpaces) & Gal Moav (Ravello) - Devstack on Demand, Open...
Application Management in Openstack
Eli Mansoor, Rackspace - The Rackspace Story, OpenStacl Israel 2015
Foire de Caen 2015 - Communiqué de Presse
muhammad salman LI ppt
How Openstack is Built
TechStory_CLASA_A4_eng_[1]
Ad

Similar to Why so continuous (20)

PPTX
Modern CI/CD in the microservices world with Kubernetes
PPTX
Kubernetes101 - Pune Kubernetes Meetup 6
PDF
Hands-On Introduction to Kubernetes at LISA17
PDF
A DevOps guide to Kubernetes
PDF
PVS-Studio in the Clouds: Travis CI
PDF
DCSF 19 Kubernetes and Container Storage Interface Update
PDF
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
PPTX
20171122 aws usergrp_coretech-spn-cicd-aws-v01
PPTX
Continuous Integration & Development with Gitlab
PDF
KubeCon 2017: Kubernetes from Dev to Prod
PPTX
Apache Cloudstack QA Strategy
PDF
DevNetCreate - ACI and Kubernetes Integration
PDF
Kash Kubernetified
PDF
Getting to Walk with DevOps
PDF
Improving the Accumulo User Experience
PPTX
PDF
Cloud-Native Operations with Kubernetes and CI/CD
PDF
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
PDF
OSS Japan 2019 service mesh bridging Kubernetes and legacy
PPTX
Cloud Platform Symantec Meetup Nov 2014
Modern CI/CD in the microservices world with Kubernetes
Kubernetes101 - Pune Kubernetes Meetup 6
Hands-On Introduction to Kubernetes at LISA17
A DevOps guide to Kubernetes
PVS-Studio in the Clouds: Travis CI
DCSF 19 Kubernetes and Container Storage Interface Update
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
20171122 aws usergrp_coretech-spn-cicd-aws-v01
Continuous Integration & Development with Gitlab
KubeCon 2017: Kubernetes from Dev to Prod
Apache Cloudstack QA Strategy
DevNetCreate - ACI and Kubernetes Integration
Kash Kubernetified
Getting to Walk with DevOps
Improving the Accumulo User Experience
Cloud-Native Operations with Kubernetes and CI/CD
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
OSS Japan 2019 service mesh bridging Kubernetes and legacy
Cloud Platform Symantec Meetup Nov 2014

Recently uploaded (20)

PPTX
Cloud computing and distributed systems.
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
Big Data Technologies - Introduction.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
Teaching material agriculture food technology
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Machine learning based COVID-19 study performance prediction
Cloud computing and distributed systems.
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Spectral efficient network and resource selection model in 5G networks
Understanding_Digital_Forensics_Presentation.pptx
Big Data Technologies - Introduction.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Building Integrated photovoltaic BIPV_UPV.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cuic standard and advanced reporting.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Teaching material agriculture food technology
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Machine learning based COVID-19 study performance prediction

Why so continuous

  • 2. Agenda - Why so continuous? - Some huge examples - OpenStack - Spotify - World of Tanks - Ancestry - KuberDock CI today - Automated Dev/QA env - Integration Testing API & Tests - Jobs, Triggers - KuberDock CI in future - Parallelization -> scaling - CI as a Service - Quality Authority, sticking into the business processes - Continuous Delivery
  • 3. Why so continuous? Continuous integration (CI) is the practice, in software engineering, of merging all developer working copies to a shared mainline several times a day © Wikipedia Benefits: - Detect failure as earlier as possible - Repeatable, Stable & Incrementally improving - Catchall CI == Low mistake fear & Lower project entry barrier - Constant flow of changes to benefit users, no break & fix turnarounds - Fast regression == Fast release cycle Cons: - Expensive to Implement & Maintain
  • 4. Yes, catchall CI is expensive, but Source: Bug fix cost over SW lifecycle
  • 5. OpenStack CI OpenStack - Open source cloud platform ~ 20M Lines of code ~ 800 subprojects (different repos) ~ 2,5K Active contributors ~ 80K Gerrit reviews per cycle (6 months) OpenStack CI: Source: Zuul
  • 6. OpenStack CI: the workflow
  • 7. OpenStack CI, points of interest Their CI is fully declarative, lives under git - project: name: cinder github-org: openstack node: bare-precise tarball-site: tarballs.openstack.org doc-publisher-site: docs.openstack.org jobs: - python-jobs - python-grizzly-bitrot-jobs - python-havana-bitrot-jobs - openstack-publish-jobs - gate-{name}-pylint - translation-jobs - job: name: example-docs node: node-label triggers: - zuul builders: - git-prep - docs publishers: - scp: site: 'scp-server' files: - target: 'dir/ectory' source: 'build/html/foo' keep-hierarchy: true - console-log
  • 8. OpenStack CI, points of interest Elastic Recheck With elastic-recheck now in place, contributors can: 1. Identify a pattern in the failure logs and visualize it in Kibana at http://logstash.openstack.org/ to search through a few weeks of logs to determine frequency. 2. Create a bug in our bug tracker for the error, add a comment to the bug with the exact query identified via Kibana, and a link to the logstash url for that query search. 3. Submit a simple YAML-based change to the elastic-recheck repository’s queries/ directory, which contains the list of bugs to track: https://git.openstack.org/cgit/openstack-infra/elastic-recheck/tree/queries. 4. Re-run tests only on the affected reviews / projects
  • 9. OpenStack CI, points of interest Hardware vendors CI plugins TL;DR if you are hardware vendor writing your driver for an OpenStack component, you build your own CI server with that particular hardware, and link it to a common OpenStack gate. Gerrit has an event stream which can be subscribed to. Using this event stream, it is possible to test commits against testing systems beyond those supplied by OpenStack’s Jenkins setup. It is also possible for these systems to feed information back into Gerrit and they can also leave non-gating votes on Gerrit review requests. There are several examples of systems that read the Gerrit event stream and run their own tests on the commits on this page. For each patch set the third party system tests, the system adds a comment in Gerrit with a summary of the test result and links to the test artifacts.
  • 10. Let’s talk about ~ 100M active users ~ 12K servers ~ Once a month desktop client releases - seamless ~ Clients on all mainstream mobiles and desktops & web. ~ All under CI/CD based on own container orchestration: Helios How Spotify does Continuous Delivery with Docker and Helios (video) Managing Machines at Spotify (tech blog)
  • 13. KuberDock CI today - Automated Dev/QA environment. About 20 minutes build time. TASK [debug] ******************************************************************* ok: [kd_master] => { "msg": "http://XXX.XXX.XXX.XXX:5000 [user:XXX, password:XXX]" } TASK [debug] ******************************************************************* skipping: [kd_master] PLAY RECAP ********************************************************************* kd_master : ok=69 changed=32 unreachable=0 failed=0 kd_node1 : ok=34 changed=9 unreachable=0 failed=0 - Based on Vagrant and Ansible - Hosted in CL OpenNebula OR locally (VirtualBox) - Engineer can multiple environments at time - Customizable - skip_by_tag, hooks, dotfiles, etc. - Developer friendly - code runs from source, multiple hacks are built-in.
  • 14. KuberDock CI today Integration tests are built on top of automated dev/qa env
  • 15. KuberDock CI today Easy to use Integration Testing API
  • 16. KuberDock CI today Integration tests triggers: - “integration” comment posted to review. - “dev-cluster” comment posted to review. - Night builds of both variants Unit tests triggers: - Run for each review - Run before merge (Workflow +1): 1-threaded rebase -> test -> merge
  • 17. KuberDock CI in nearest future KuberDock Upgrades testing: - Allow to run the same test for clean cluster & upgraded cluster. - @clean_cluster() - @upgraded_cluster(from=’release’, to=’latest’) - Dedicated test to check if cluster workload survives after the upgrade - self.cluster.start(version=’release’) - pod = self.cluster.create_pod(healthcheck=True) - self.cluster.upgrade(version=’latest’) - pod.healthcheck()
  • 18. KuberDock CI in nearest future Parallelization and test pipelines: - Tests are grouped in test pipelines - Pipelines are run in parallel to each other (they are differently-configured clusters) - Pipeline itself is divided to threads (one or more - different clusters, similar config) - Parallelized declaratively, constant arrangement, via pipeline name and thread number: - @pipeline(“clean”, thread=1) - @pipeline(“upgrade”, thread=1) - @pipeline(“non_floating_ips_clean”, thread=1) - @pipeline(“non_floating_ips_upgrade”, thread=1) - New tests are creating new pipelines or go to the new threads in existing ones - Integration test suite grows horizontally (more servers involved). - Full integration run time is kept around 40 minutes
  • 19. KuberDock CI in future future - CI as a Service : everything is done through CI - Automated regression - Clusters for QAs for manual regression - Stable master cluster every hour - Release Candidate clusters - Release process tied to CI - Failure conditions (HA) testing (dropping nodes by one etc.) - Backup & restore testing (deploy -> check -> backup -> kill -> restore -> check) - Deployment configurations testing - Deployment performance testing - Cluster performance testing
  • 20. Q & A
  • 21. Links ● Understanding OpenStack CI ● OpenStack Gerrit-based workflow ● Elastic Recheck ● A CI/CD Alternative to Push and Pray for OpenStack ● How Spotify does Continuous Delivery with Docker and Helios ● Ancestry ● KuberDock automated DEV/QA env ● KuberDock integration tests