Update zuul quickstart

This commit is contained in:
Monty Taylor 2018-12-24 17:21:15 +00:00
parent 6c866e5f77
commit 2249c43bba
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
2 changed files with 55 additions and 424 deletions

View File

@ -69,72 +69,28 @@
<span class="titledate">2010-present</span>
</h3>
<div class="job">
<p>OpenStack Technical Committee Member</p>
<p class="jobskillslist">2012-present</p>
<ul>
<li>Oversee technical governance of the OpenStack project.</li>
</ul>
</div>
<div class="job">
<p>OpenStack Foundation Board of Directors Individual Member</p>
<p class="jobskillslist">2012-2016</p>
<ul>
<li>Oversaw business, legal and branding concerns
representing the Individual Members of the Foundation.</li>
</ul>
</div>
<div class="job">
<p>OpenStack Project Policy Board Member</p>
<p class="jobskillslist">2011-2012</p>
<ul>
<li>Oversaw overall governance of OpenStack in the days before the
Foundation was established.</li>
</ul>
</div>
<div class="job">
<p>OpenStack Infra</p>
<p class="jobtitle">Founder, PTL Emeritus, Core Team Member</p>
<p class="jobskillslist">2010-present</p>
<ul>
<li>Founded the OpenStack Infra team, responsible for development,
operation and scaling of all of the support systems for OpenStack.</li>
<li>Built world's largest Open Source CI infrastructure, supporting 2500
developers world wide, landing 10k changes per month and consuming
approximately 20k cloud servers per day.</li>
<li>Oversaw the creation of Zuul, Nodepool, Storyboard, git-review, pbr,
elastic-recheck and countless other systems</li>
<li>Wrote shade and os-client-config libraries to drive multi-cloud
interoperability and orchestration.</li>
<li>Ansible core developer and owner of OpenStack and Puppet modules</li>
</ul>
</div>
<div class="job">
<p>Red Hat</p>
<p class="jobtitle">
Member of Technical Staff, Office of Technology: Dallas, TX</p>
Member of Technical Staff, Office of the CTO: Dallas, TX</p>
<p class="jobskillslist">2016-present</p>
<ul>
<li>Driving strategy related to CI/CD.</li>
<li>Leading development team focused on Zuul. Specifically focused on
delivering the Ansible-based Zuul v3 to allow for richer multi-node
testing and reduction of difference between testing and production.</li>
<li>Facilitating multi-cloud OpenStack efforts through Shade project.</li>
<li>Facilitating multi-cloud OpenStack efforts through openstacksdk project.</li>
</ul>
</div>
<div class="job">
<p>NYU</p>
<p class="jobtitle">Adjunct Professor, ITP: New York, NY</p>
<p class="jobskillslist">2016</p>
<p>OpenStack Foundation Board of Directors</p>
<p class="jobtitle">Individual Member</p>
<p class="jobskillslist">2012-2016,2018-present</p>
<ul>
<li>Taught course on "Lighting Without the Board" - focusing on custom
programmatic control of lighting and overview of lighting design.</li>
<li>Guest lectures on Privacy in the Digitial Age.</li>
<li>Oversaw business, legal and branding concerns
representing the Individual Members of the Foundation.</li>
</ul>
</div>
@ -168,6 +124,7 @@
<li>Oversaw the creation of TripleO, which was the basis of HP Helion and
is now the foundation of Red Hat's OpenStack product line.</li>
<li>Oversaw the creation of Ironic and Bifrost.</li>
<li>Oversaw the creation of Zuul</li>
<li>Oversaw the stabalization of Keystone.</li>
<li>Staffed and led the OpenStack Infra team singlehandedly. Grew community
consensus of the need for broader staffing and succeeded in achieving
@ -175,6 +132,53 @@
</ul>
</div>
<div class="job">
<p>OpenDev</p>
<p class="jobtitle">Founder, Core Team Member</p>
<p class="jobskillslist">2010-present</p>
<ul>
<li>Founded the OpenStack Infrastructure team, responsible for development,
operation and scaling of all of the support systems for OpenStack.</li>
<li>Built world's largest Open Source CI infrastructure, supporting 2500
developers world wide, landing 10k changes per month and consuming
approximately 20k cloud servers per day.</li>
<li>Oversaw the creation of Zuul, Nodepool, Storyboard, git-review, pbr,
elastic-recheck and countless other systems</li>
<li>Wrote shade and os-client-config libraries to drive multi-cloud
interoperability and orchestration.</li>
<li>Ansible core developer and owner of OpenStack and Puppet modules</li>
</ul>
</div>
<div class="job">
<p>OpenStack Technical Committee Member</p>
<p class="jobskillslist">2012-2017</p>
<ul>
<li>Oversaw technical governance of the OpenStack project.</li>
<li>Grew project and organization from 50 to 2500 contributors.</li>
</ul>
</div>
<div class="job">
<p>OpenStack Project Policy Board Member</p>
<p class="jobskillslist">2011-2012</p>
<ul>
<li>Oversaw overall governance of OpenStack in the days before the
Foundation was established.</li>
</ul>
</div>
<div class="job">
<p>NYU</p>
<p class="jobtitle">Adjunct Professor, ITP: New York, NY</p>
<p class="jobskillslist">2016</p>
<ul>
<li>Taught course on "Lighting Without the Board" - focusing on custom
programmatic control of lighting and overview of lighting design.</li>
<li>Guest lectures on Privacy in the Digitial Age.</li>
</ul>
</div>
<div class="job">
<p>Rackspace Cloud</p>
<p class="jobtitle">System Architect: New York, NY</p>

