Features that you can use
- Gerrit and Github Code Review triggering/commenting/voting
- Git based configuration
- Speculative merging for high-velocity gating
- Custom image building/reuse (via Nodepool)
- Multi-Region/Multi-Cloud (via Nodepool)
- Easy multi-node testing
- Massively Scalable
- Cross-repo and Cross-source speculative merge gating
Gerrit and Github
- Gerrit -- Apache licensed code review tool used for big projects like OpenStack and Android
- Github -- Proprietary website and on-premises "Enterprise" code-review/hosting system
- Install OpenStack Zuul app on your github repo
YAML config in-repo or centralized defines config
- project:
name: ansible/ansible
third-party-check:
jobs:
- shade-ansible-devel-functional-devstack:
files:
- ^lib/ansible/modules/cloud/openstack/.*
- ^contrib/inventory/openstack.py
- ^lib/ansible/plugins/inventory/openstack.py
- ^lib/ansible/module_utils/openstack.py
- ^lib/ansible/utils/module_docs_fragments/openstack.py
Speculative merging for high velocity merging
[ switch to other presentation ]
Custom Image Building/Multi-Cloud
- Pre-cache all those downloads
- Nodepool manages image uploads and refreshes periodically
- Uses diskimage-builder -- whole other talk
- Multi-Cloud -- as long as they're all OpenStack clouds (over 20 public OpenStacks globally)
- AWS, Kubernetes, and other resource drivers are available but un-merged
Easy Multi-Node testing
- job:
parent: base
name: test-kolla-ansible
run: kolla_ansible/main.yml
nodeset:
nodes:
- name: meta-api
label: kolla-centos7
- name: cell-api
label: kolla-centos7
- name: db
label: kolla-centos7
- name: mq
label: kolla-centos7
- name: hypervisor
label: kolla-centos7
Easy Multi-Node testing
- name: "Setup docker on servers that will need it."
hosts: cap,map,hv
roles:
- docker
- name: "Setup database on db server."
hosts: db
roles:
- db
- name: "Setup rabbit on mq server."
hosts: mq
roles:
- mq
Massively Scalable
Cross-Repo Dependency Controls
- Make one change depend on another
- Build speculative cross-repo change-set and test it without merging it
- Allows devs to "fire and forget" on a PR, it won't merge until it will actually work!
- Struggles with circular deps, you must unroll to use the feature