OpenStack Infra Team conference presentations and papers
Go to file
Khai Do f1d0dfcfae Modifications for 2014 Gerrit User conference
This slide deck was presented at the 2014 Gerrit user conference.  It essentially contains
the same info as the overview slides with the following exceptions:
1. Presented to Gerrit developers and integrators so removed the Gerrit overview info
2. Slides concentrated on openstack integration with gerrit so added a few slides
emphasizing stuff like automated Gerrit installation, automated project creation,
and zuul reporting.
3. The talk was only 30 mins so abbreviated the slides by removing some of the openstack
intro slides, removing launchpad slides, and removing detailed zuul configuration slides.
4. The talk also wanted to present an overview of the entire openstack CI toolbox so
added a few slides about multi-master jenkins and nodepool.

Note: This change should only be tagged, not merged with master

Change-Id: I041acf626fdd0825dead57e8bc595c69bc540d1d
2014-03-24 10:43:22 -07:00
graphics Use higher res logo for talk banner. 2013-07-31 08:34:30 -07:00
help Clear unrelated presentations out of the overview. 2013-06-18 01:06:46 +00:00
images Modifications for 2014 Gerrit User conference 2014-03-24 10:43:22 -07:00
scripts Remove stray .htaccess files. 2013-07-31 13:55:23 +00:00
styles Remove stray .htaccess files. 2013-07-31 13:55:23 +00:00
.gitreview Add .gitreview file with defaultbranch. 2013-06-18 01:23:13 +00:00
README.rst Add sysadmin-in-git slide 2014-01-04 09:34:26 -08:00
index.html Modifications for 2014 Gerrit User conference 2014-03-24 10:43:22 -07:00
notes Clear unrelated presentations out of the overview. 2013-06-18 01:06:46 +00:00

README.rst

Scaling OpenStack Development: Continuous Integration Overview

Abstract

OpenStack is not only the fastest-growing open-source cloud project but is also a large-scale, complex system with a rapidly expanding code base and more than 1,000 contributors to date. Handling the quantity and pace of contributions is a huge challenge on its own. We've been able to handle the dramatic scale of development by having automation systems that allow us to treat all developers equally from a process perspective and keep our trunk always clean by performing testing pre-merge. The beautiful thing about this approach has been that it doesn't just keep up with demands, it facilities and encourages more development.

This talk will cover the design and implementation of the current system, based around a combination of Gerrit and Jenkins, as well as the workflow that we support and require, how we implemented it and what the challenges were. At the end of this talk you should have a good understanding of how OpenStack handles up to 200 contribution activities an hour.

Talking points

The OpenStack Grizzly release brought roughly 400,000 new lines of source code in 10,000 changes from 500 developers over a 6-month period. Every change passed a battery of style, unit, functional and integration tests over the course if its development and review, and again before being merged into the official codebase. This presentation will provide a high-level examination of the techniques used to coordinate and automate software development efforts at such a scale.

  • Projects:
    • scaling challenge faced as a community
    • number of individual software projects being integrated
    • server projects are part of an integrated release
    • client library projects are released on separate schedules
    • incubated projects shown in gray
  • Programs/Horizontal Efforts:
    • scaling challenge faced as a community
    • many important contributions are not focused on a project
    • might span multiple software projects
    • could be something other than traditional software development
  • Release Management:
    • scaling challenge faced as a community
    • integrated release and roadmap follow a rigid schedule
    • limitations chosen to improve output and quality
  • Contributors:
    • scaling challenge faced as a community
    • contributors come from varied places and backgrounds
    • different levels of involvement
    • have a variety of goals and motives (usually not a bad thing)
    • there are many, many, many of them
  • Consistent Tooling:
    • meta-development happens independently without consistency
    • consistency increases throughput with fewer people
  • Developer Infrastructure:
    • both a scaling challenge and solution
    • vast array of systems used for development efforts
  • System Administration is in Git:
    • anyone can contribute to admininstration of project systems
    • auditable, self-documenting
    • makes it easy for others to build similar systems
  • Developer Environment
    • operating systems and python versions supported (and how that impacts testing)
    • developers on IRC aids distributed development
    • openstack is complicated to install; devstack makes it simple
    • lots of testing helps stabilize rapid development and facilitates contributions
  • Project Gating
  • Everything Is Automated
  • Process Flow
  • Gerrit
  • Gerrit (screenshot)
    • change information
    • commit message
    • bug and blueprint linkage
    • review status, categories
    • patchsets
    • comments
    • pre merge testing
    • gating
  • Gerrit Diff View
  • Bug Integration - Launchpad
  • Approved Reviews
  • Git Review
  • Types of Tests
  • Specific Challenges/Solutions
  • Gerrit Git Prep
  • Interrelated Integration Testing
  • Devstack-Gate Problems
  • Devstack-Gate Solutions
  • Zuul
  • Bottlenecking
  • Zuul Simulation:
    1. branch tip of repositories for nova and keystone
    2. changes enter the gate pipeline, merged to a test queue
    3. zuul initiates tests on each in parallel, keystone fails
    4. first change passes all tests
    5. merged to nova and becomes the branch tip
    6. second change passes all tests
    7. merged to nova and becomes the branch tip
    8. third change is ejected and keystone branch tip is unchanged
    9. fourth change is merged to a new test queue, now in first
    10. zuul restarts tests on the new queue of one change
    11. first change passes all tests
    12. merged to nova and becomes the branch tip
  • Zuul Check Pipeline
  • Zuul Gate Pipeline
  • Zuul Post-Merge Pipeline
  • Zuul Release Pipeline
  • Zuul Project Configuration
  • Templated Jobs
  • Example Job
  • Example Template
  • Scaling Hardware Needs
  • Thanks!