View File

@ -25,13 +25,6 @@ Zuul
.. hidetitle::
.. ansi:: images/title.ans
Monty Taylor
============
* @e_monty
* freenode:mordred
* mordred@inaugust.com
Red Hat
=======
.. hidetitle::
@ -881,372 +874,6 @@ Questions
.. ansi:: images/questions.ans
Quick Start Prereq
==================
* Install docker, docker-compose, git-review
Debian/Ubuntu:
::
sudo apt-get install docker-compose git git-review
RHEL / CentOS / Fedora:
::
sudo yum install docker docker-compose git git-review
OpenSuse:
::
sudo zypper install docker docker-compose git git-review
RHEL / CentOS / Fedora / OpenSuse
::
sudo systemctl enable docker.service
sudo systemctl start docker.service
Actual Quick Start
==================
* git clone https://git.zuul-ci.org/zuul
* cd zuul
* cd doc/source/admin/examples
* docker-compose up
What's Running
==============
* Zookeeper
* Gerrit
* Nodepool Launcher
* Zuul Scheduler
* Zuul Web Server
* Zuul Executor
* Apache HTTPD
* A container to use as a 'static' build node
How they're connected
=====================
* End Users talk to Gerrit and Apache HTTPD
* Zuul Scheduler talks to Gerrit
* Nodepool Launcher, Zuul Scheduler, Zuul Web talk to Zookeeper
* Zuul Executor talks to Zuul Scheduler (using Gearman)
Initial provided config
=======================
* docker-compose has plumbed in basic config ``etc_zuul/zuul.conf``
and ``etc_zuul/main.yaml``
* Gerrit Connection named "gerrit"
* Zuul user for that connection
* Git connection named "zuul-ci.org" for ``zuul-jobs`` standard library
Initial tenant
==============
* Zuul is (always) multi-tenant
* Example config contains a tenant called ``example-tenant``
* Three projects in the ``example-tenant`` tenant:
``zuul-config``, ``test1``, ``test2``
* Three projects are also in gerrit ready to use
zuul.conf
=========
::
[gearman]
server=scheduler
[gearman_server]
start=true
[zookeeper]
hosts=zk
[scheduler]
tenant_config=/etc/zuul/main.yaml
[web]
listen_address=0.0.0.0
[executor]
private_key_file=/var/ssh/nodepool
default_username=root
zuul.conf part 2
================
::
[connection "gerrit"]
name=gerrit
driver=gerrit
server=gerrit
sshkey=/var/ssh/zuul
user=zuul
password=secret
baseurl=http://gerrit:8080
auth_type=basic
[connection "zuul-ci.org"]
name=zuul-ci
driver=git
baseurl=https://git.zuul-ci.org/
main.yaml
=========
::
- tenant:
name: example-tenant
source:
gerrit:
config-projects:
- zuul-config
untrusted-projects:
- test1
- test2
zuul-ci.org:
untrusted-projects:
- zuul-jobs:
include:
- job
Gerrit Account
==============
* Need a user account to interact with Gerrit
* Gerrit is configured in dev mode - no passwords required
* Visit http://localhost:8080
* Click "Become"
* Click "New Account"
* Click "Register"
* Enter Full Name
* Click "Save Changes"
* Enter username in Username field (match your local laptop user)
* Copy ``~/.ssh/id_rsa.pub`` contents into SSH Key field
* Click Continue
Config Repo
===========
* ``zuul-config`` is a trusted ``config-repo``
* Security and functionality of system depend on this repo
* Limit its contents to minimum required
Config Files vs. Directories
============================
* Zuul reads config from:
``.zuul.yaml``, ``zuul.yaml``, ``zuul.d`` or ``.zuul.d``
* For projects with substantial zuul config, like ``zuul-config``
``zuul.d`` directory is likely best.
* The directories are read run-parts style.
* Recommended practice is splitting by type of object
Setting up Gating
=================
* We want to have changes to ``zuul-config`` be gated
* We need to define pipelines: ``check`` and ``gate``
* Need to attach ``zuul-config`` to them
* Start with builtin ``noop`` job (always return success)
* Use regex to attach all projects to ``check`` and ``gate``
Pipeline Definitions
====================
* Zuul has no built-in workflow definitions, let's add ``check`` and ``gate``
check pipeline
==============
::
- pipeline:
name: check
description: |
Newly uploaded patchsets enter this pipeline to receive an
initial +/-1 Verified vote.
manager: independent
require:
gerrit:
open: True
current-patchset: True
trigger:
gerrit:
- event: patchset-created
- event: change-restored
success:
gerrit:
Verified: 1
failure:
gerrit:
Verified: -1
gate pipeline
=============
::
- pipeline:
name: gate
description: |
Changes that have been approved are enqueued in order in this
pipeline, and if they pass tests, will be merged.
manager: dependent
post-review: True
require:
gerrit:
open: True
current-patchset: True
approval:
- Workflow: 1
trigger:
gerrit:
- event: comment-added
approval:
- Workflow: 1
start:
gerrit:
Verified: 0
success:
gerrit:
Verified: 2
submit: true
failure:
gerrit:
Verified: -2
Add the pipeline definitions
============================
.. code-block:: bash
git clone http://localhost:8080/zuul-config
cd zuul-config
mkdir zuul.d
cp ../examples/zuul-config/zuul.d/pipelines.yaml .
Shared Project Pipeline Definition
==================================
In ``examples/zuul-config/zuul.d/projects.yaml``
.. code-block:: yaml
- project:
name: ^.*$
check:
jobs: []
gate:
jobs: []
- project:
name: zuul-config
check:
jobs:
- noop
gate:
jobs:
- noop
Attach the projects to the pipelines
====================================
.. code-block:: bash
cp ../examples/zuul-config/zuul.d/projects.yaml .
Commit the changes and push up for review
=========================================
.. code-block:: bash
git add zuul.d
git commit
git review
Force merging bootstrap config
==============================
* Zuul is running with no config, so it won't do anything
* For this change (and this change only) we will bypass gating
Reviewing normally
==================
* visit http://localhost:8080/#/c/zuul-config/+/1001/
* click reply
* vote +2 Code Review +1 Approved
Verified +2 is Missing
======================
Verified +2 is what we have zuul configured to do.
::
success:
gerrit:
Verified: 2
submit: true
Bypassing Gating
================
* visit http://localhost:8080/
* click 'switch account'
* click 'admin'
* visit http://localhost:8080/#/c/zuul-config/+/1001/
* click reply
* vote +2 Verified (normal users do not see this)
* click submit (normal users do not see this)
* click 'switch account'
* click your username
Base Job
========
* Every Zuul installation must define a ``base`` job
* Push git repos to build node
* Publish logs/artifacts
* Any local specific setup
* Goes in config repo - because it impacts EVERY job
Add Base Job to zuul-config
===========================
::
cp ../examples/zuul-config/zuul.d/jobs.yaml .
git add jobs.yaml
git commit
git review
Then go to http://localhost:8080/#/c/zuul-config/+/1002/ and approve it
Zuul should merge the patch
===========================
zuul-config is configured to use the ``noop`` job
Zuul tests syntax automatically
===============================
* Edit jobs.yaml
* Change ``parent: null`` to ``parent: broken``
* git commit ; git review
* Check out the review in gerrit ... there should be errors!
Presentty
=========
.. hidetitle::