From 0560476234c83a1a2ec36e0ed803de1b60008502 Mon Sep 17 00:00:00 2001 From: Monty Taylor Date: Wed, 21 Feb 2018 12:12:45 -0600 Subject: Update slides for changes since the fall --- src/zuulv3/zuul.rst | 158 ++++++++++++++++++++++++++++------------------------ 1 file changed, 84 insertions(+), 74 deletions(-) diff --git a/src/zuulv3/zuul.rst b/src/zuulv3/zuul.rst index 870c373..3ce2437 100644 --- a/src/zuulv3/zuul.rst +++ b/src/zuulv3/zuul.rst @@ -67,6 +67,10 @@ OpenStack Infra -- Alex Gaynor + "OpenStack Infra are like the SpaceX of CI" + + -- Emily Dunham + Zuul ==== .. container:: handout @@ -121,25 +125,23 @@ What do I mean by Massive Scale? * Contributors (~2k / 6 month period) * Companies * Changes - * Code Repositories (1827 as of this morning) + * Code Repositories (1868 as of this morning) * Communities -OpenStack Scale -=============== +OpenStack Scale Comparison +=========================== - * 2,000 git repositories * 2KJPH (2,000 jobs per hour) - * Nodes 14 Regions off 5 OpenStack Public Clouds and 2 Private Clouds - (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud, HPE, Red Hat) + * Nodes from 12 Regions of 5 Public and 1 Private OpenStack Clouds + (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud and Linaro) * 10,000 changes merged per month -OpenStack Scale -=============== +OpenStack Scale Comparison +========================== - * 2,000 git repositories * 2KJPH (2,000 jobs per hour) - * Nodes 14 Regions off 5 OpenStack Public Clouds and 2 Private Clouds - (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud, HPE, Red Hat) + * Nodes from 12 Regions of 5 Public and 1 Private OpenStack Clouds + (Thanks Rackspace, Internap, OVH, Vexxhost, CityCloud and Linaro) * 10,000 changes merged per month * By comparison, our friends at the amazing project Ansible received @@ -150,7 +152,7 @@ Pretty Things to Look for Scale * http://grafana.openstack.org/dashboard/db/zuul-status * http://grafana.openstack.org/dashboard/db/nodepool - * http://zuulv3.openstack.org/ + * http://zuul.openstack.org/ Dealing With Scale ================== @@ -239,13 +241,14 @@ Nodepool nodepool builds nodes for zuul Remember that 2,000 jobs per hour number? Each job gets a fresh VM - that's 2,000 VMs per hours - Treats our 20 regions across 9 clouds as one REALLY big cloud + Treats our 12 regions across 6 clouds as one REALLY big cloud :: * A separate program that works very closely with *zuul* * Builds images daily and uploads to clouds * Creates and destroys (at least) a VM for every job + * Supports using pre-existing nodes (static provider) Nodepool can use pre-existing images, BUT ... ============================================= @@ -555,6 +558,7 @@ shade: Add unittest tips jobs Run tox python 27 unittests against master of important libs required-projects: - openstack-infra/shade + - openstack/keystoneauth - openstack/os-client-config - job: @@ -593,7 +597,6 @@ shade: Add unittest tips project-template to project .. code:: yaml - project: - name: openstack-infra/shade templates: - publish-to-pypi - publish-openstack-sphinx-docs @@ -607,7 +610,6 @@ os-client-config: Add shade-tox-tips jobs .. code:: yaml - project: - name: openstack/os-client-config templates: - shade-tox-tips check: @@ -697,7 +699,7 @@ Zuul Startup * Ask mergers for branches of each repo * Ask mergers for .zuul.yaml file for each branch of each repo -``.zuul.yaml`` can be ``^\.?zuul.ya?ml$`` file or ``^\.?zuul.d$`` run-parts +``.zuul.yaml`` can be ``^\.?zuul.yaml$`` file or ``^\.?zuul.d$`` run-parts directory. .. ansi:: images/startup2.ans @@ -792,11 +794,7 @@ OpenStack Github Support for Cross Community Testing * App added to github project by project admin * Project aded to OpenStack's main.yaml * Test interactions between OpenStack and important adjacent communities - - * Ansible - * Kubernetes - * Ceph? - * Open vSwitch? + * https://github.com/ansible/ansible/pull/20974 Cross Community Testing ======================= @@ -854,22 +852,27 @@ Cross Community Support cont. status: 'failure' mysql: -Cross Community Depends-On (coming soon) -======================================== +Cross Source Dependencies +========================= .. container:: progressive - * shade https://review.openstack.org/#/c/613914/ + * shade https://review.openstack.org/539563 - Add support for server groups + Shift voting flag and test_matrix_branch for ansible-devel job - Change-ID: I5b411be5c5aa43535fa89a51d6099aadd7a8ea61 + Change-ID: Ic9d3983de641dbe618c65b2cbf2dcfa3686575df - * ansible https://github.com/ansible/ansible/pull/32159 + * ansible https://github.com/ansible/ansible/pull/34925 - Add os_server_group module + continue fact gathering even without dmidecode - Depends-On: https://review.openstack.org/#/613914/ + * ansible https://github.com/ansible/ansible/pull/20974 + + Make a generalized OpenStack cloud constructor + + Depends-On: https://review.openstack.org/539563 + Depends-On: https://github.com/ansible/ansible/pull/34925 Jobs ==== @@ -879,8 +882,14 @@ Jobs * Execution content in Ansible (with live streaming!) * Jobs may be defined centrally or in the repo being tested * Jobs have contextual variants that simplify configuration -* git.openstack.org/openstack-infra/zuul-jobs repo can be directly shared - between zuul installations + +Shared Job Configs +================== + +* Job config repos are all in git +* Designed to support directly sharing job configurations +* git.openstack.org/openstack-infra/zuul-jobs repo is a 'standard library' + to be directly shared between zuul installations Job === @@ -897,10 +906,10 @@ Job nodes: - name: primary label: centos-7 - pre-run: playbooks/base/pre + pre-run: playbooks/base/pre.yaml post-run: - - playbooks/base/post-ssh - - playbooks/base/post-logs + - playbooks/base/post-ssh.yaml + - playbooks/base/post-logs.yaml secrets: - site_logs @@ -911,9 +920,9 @@ Simple Job - job: name: tox - pre-run: playbooks/setup-tox - run: playbooks/tox - post-run: playbooks/fetch-tox-output + pre-run: playbooks/setup-tox.yaml + run: playbooks/tox.yaml + post-run: playbooks/fetch-tox-output.yaml - job: name: tox-py27 @@ -929,7 +938,7 @@ Simple Job Variant - job: name: tox-py27 - branch: stable/mitaka + branches: stable/mitaka nodeset: - name: ubuntu-trusty label: ubuntu-trusty @@ -968,7 +977,7 @@ Multi-node Job - job: name: ceph-multinode nodeset: ceph-cluster - run: playbooks/install-ceph + run: playbooks/install-ceph.yaml Multi-node Ceph Job Content =========================== @@ -998,9 +1007,10 @@ Projects :: zuul@ubuntu-xenial:~$ find /home/zuul/src -mindepth 3 -maxdepth 3 -type d - src/git.openstack.org/openstack-infra/shade - src/git.openstack.org/openstack/os-client-config - src/github.com/ansible/ansible + /home/zuul/src/git.openstack.org/openstack-infra/shade + /home/zuul/src/git.openstack.org/openstack/keystoneauth + /home/zuul/src/git.openstack.org/openstack/os-client-config + /home/zuul/src/github.com/ansible/ansible Project ======= @@ -1008,8 +1018,6 @@ Project .. code:: yaml - project: - # Needing to name the project in that project's .zuul.yaml is going away - name: openstack/nova check: jobs: - openstack-tox-py27 @@ -1022,7 +1030,6 @@ Project with Local Variant .. code:: yaml - project: - name: openstack/nova check: jobs: - openstack-tox-py27 @@ -1061,7 +1068,7 @@ Project with Many Local Variants - name: centos-7 label: centos-7 - openstack-tox-py27 - branch: stable/newton + branches: stable/newton nodeset: - name: ubuntu-trusty label: ubuntu-trusty @@ -1085,7 +1092,6 @@ Project With Central and Local Config # In git.openstack.org/openstack/nova/.zuul.yaml: - project: - name: openstack/nova check: - nova-placement-functional-devstack @@ -1094,6 +1100,7 @@ Project with Job Dependencies .. code:: yaml + # In git.openstack.org/openstack-infra/project-config: - project: name: openstack/nova release: @@ -1113,8 +1120,10 @@ Playbooks * Jobs run Ansible playbooks * Playbooks may be defined centrally or in the repo being tested -* Playbooks can use roles from current or other Zuul repos (or Galaxy, coming soon) -* Playbooks are run on the zuul-executor using bubblewrap https://github.com/projectatomic/bubblewrap +* Playbooks can use roles from current or other Zuul repos + (or Galaxy, coming soon) +* Playbooks are run on the zuul-executor using bubblewrap + https://github.com/projectatomic/bubblewrap * Playbooks are not allowed to execute content on 'localhost' Job with Roles @@ -1128,7 +1137,7 @@ Job with Roles Multi-node Zuul installation and integration test nodeset: zuul-cluster roles: - - zuul: openstack/ansible-role-zuul + - zuul: openstack-infra/ansible-role-zuul run: playbooks/zuul-integration Job with Multiple Projects @@ -1144,13 +1153,13 @@ Job with Multiple Projects vars: zuul_work_dir: src/git.openstack.org/openstack-infra/zuul required-projects: - - name: openstack-infra/zuul - override-branch: feature/zuulv3 + - openstack-infra/zuul - - project: openstack-infra/zuul-jobs - check: - jobs: - - tox-py35-on-zuul + - project: + name: openstack-infra/zuul-jobs + check: + jobs: + - tox-py35-on-zuul Devstack-gate / Tempest Playbook ================================ @@ -1218,10 +1227,10 @@ Secrets * Jobs using secrets are not reconfigured speculatively * Secrets can only be used by the same project they are defined in * Public key per project: - ``{{ zuul_url }}/{{ tenant }}/keys/{{ project }}.pub`` + ``{{ zuul_url }}/{{ tenant }}/{{ project }}.pub`` :: - GET http://zuulv3.openstack.org/keys/openstack-infra/shade.pub + GET http://zuul.openstack.org/openstack-infra/shade.pub Secret Example (note, no admins had to enable this) =================================================== @@ -1283,35 +1292,36 @@ Secret Example Status ====== -* zuulv3 is running for OpenStack -* zuulv3 also runing at BMW (in OpenShift) -* automation job migration sucked (I wrote the script, whoops) -* cleaning up fixing automation and bugs found running at scale -* reference documentation exists and is complete -* pre-repository job documentation -* will release v3.0 once we're satisfied it's good for other people +* Zuul v3 is in production for OpenStack (in OpenStack VMs) +* Zuul v3 also runing at BMW (in OpenShift) and Godaddy (in kuberenetes) + and Huawei's OpenLab. +* Software Factory updated to v3 + https://softwarefactory-project.io/sf/welcome.html +* will tag and release v3.0 once we're satisfied it's good for other people + (within the next few weeks) What's Next? ============ -* dashboard + REST API -* user and deployer *documentation* - getting started walkthroughs -* node providers: - * static +* shared job doc generation +* node providers + * kuberenetes * OCI/docker * Mac Stadium (for our Ansible friends) - * bifrost + * ec2 + * ansible * support for galaxy roles * in-line code-review comments from Zuul -* shared job doc generation -* native container/kubernetes execution? +* native container/kubernetes job execution Important Links =============== -* https://git.openstack.org/cgit/openstack-infra/zuul/log/?h=feature/zuulv3 -* https://docs.openstack.org/infra/zuul/feature/zuulv3/ +* https://zuul-ci.org/ +* https://git.openstack.org/cgit/openstack-infra/zuul +* https://docs.openstack.org/infra/zuul * https://docs.openstack.org/infra/manual/zuulv3.html +* https://docs.openstack.org/infra/zuul-jobs/ * https://docs.openstack.org/infra/openstack-zuul-jobs/ * https://storyboard.openstack.org/#!/project/679 * https://storyboard.openstack.org/#!/board/41 -- cgit v1.2.3