© MIRANTIS 2013 PAGE © MIRANTIS 2013 OpenStack - development and testing processes Ruslan Kamaldinov
Jan 26, 2015
© MIRANTIS 2013 PAGE © MIRANTIS 2013
OpenStack -
development
and testing
processes
Ruslan Kamaldinov
© MIRANTIS 2013 PAGE
OpenStack community
• More than a hundred commercial entities
• More than a thousand individual contributors
• 700-1000 patch-set per day
• ~250 commits per day
© MIRANTIS 2013 PAGE
OpenStack community
* all projects, including stackforge and openstack-infra
© MIRANTIS 2013 PAGE
OpenStack community
© MIRANTIS 2013 PAGE
Code review - Gerrit
• Raise bus factor
• Ensure code readability
• Catch bugs
• Everybody gets reviewed (no exceptions)
© MIRANTIS 2013 PAGE
Workflow
© MIRANTIS 2013 PAGE
Project gating
• Automated testing
• Ensures code quality
• Protects developers
• Protects source tree
• Process is the same for everyone
© MIRANTIS 2013 PAGE
Project gating
© MIRANTIS 2013 PAGE
Project gating
© MIRANTIS 2013 PAGE
Project gating
© MIRANTIS 2013 PAGE
Zuul
• Interfaces with Gerrit and Jenkins
• Listens for events from Gerrit and launches
Jenkins jobs
• Allows parallel testing of serialized changes
© MIRANTIS 2013 PAGE
Zuul
- name: openstack/sahara template: - name: python-jobs - name: check-requirements - name: integrated-gate-sahara check: - gate-sahara-pylint post: - hook-sahara-rtfd - sahara-upstream-translation-update pre-release: - sahara-tarball - hook-sahara-rtfd release: - sahara-tarball: - hook-sahara-rtfd
© MIRANTIS 2013 PAGE
Zuul
project-templates: - name: python-jobs check: - 'gate-{name}-pep8' - 'gate-{name}-docs' - 'gate-{name}-python26' - 'gate-{name}-python27' gate: - 'gate-{name}-docs' - 'gate-{name}-pep8' - 'gate-{name}-python26' - 'gate-{name}-python27' post: - '{name}-branch-tarball' - '{name}-coverage'
© MIRANTIS 2013 PAGE
Jenkins Job Builder
Jenkins Job Builder is a system for configuring
Jenkins jobs using simple YAML files stored in
Git.
© MIRANTIS 2013 PAGE
Jenkins Job Builder
- project: name: sahara github-org: openstack node: bare-precise tarball-site: tarballs.openstack.org doc-publisher-site: docs.openstack.org jobs: - python-jobs - gate-{name}-pylint - hook-{name}-rtfd - pypi-jobs - translation-jobs - openstack-publish-jobs
© MIRANTIS 2013 PAGE
Jenkins Job Builder
- job-template: name: 'gate-{name}-pep8' builders: - revoke-sudo - gerrit-git-prep - pep8: github-org: '{github-org}' project: '{name}' publishers: - console-log node: '{node}'
© MIRANTIS 2013 PAGE
Resources
● http://ci.openstack.org/
● https://git.openstack.org/cgit/openstack-infra/config/tree/
● https://git.openstack.org/cgit/openstack-infra/zuul/tree
● https://git.openstack.org/cgit/openstack-infra/jenkins-job-builder/tree
● #openstack-infra at freenode.net
● #openstack-dev at freenode.net
● #openstack-sahara at freenode.net
● http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
● http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-infra
© MIRANTIS 2013 PAGE
Q&A