Top Banner
© MIRANTIS 2013 PAGE © MIRANTIS 2013 OpenStack - development and testing processes Ruslan Kamaldinov
18

6.1

Jan 26, 2015

Download

Technology

Yandex

Процессы разработки, инструменты и методы автоматизации тестирования в проекте OpenStack. С какими сложностями сталкивается сообщество OpenStack? Какие инструменты были разработаны для того, чтобы всегда поддерживать этот широкомасштабный проект в рабочем состоянии?
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 6.1

© MIRANTIS 2013 PAGE © MIRANTIS 2013

OpenStack -

development

and testing

processes

Ruslan Kamaldinov

Page 2: 6.1

© 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

Page 3: 6.1

© MIRANTIS 2013 PAGE

OpenStack community

* all projects, including stackforge and openstack-infra

Page 4: 6.1

© MIRANTIS 2013 PAGE

OpenStack community

Page 5: 6.1

© MIRANTIS 2013 PAGE

Code review - Gerrit

• Raise bus factor

• Ensure code readability

• Catch bugs

• Everybody gets reviewed (no exceptions)

Page 6: 6.1

© MIRANTIS 2013 PAGE

Workflow

Page 7: 6.1

© MIRANTIS 2013 PAGE

Project gating

• Automated testing

• Ensures code quality

• Protects developers

• Protects source tree

• Process is the same for everyone

Page 8: 6.1

© MIRANTIS 2013 PAGE

Project gating

Page 9: 6.1

© MIRANTIS 2013 PAGE

Project gating

Page 10: 6.1

© MIRANTIS 2013 PAGE

Project gating

Page 11: 6.1

© MIRANTIS 2013 PAGE

Zuul

• Interfaces with Gerrit and Jenkins

• Listens for events from Gerrit and launches

Jenkins jobs

• Allows parallel testing of serialized changes

Page 12: 6.1

© 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

Page 13: 6.1

© 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'

Page 14: 6.1

© MIRANTIS 2013 PAGE

Jenkins Job Builder

Jenkins Job Builder is a system for configuring

Jenkins jobs using simple YAML files stored in

Git.

Page 15: 6.1

© 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

Page 16: 6.1

© 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}'

Page 17: 6.1

© 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

Page 18: 6.1

© MIRANTIS 2013 PAGE

Q&A