SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Zuul, the Third
Throws Away Any Dirt!
Piotr Bielak
piotrbielak2@gmail.com
Szymon Datko
szymon.datko@corp.ovh.com
12th June 2019
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 1 / 43
About us
Piotr Bielak
Passionate Python dev
Clean code enthusiast
Data Science student
Szymon Datko
DevOps & local Bash wizard
Open Source software lover
makepkg, not war
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 2 / 43
We already talked about Jenkins - twice!
https://www.youtube.com/watch?v=T7rD--ZOYRQ
https://www.youtube.com/watch?v=nvgeXkE65ac
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 3 / 43
Recently we met a new friend
"Zuule w taxi ... sezamki!"
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 4 / 43
What Zuul is not?
There is a name conflict we have to deal with... (OpenStack’s Zuul: May 2012)
So, in this presentation we are not talking about:
• "... a gateway service that provides dynamic routing,
monitoring, resiliency, security, and more."
• by Netflix,
• on GitHub since March 2012;
• "... an easy way to test your javascript in browsers."
• by Roman Shtylman / defunctzombie,
• on GitHub since December 2012.
Images sources:
https://onlyfullstack.blogspot.com/2018/09/microservices-with-zuul-gateway29.html,
https://commons.wikimedia.org/wiki/File:Unofficial_JavaScript_logo_2.svg.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 5 / 43
What Zuul is not?
Also it is neither an username, nor dinosaur Zuul crurivastator.
Images sources:
https://ghostbusters.fandom.com/wiki/Zuul,
https://www.sciencemag.org/news/2017/05/demon-faced-dinosaur-named-after-ghostbusters-baddie.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 6 / 43
What Zuul is?
• Mainly: a project gating system.
• Currently a continuous integration,
delivery and deployment system.
• Drives one of the largest CI system
in the open source world – OpenStack!
• Support for inter-projects dependencies.
Sources:
https://zuul-ci.org/users.html,
https://sdtimes.com/cicd/cicd-platform-zuul-version-3-released/.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 7 / 43
A bit of history...
"Gating is a process where every change, after passing code review,
is automatically tested and merged only if it passes the test suite."
James Blair, "How OpenStack Improves Code Quality with Project Gating and Zuul"
• ∼ 2010:
• OpenStack is born; Jenkins used for tests and gating.
• ∼ 2012:
• Zuul comes to life as a coordinator of Jenkins jobs.
• Goal: parallelize the serial testing (speculative execution).
• ∼ 2016:
• first ideas of replacing Jenkins with Ansible-based execution system.
• ∼ 2018:
• Zuul v3 finally released!
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 8 / 43
What Zuul can do?
Key features:
• jobs defined as pipelines (YAML files) in git repository,
• Ansible-based executor – launches your jobs anywhere,
• integrates with Gerrit and GitHub systems,
• cross-project and cross-repository-system
dependencies mechanism,
• speculative execution for fast and safe
automated merging of code,
• pretty scalable* architecture.
* - except for Scheduler; we will come back to this later.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 9 / 43
Zuul in typical environment
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 10 / 43
System’s architecture
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 11 / 43
System’s architecture ⇒ Zuul Scheduler
SCHEDULER
• Primary decision component of Zuul.
• Currently not scalable at all (one at a time!).
• Utilizes Gearman server for communication:
• Zuul includes own implementation of Gearman,
• external Gearman server can be used,
• forcing SSL is strongly recommended.
• Must be connected to ZooKeeper to request
nodes – however, does not connect to them!
• Receives events from code review system, then
enqueues into pipelines and distributes jobs.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 12 / 43
System’s architecture ⇒ Zuul Executor
EXECUTOR
• Responsible for running jobs.
• At the start of each job:
• prepares the environment, using Ansible Roles,
• checkouts the proper projects/branches,
• creates Ansible inventory file.
• Must be able to connect to:
• Gearman server,
• Code Review System,
• hosts provided by Nodepool.
• Contains also the Merger capabilities.
• Secures contexts using bubblewrap
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 13 / 43
System’s architecture ⇒ Zuul Merger
MERGER
• Optional component:
• not necessary in small deployments,
• highly recommended for large installations.
• Exists to reduce the load on Zuul Executors.
• Performs a lof of git operations (speculative
merges), which can be time consuming.
• Needs an access to:
• Gearman server,
• Code Review System.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 14 / 43
System’s architecture ⇒ Zuul Finger Gateway
FINGER
GATEWAY
• Listens for Finger protocol requests.
• Finds which Executor is running a desired build.
• Returns a log stream from executor.
• Needs an access to:
• Gearman server,
• console streaming port on the Executor.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 15 / 43
System’s architecture ⇒ Zuul Web
WEB
• Web-based interface to interact with Zuul.
• Simple, single-process application.
• Written in ReactJS.
• Provides:
• websockets for live log streaming,
• the REST API,
• HTML dashboard (GUI).
• Must have a connection to Gearman.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 16 / 43
System’s architecture ⇒ Nodepool
NODEPOOL
• Manages hosts nodes for tests executors.
• Actually, a set of many tools.
• May launch single-use nodes on demand.
• Capable of caching and provisioning pre-defined
pre-existing nodes (e.g. daily DevStack build).
• Supported drivers for cloud providers:
• static,
• OpenStack,
• Kubernetes,
• OpenShift,
• AWS EC2.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 17 / 43
How does Zuul work? (1/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 18 / 43
How does Zuul work? (2/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 19 / 43
How does Zuul work? (3/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 20 / 43
How does Zuul work? (4/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 21 / 43
How does Zuul work? (5/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 22 / 43
How does Zuul work? (6/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 23 / 43
How does Zuul work? (7/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 24 / 43
How does Zuul work? (8/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 25 / 43
How does Zuul work? (9/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 26 / 43
How does Zuul work? (10/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 27 / 43
How does Zuul work? (11/11)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 28 / 43
Pipeline types
Type Case
check on change upload (unit, integration tests), Verified ±1
gate before a change is merged, last final verification
post after change has been merged
periodic once a while, every specified time
experimental unstable tests, experimental features
silent
_
_(
")
)_/
_
pre-release when a new pre-release tag uploded
release when a changed is marked as a release
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 29 / 43
Configuration (1/2)
Zuul recognizes two types of projects:
• config projects – adjust global behaviour, templates, etc.,
• untrusted projects – any regular repository to test.
Zuul will read its configuration from any of:
• zuul.d/ directory,
• .zuul.d/ directory,
• zuul.yaml file,
• .zuul.yaml file.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 30 / 43
Configuration (2/2)
#
# Example: https://github.com/openstack/nova/blob/master/.zuul.yaml
#
- job:
name: nova-live-migration
parent: nova-dsvm-multinode-base
description: |
Run tempest live migration tests against both local storage and (...)
run: playbooks/legacy/nova-live-migration/run.yaml
post-run: playbooks/legacy/nova-live-migration/post.yaml
(...)
(...)
- project:
templates:
- check-requirements
- integrated-gate-py3
(...)
check:
jobs:
- ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa:
voting: false
- nova-grenade-live-migration
- nova-live-migration
(...)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 31 / 43
Quick start (1/4)
1 Install prerequisites
1| sudo apt-get install docker-compose git python3-pip
2| sudo python3 -m pip install git-review
2 Get the source code
1| git clone https://opendev.org/zuul/zuul
3 Start the containers
1| cd zuul/doc/source/admin/examples
2| sudo -E docker-compose up
Based on: https://zuul-ci.org/docs/zuul/admin/quick-start.html (12th June 2019).
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 32 / 43
Quick start (2/4)
Results:
• started services:
• Zookeeper,
• Gerrit,
• Nodepool,
• Zuul Scheduler,
• Zuul Web Server,
• Zuul Executor,
• Apache HTTPD.
• Gerrit API/SSH: localhost:29418
• Gerrit HTTP: http://localhost:8080/
• Zuul Web: http://localhost:9000/
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 33 / 43
Quick start (3/4)
4 In Gerrit: add new user and configure it, e.g. set e-mail and SSH key.
5 Clone the zuul-config repo and set basic Zuul configuration (as user):
1| git clone http://localhost:8080/zuul-config
2| cd zuul-config && mkdir zuul.d
3| vim -p zuul.d/{jobs.yaml,pipelines.yaml,projects.yaml}
4| git add zuul.d && git commit -m 'init' && git review
6 In Gerrit: merge the new configuration (as admin).
7 Clone the test1 repo and define new test job (as user):
1| git clone http://localhost:8080/test1
2| cd test1 && mkdir playbooks
3| vim -p playbooks/testjob.yaml .zuul.yaml
4| git add . && git commit -m 'basic tests' && git review
8 In Gerrit and Zuul: observe what happened :-)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 34 / 43
Quick start (4/4)
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 35 / 43
Qucik start – supplement: jobs.yaml and projects.yaml
1| #
2| # Example for quick start step 5:
3| # jobs.yaml
4| #
5| - job:
6| name: base
7| parent: null
8| nodeset:
9| nodes:
10| - name: ubuntu-bionic
11| label: ubuntu-bionic
1| #
2| # Example for quick start step 5:
3| # projects.yaml
4| #
5| - project:
6| name: ^.*$
7| check:
8| jobs: []
9| gate:
10| jobs: []
11|
12| - project:
13| name: zuul-config
14| check:
15| jobs:
16| - noop
17| gate:
18| jobs:
19| - noop
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 36 / 43
Qucik start – supplement: pipelines.yaml (1/2)
1| #
2| # Example for quick start step 5: pipelines.yaml
3| #
4| - pipeline:
5| name: check
6| description: |
7| Newly uploaded patchsets enter this pipeline to receive an
8| initial +/-1 Verified vote.
9| manager: independent
10| require:
11| gerrit:
12| open: True
13| current-patchset: True
14| trigger:
15| gerrit:
16| - event: patchset-created
17| - event: change-restored
18| - event: comment-added
19| comment: (?i)^(Patch Set [0-9]+:)?( [w+-]*)*(nn)?s*recheck
20| success:
21| gerrit:
22| Verified: 1
23| mysql:
24| failure:
25| gerrit:
26| Verified: -1
27| mysql:
28|
29| (...)
30| # Continuation on next slide
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 37 / 43
Qucik start – supplement: pipelines.yaml (2/2)
31| (...)
32| - pipeline:
33| name: gate
34| description: |
35| Changes that have been approved are enqueued in order in this
36| pipeline, and if they pass tests, will be merged.
37| manager: dependent
38| post-review: True
39| require:
40| gerrit:
41| open: True
42| current-patchset: True
43| approval:
44| - Workflow: 1
45| trigger:
46| gerrit:
47| - event: comment-added
48| approval:
49| - Workflow: 1
50| start:
51| gerrit:
52| Verified: 0
53| success:
54| gerrit:
55| Verified: 2
56| submit: true
57| mysql:
58| failure:
59| gerrit:
60| Verified: -2
61| mysql:
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 38 / 43
Qucik start – supplement: testjob.yaml and .zuul.yaml
1| #
2| # Example for quick start step 7: playbooks/testjob.yaml
3| #
4| - hosts: all
5| tasks:
6| - debug:
7| msg: Hello world!
1| #
2| # Example for quick start step 7: .zuul.yaml
3| #
4| - job:
5| name: testjob
6| run: playbooks/testjob.yaml
7|
8| - project:
9| check:
10| jobs:
11| - testjob
12| gate:
13| jobs:
14| - testjob
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 39 / 43
Zuul versus rest of the world...
Zuul:
• has much more complex architecture to set up,
• is specialized and oriented for the specific job,
• supports cross-project and cross-repository dependencies,
• keeps all the configuration in source code repository,
• reacts only to defined events in source code repository manager.
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 40 / 43
Where to begin?
Official web site: https://zuul-ci.org/
• user: https://zuul-ci.org/docs/zuul/user/index.html
• admin: https://zuul-ci.org/docs/zuul/admin/index.html
• dev: https://zuul-ci.org/docs/zuul/developer/index.html
Packages:
• https://pypi.org/project/zuul/
• https://pypi.org/project/nodepool/
Source code:
• https://opendev.org/zuul/zuul
• https://opendev.org/zuul/nodepool
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 41 / 43
Thank you for your attention!
The slides are available: http://datko.pl/zuul.pdf
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 42 / 43
Zuul, the Third
Throws Away Any Dirt!
Piotr Bielak
piotrbielak2@gmail.com
Szymon Datko
szymon.datko@corp.ovh.com
12th June 2019
P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 43 / 43

Mais conteúdo relacionado

Semelhante a Zuul, The Thirth - Szymon Datko i Piotr Bielak

Multi-node ZUUL OpenStack gate for bare metal and Docker
Multi-node ZUUL OpenStack gate for bare metal and DockerMulti-node ZUUL OpenStack gate for bare metal and Docker
Multi-node ZUUL OpenStack gate for bare metal and DockerVikram G Hosakote
 
GRP 19 - Nautilus, IceCube and LIGO
GRP 19 - Nautilus, IceCube and LIGOGRP 19 - Nautilus, IceCube and LIGO
GRP 19 - Nautilus, IceCube and LIGOIgor Sfiligoi
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectYen-Chin Lee
 
Getting Started with Buildroot - Lab
Getting Started with Buildroot - LabGetting Started with Buildroot - Lab
Getting Started with Buildroot - LabTrevor Woerner
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Jian-Hong Pan
 
BiVeS & BudHat: Invited Talk @ IPK Gatersleben
BiVeS & BudHat: Invited Talk @ IPK GaterslebenBiVeS & BudHat: Invited Talk @ IPK Gatersleben
BiVeS & BudHat: Invited Talk @ IPK GaterslebenMartin Scharm
 
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用Shengyou Fan
 
How Splunk Is Using Pulsar IO
How Splunk Is Using Pulsar IOHow Splunk Is Using Pulsar IO
How Splunk Is Using Pulsar IOStreamNative
 

Semelhante a Zuul, The Thirth - Szymon Datko i Piotr Bielak (11)

Infrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / PuppetInfrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / Puppet
 
Multi-node ZUUL OpenStack gate for bare metal and Docker
Multi-node ZUUL OpenStack gate for bare metal and DockerMulti-node ZUUL OpenStack gate for bare metal and Docker
Multi-node ZUUL OpenStack gate for bare metal and Docker
 
GRP 19 - Nautilus, IceCube and LIGO
GRP 19 - Nautilus, IceCube and LIGOGRP 19 - Nautilus, IceCube and LIGO
GRP 19 - Nautilus, IceCube and LIGO
 
Jive 7 Feature Overview
Jive 7 Feature OverviewJive 7 Feature Overview
Jive 7 Feature Overview
 
Build your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto projectBuild your own embedded linux distributions by yocto project
Build your own embedded linux distributions by yocto project
 
Getting Started with Buildroot - Lab
Getting Started with Buildroot - LabGetting Started with Buildroot - Lab
Getting Started with Buildroot - Lab
 
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
Package a PyApp as a Flatpak Package: An HTTP Server for Example @ PyCon APAC...
 
Rock Overview
Rock OverviewRock Overview
Rock Overview
 
BiVeS & BudHat: Invited Talk @ IPK Gatersleben
BiVeS & BudHat: Invited Talk @ IPK GaterslebenBiVeS & BudHat: Invited Talk @ IPK Gatersleben
BiVeS & BudHat: Invited Talk @ IPK Gatersleben
 
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
通过 Ktor 迅速打造以 Kotlin 为核心的后端服务应用
 
How Splunk Is Using Pulsar IO
How Splunk Is Using Pulsar IOHow Splunk Is Using Pulsar IO
How Splunk Is Using Pulsar IO
 

Mais de OpenInfra Days Poland 2019

Thierry carrez openly developing open infrastructure
Thierry carrez   openly developing open infrastructureThierry carrez   openly developing open infrastructure
Thierry carrez openly developing open infrastructureOpenInfra Days Poland 2019
 
Learning to fly with Airship - Simon Briggs, SUSE
Learning to fly with Airship - Simon Briggs, SUSELearning to fly with Airship - Simon Briggs, SUSE
Learning to fly with Airship - Simon Briggs, SUSEOpenInfra Days Poland 2019
 
Open coud networking at full speed - Avi Alkobi
Open coud networking at full speed - Avi AlkobiOpen coud networking at full speed - Avi Alkobi
Open coud networking at full speed - Avi AlkobiOpenInfra Days Poland 2019
 
Kenneth Tan - Product fishos openstack kubernetes resource management
Kenneth Tan - Product fishos openstack kubernetes resource managementKenneth Tan - Product fishos openstack kubernetes resource management
Kenneth Tan - Product fishos openstack kubernetes resource managementOpenInfra Days Poland 2019
 
Kaimar karu - The Real Promise of AI Beyond The Hype
Kaimar karu - The Real Promise of AI Beyond The HypeKaimar karu - The Real Promise of AI Beyond The Hype
Kaimar karu - The Real Promise of AI Beyond The HypeOpenInfra Days Poland 2019
 
Introduction to open virtual network Dawid Deja
Introduction to open virtual network  Dawid DejaIntroduction to open virtual network  Dawid Deja
Introduction to open virtual network Dawid DejaOpenInfra Days Poland 2019
 
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSE
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSEPractical aspects of kubernetes cloud provider integration - Michał Jura, SUSE
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSEOpenInfra Days Poland 2019
 

Mais de OpenInfra Days Poland 2019 (10)

Thierry carrez openly developing open infrastructure
Thierry carrez   openly developing open infrastructureThierry carrez   openly developing open infrastructure
Thierry carrez openly developing open infrastructure
 
Keynote: Evolve or die - Simon Briggs, SUSE
Keynote: Evolve or die - Simon Briggs, SUSEKeynote: Evolve or die - Simon Briggs, SUSE
Keynote: Evolve or die - Simon Briggs, SUSE
 
Learning to fly with Airship - Simon Briggs, SUSE
Learning to fly with Airship - Simon Briggs, SUSELearning to fly with Airship - Simon Briggs, SUSE
Learning to fly with Airship - Simon Briggs, SUSE
 
Roman Gorshunov - Airship project onboarding
Roman Gorshunov - Airship project onboardingRoman Gorshunov - Airship project onboarding
Roman Gorshunov - Airship project onboarding
 
Open coud networking at full speed - Avi Alkobi
Open coud networking at full speed - Avi AlkobiOpen coud networking at full speed - Avi Alkobi
Open coud networking at full speed - Avi Alkobi
 
Kenneth Tan - Product fishos openstack kubernetes resource management
Kenneth Tan - Product fishos openstack kubernetes resource managementKenneth Tan - Product fishos openstack kubernetes resource management
Kenneth Tan - Product fishos openstack kubernetes resource management
 
Kenneth Tan - Clouds, Toys, and Production
Kenneth Tan - Clouds, Toys, and ProductionKenneth Tan - Clouds, Toys, and Production
Kenneth Tan - Clouds, Toys, and Production
 
Kaimar karu - The Real Promise of AI Beyond The Hype
Kaimar karu - The Real Promise of AI Beyond The HypeKaimar karu - The Real Promise of AI Beyond The Hype
Kaimar karu - The Real Promise of AI Beyond The Hype
 
Introduction to open virtual network Dawid Deja
Introduction to open virtual network  Dawid DejaIntroduction to open virtual network  Dawid Deja
Introduction to open virtual network Dawid Deja
 
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSE
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSEPractical aspects of kubernetes cloud provider integration - Michał Jura, SUSE
Practical aspects of kubernetes cloud provider integration - Michał Jura, SUSE
 

Último

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 

Último (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 

Zuul, The Thirth - Szymon Datko i Piotr Bielak

  • 1. Zuul, the Third Throws Away Any Dirt! Piotr Bielak piotrbielak2@gmail.com Szymon Datko szymon.datko@corp.ovh.com 12th June 2019 P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 1 / 43
  • 2. About us Piotr Bielak Passionate Python dev Clean code enthusiast Data Science student Szymon Datko DevOps & local Bash wizard Open Source software lover makepkg, not war P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 2 / 43
  • 3. We already talked about Jenkins - twice! https://www.youtube.com/watch?v=T7rD--ZOYRQ https://www.youtube.com/watch?v=nvgeXkE65ac P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 3 / 43
  • 4. Recently we met a new friend "Zuule w taxi ... sezamki!" P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 4 / 43
  • 5. What Zuul is not? There is a name conflict we have to deal with... (OpenStack’s Zuul: May 2012) So, in this presentation we are not talking about: • "... a gateway service that provides dynamic routing, monitoring, resiliency, security, and more." • by Netflix, • on GitHub since March 2012; • "... an easy way to test your javascript in browsers." • by Roman Shtylman / defunctzombie, • on GitHub since December 2012. Images sources: https://onlyfullstack.blogspot.com/2018/09/microservices-with-zuul-gateway29.html, https://commons.wikimedia.org/wiki/File:Unofficial_JavaScript_logo_2.svg. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 5 / 43
  • 6. What Zuul is not? Also it is neither an username, nor dinosaur Zuul crurivastator. Images sources: https://ghostbusters.fandom.com/wiki/Zuul, https://www.sciencemag.org/news/2017/05/demon-faced-dinosaur-named-after-ghostbusters-baddie. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 6 / 43
  • 7. What Zuul is? • Mainly: a project gating system. • Currently a continuous integration, delivery and deployment system. • Drives one of the largest CI system in the open source world – OpenStack! • Support for inter-projects dependencies. Sources: https://zuul-ci.org/users.html, https://sdtimes.com/cicd/cicd-platform-zuul-version-3-released/. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 7 / 43
  • 8. A bit of history... "Gating is a process where every change, after passing code review, is automatically tested and merged only if it passes the test suite." James Blair, "How OpenStack Improves Code Quality with Project Gating and Zuul" • ∼ 2010: • OpenStack is born; Jenkins used for tests and gating. • ∼ 2012: • Zuul comes to life as a coordinator of Jenkins jobs. • Goal: parallelize the serial testing (speculative execution). • ∼ 2016: • first ideas of replacing Jenkins with Ansible-based execution system. • ∼ 2018: • Zuul v3 finally released! P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 8 / 43
  • 9. What Zuul can do? Key features: • jobs defined as pipelines (YAML files) in git repository, • Ansible-based executor – launches your jobs anywhere, • integrates with Gerrit and GitHub systems, • cross-project and cross-repository-system dependencies mechanism, • speculative execution for fast and safe automated merging of code, • pretty scalable* architecture. * - except for Scheduler; we will come back to this later. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 9 / 43
  • 10. Zuul in typical environment P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 10 / 43
  • 11. System’s architecture P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 11 / 43
  • 12. System’s architecture ⇒ Zuul Scheduler SCHEDULER • Primary decision component of Zuul. • Currently not scalable at all (one at a time!). • Utilizes Gearman server for communication: • Zuul includes own implementation of Gearman, • external Gearman server can be used, • forcing SSL is strongly recommended. • Must be connected to ZooKeeper to request nodes – however, does not connect to them! • Receives events from code review system, then enqueues into pipelines and distributes jobs. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 12 / 43
  • 13. System’s architecture ⇒ Zuul Executor EXECUTOR • Responsible for running jobs. • At the start of each job: • prepares the environment, using Ansible Roles, • checkouts the proper projects/branches, • creates Ansible inventory file. • Must be able to connect to: • Gearman server, • Code Review System, • hosts provided by Nodepool. • Contains also the Merger capabilities. • Secures contexts using bubblewrap P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 13 / 43
  • 14. System’s architecture ⇒ Zuul Merger MERGER • Optional component: • not necessary in small deployments, • highly recommended for large installations. • Exists to reduce the load on Zuul Executors. • Performs a lof of git operations (speculative merges), which can be time consuming. • Needs an access to: • Gearman server, • Code Review System. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 14 / 43
  • 15. System’s architecture ⇒ Zuul Finger Gateway FINGER GATEWAY • Listens for Finger protocol requests. • Finds which Executor is running a desired build. • Returns a log stream from executor. • Needs an access to: • Gearman server, • console streaming port on the Executor. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 15 / 43
  • 16. System’s architecture ⇒ Zuul Web WEB • Web-based interface to interact with Zuul. • Simple, single-process application. • Written in ReactJS. • Provides: • websockets for live log streaming, • the REST API, • HTML dashboard (GUI). • Must have a connection to Gearman. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 16 / 43
  • 17. System’s architecture ⇒ Nodepool NODEPOOL • Manages hosts nodes for tests executors. • Actually, a set of many tools. • May launch single-use nodes on demand. • Capable of caching and provisioning pre-defined pre-existing nodes (e.g. daily DevStack build). • Supported drivers for cloud providers: • static, • OpenStack, • Kubernetes, • OpenShift, • AWS EC2. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 17 / 43
  • 18. How does Zuul work? (1/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 18 / 43
  • 19. How does Zuul work? (2/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 19 / 43
  • 20. How does Zuul work? (3/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 20 / 43
  • 21. How does Zuul work? (4/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 21 / 43
  • 22. How does Zuul work? (5/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 22 / 43
  • 23. How does Zuul work? (6/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 23 / 43
  • 24. How does Zuul work? (7/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 24 / 43
  • 25. How does Zuul work? (8/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 25 / 43
  • 26. How does Zuul work? (9/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 26 / 43
  • 27. How does Zuul work? (10/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 27 / 43
  • 28. How does Zuul work? (11/11) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 28 / 43
  • 29. Pipeline types Type Case check on change upload (unit, integration tests), Verified ±1 gate before a change is merged, last final verification post after change has been merged periodic once a while, every specified time experimental unstable tests, experimental features silent _ _( ") )_/ _ pre-release when a new pre-release tag uploded release when a changed is marked as a release P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 29 / 43
  • 30. Configuration (1/2) Zuul recognizes two types of projects: • config projects – adjust global behaviour, templates, etc., • untrusted projects – any regular repository to test. Zuul will read its configuration from any of: • zuul.d/ directory, • .zuul.d/ directory, • zuul.yaml file, • .zuul.yaml file. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 30 / 43
  • 31. Configuration (2/2) # # Example: https://github.com/openstack/nova/blob/master/.zuul.yaml # - job: name: nova-live-migration parent: nova-dsvm-multinode-base description: | Run tempest live migration tests against both local storage and (...) run: playbooks/legacy/nova-live-migration/run.yaml post-run: playbooks/legacy/nova-live-migration/post.yaml (...) (...) - project: templates: - check-requirements - integrated-gate-py3 (...) check: jobs: - ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa: voting: false - nova-grenade-live-migration - nova-live-migration (...) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 31 / 43
  • 32. Quick start (1/4) 1 Install prerequisites 1| sudo apt-get install docker-compose git python3-pip 2| sudo python3 -m pip install git-review 2 Get the source code 1| git clone https://opendev.org/zuul/zuul 3 Start the containers 1| cd zuul/doc/source/admin/examples 2| sudo -E docker-compose up Based on: https://zuul-ci.org/docs/zuul/admin/quick-start.html (12th June 2019). P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 32 / 43
  • 33. Quick start (2/4) Results: • started services: • Zookeeper, • Gerrit, • Nodepool, • Zuul Scheduler, • Zuul Web Server, • Zuul Executor, • Apache HTTPD. • Gerrit API/SSH: localhost:29418 • Gerrit HTTP: http://localhost:8080/ • Zuul Web: http://localhost:9000/ P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 33 / 43
  • 34. Quick start (3/4) 4 In Gerrit: add new user and configure it, e.g. set e-mail and SSH key. 5 Clone the zuul-config repo and set basic Zuul configuration (as user): 1| git clone http://localhost:8080/zuul-config 2| cd zuul-config && mkdir zuul.d 3| vim -p zuul.d/{jobs.yaml,pipelines.yaml,projects.yaml} 4| git add zuul.d && git commit -m 'init' && git review 6 In Gerrit: merge the new configuration (as admin). 7 Clone the test1 repo and define new test job (as user): 1| git clone http://localhost:8080/test1 2| cd test1 && mkdir playbooks 3| vim -p playbooks/testjob.yaml .zuul.yaml 4| git add . && git commit -m 'basic tests' && git review 8 In Gerrit and Zuul: observe what happened :-) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 34 / 43
  • 35. Quick start (4/4) P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 35 / 43
  • 36. Qucik start – supplement: jobs.yaml and projects.yaml 1| # 2| # Example for quick start step 5: 3| # jobs.yaml 4| # 5| - job: 6| name: base 7| parent: null 8| nodeset: 9| nodes: 10| - name: ubuntu-bionic 11| label: ubuntu-bionic 1| # 2| # Example for quick start step 5: 3| # projects.yaml 4| # 5| - project: 6| name: ^.*$ 7| check: 8| jobs: [] 9| gate: 10| jobs: [] 11| 12| - project: 13| name: zuul-config 14| check: 15| jobs: 16| - noop 17| gate: 18| jobs: 19| - noop P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 36 / 43
  • 37. Qucik start – supplement: pipelines.yaml (1/2) 1| # 2| # Example for quick start step 5: pipelines.yaml 3| # 4| - pipeline: 5| name: check 6| description: | 7| Newly uploaded patchsets enter this pipeline to receive an 8| initial +/-1 Verified vote. 9| manager: independent 10| require: 11| gerrit: 12| open: True 13| current-patchset: True 14| trigger: 15| gerrit: 16| - event: patchset-created 17| - event: change-restored 18| - event: comment-added 19| comment: (?i)^(Patch Set [0-9]+:)?( [w+-]*)*(nn)?s*recheck 20| success: 21| gerrit: 22| Verified: 1 23| mysql: 24| failure: 25| gerrit: 26| Verified: -1 27| mysql: 28| 29| (...) 30| # Continuation on next slide P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 37 / 43
  • 38. Qucik start – supplement: pipelines.yaml (2/2) 31| (...) 32| - pipeline: 33| name: gate 34| description: | 35| Changes that have been approved are enqueued in order in this 36| pipeline, and if they pass tests, will be merged. 37| manager: dependent 38| post-review: True 39| require: 40| gerrit: 41| open: True 42| current-patchset: True 43| approval: 44| - Workflow: 1 45| trigger: 46| gerrit: 47| - event: comment-added 48| approval: 49| - Workflow: 1 50| start: 51| gerrit: 52| Verified: 0 53| success: 54| gerrit: 55| Verified: 2 56| submit: true 57| mysql: 58| failure: 59| gerrit: 60| Verified: -2 61| mysql: P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 38 / 43
  • 39. Qucik start – supplement: testjob.yaml and .zuul.yaml 1| # 2| # Example for quick start step 7: playbooks/testjob.yaml 3| # 4| - hosts: all 5| tasks: 6| - debug: 7| msg: Hello world! 1| # 2| # Example for quick start step 7: .zuul.yaml 3| # 4| - job: 5| name: testjob 6| run: playbooks/testjob.yaml 7| 8| - project: 9| check: 10| jobs: 11| - testjob 12| gate: 13| jobs: 14| - testjob P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 39 / 43
  • 40. Zuul versus rest of the world... Zuul: • has much more complex architecture to set up, • is specialized and oriented for the specific job, • supports cross-project and cross-repository dependencies, • keeps all the configuration in source code repository, • reacts only to defined events in source code repository manager. P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 40 / 43
  • 41. Where to begin? Official web site: https://zuul-ci.org/ • user: https://zuul-ci.org/docs/zuul/user/index.html • admin: https://zuul-ci.org/docs/zuul/admin/index.html • dev: https://zuul-ci.org/docs/zuul/developer/index.html Packages: • https://pypi.org/project/zuul/ • https://pypi.org/project/nodepool/ Source code: • https://opendev.org/zuul/zuul • https://opendev.org/zuul/nodepool P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 41 / 43
  • 42. Thank you for your attention! The slides are available: http://datko.pl/zuul.pdf P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 42 / 43
  • 43. Zuul, the Third Throws Away Any Dirt! Piotr Bielak piotrbielak2@gmail.com Szymon Datko szymon.datko@corp.ovh.com 12th June 2019 P. Bielak, Sz. Datko Zuul, the Third - Throws Away Any Dirt! 12th June 2019 43 / 43