OpenStack logo

Scaling OpenStack Development with Git, Gerrit, and Jenkins

Monty Taylor <mordred@inaugust.com>
James E. Blair <corvus@inaugust.com>

Systems

Projects

Contributors

Release Management

Vision

Consistent Tooling

Development Infrastructure Systems

Environment

Gated Trunk

Everything Is Automated

Process Flow

Gerrit

Pre-merge Check

States of a Patch

Approved Reviews

Types of Jenkins Gerrit Triggers

Git Review

corvus@shiprock:~/rs/github/quantum$ git commit -a
[new-versionpy ddf1dce] Base version.py on glance.
 3 files changed, 28 insertions(+), 107 deletions(-)
 delete mode 100644 version.py

corvus@shiprock:~/rs/github/quantum$ git review
remote: Resolving deltas:   0% (0/3)
remote: 
remote: New Changes:
remote:   https://review.openstack.org/3072
remote: 
To ssh://corvus@review.openstack.org:29418/openstack/quantum.git
 * [new branch]      HEAD -> refs/for/master/bug/916018

Types of Tests

Specific Challenges/Solutions

gerrit git prep

Interrelated integration testing

bottlenecking

devstack-gate problems

devstack-gate solutions

jclouds-plugin

Templated jobs

Simple example

project:
  template: 'python_jobs'

values:
  name: 'python-novaclient'
  site: 'openstack'
  disabled: 'false'

complex example

---
modules:
  - properties
  - scm
  - assignednode
  - trigger_gerrit
  - builders
  - publisher_none

main:
  name: 'gate-ceilometer-merge'
  site: 'stackforge'
  project: 'ceilometer'
  authenticatedBuild: 'true'
  disabled: 'false'

trigger:
  triggerOnPatchsetUploadedEvent: 'false'
  triggerOnChangeMergedEvent: 'false'
  triggerOnCommentAddedEvent: 'true'
  triggerOnRefUpdatedEvent: 'false'
  triggerApprovalCategory: 'APRV'
  triggerApprovalValue: 1
  failureMessage: 'This change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.'
  projects:
    - projectCompareType: 'PLAIN'
      projectPattern: 'stackforge/ceilometer'
      branchCompareType: 'ANT'
      branchPattern: '**'

builders:
  - gerrit_git_prep

scm:
  scm: 'false'

assignednode:
  node: 'oneiric'

Scaling hardware needs

Thanks!

These slides available at: https://github.com/openstack-ci/publications