Update zuul quickstart
This commit is contained in:
parent
6c866e5f77
commit
2249c43bba
106
src/resume.html
106
src/resume.html
|
@ -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>
|
||||
|
|
|
@ -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::
|
||||
|
|
Loading…
Reference in New Issue