Compare commits
No commits in common. "rawhide" and "f33" have entirely different histories.
29 changed files with 1650 additions and 1 deletions
5
.gitignore
vendored
Normal file
5
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
/zuul-3.18.0.tar.gz
|
||||
results_zuul
|
||||
*.rpm
|
||||
/zuul-3.19.0.tar.gz
|
||||
/zuul-3.19.1.tar.gz
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
From 6feb399854ef55a3e43c5a46c56fae487dcd8d28 Mon Sep 17 00:00:00 2001
|
||||
From: Fabien Boucher <fboucher@redhat.com>
|
||||
Date: Tue, 19 May 2020 14:40:51 +0200
|
||||
Subject: [PATCH] Remove another shebang and remove useless exec bits
|
||||
|
||||
Change-Id: Id49bc9a4b50948b1f07e4fa917c93acac0c2a17e
|
||||
---
|
||||
zuul/cmd/__init__.py | 0
|
||||
zuul/cmd/client.py | 0
|
||||
zuul/cmd/executor.py | 0
|
||||
zuul/cmd/merger.py | 5 -----
|
||||
zuul/cmd/scheduler.py | 0
|
||||
zuul/cmd/web.py | 0
|
||||
6 files changed, 5 deletions(-)
|
||||
mode change 100755 => 100644 zuul/cmd/__init__.py
|
||||
mode change 100755 => 100644 zuul/cmd/client.py
|
||||
mode change 100755 => 100644 zuul/cmd/executor.py
|
||||
mode change 100755 => 100644 zuul/cmd/merger.py
|
||||
mode change 100755 => 100644 zuul/cmd/scheduler.py
|
||||
mode change 100755 => 100644 zuul/cmd/web.py
|
||||
|
||||
diff --git a/zuul/cmd/__init__.py b/zuul/cmd/__init__.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
diff --git a/zuul/cmd/client.py b/zuul/cmd/client.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
diff --git a/zuul/cmd/executor.py b/zuul/cmd/executor.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
diff --git a/zuul/cmd/merger.py b/zuul/cmd/merger.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
index 1d4b6fef..9b827427
|
||||
--- a/zuul/cmd/merger.py
|
||||
+++ b/zuul/cmd/merger.py
|
||||
@@ -1,4 +1,3 @@
|
||||
-#!/usr/bin/env python
|
||||
# Copyright 2012 Hewlett-Packard Development Company, L.P.
|
||||
# Copyright 2013-2014 OpenStack Foundation
|
||||
#
|
||||
@@ -69,7 +68,3 @@ class Merger(zuul.cmd.ZuulDaemonApp):
|
||||
|
||||
def main():
|
||||
Merger().main()
|
||||
-
|
||||
-
|
||||
-if __name__ == "__main__":
|
||||
- main()
|
||||
diff --git a/zuul/cmd/scheduler.py b/zuul/cmd/scheduler.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
diff --git a/zuul/cmd/web.py b/zuul/cmd/web.py
|
||||
old mode 100755
|
||||
new mode 100644
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From b27dc5df5dc1617fc2f1d438611b87b3e63383c4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||
Date: Mon, 1 Jun 2020 12:49:07 +0200
|
||||
Subject: [PATCH] Replace deprecated Thread.isAlive() with Thread.is_alive()
|
||||
|
||||
The isAlive() method of threading.Thread has been removed in Python 3.9.
|
||||
The is_alive() method is available on Python 2.6+.
|
||||
|
||||
See https://bugs.python.org/issue37804
|
||||
|
||||
Change-Id: I951b1ae331c3101722fe34babf81d6f82d838380
|
||||
---
|
||||
zuul/ansible/base/library/command.py | 4 ++--
|
||||
zuul/lib/log_streamer.py | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/zuul/ansible/base/library/command.py b/zuul/ansible/base/library/command.py
|
||||
index a3b969d9..0c461b3a 100755
|
||||
--- a/zuul/ansible/base/library/command.py
|
||||
+++ b/zuul/ansible/base/library/command.py
|
||||
@@ -474,7 +474,7 @@ def zuul_run_command(self, args, zuul_log_id, check_rc=False, close_fds=True, ex
|
||||
if t:
|
||||
t.join(10)
|
||||
with Console(zuul_log_id) as console:
|
||||
- if t.isAlive():
|
||||
+ if t.is_alive():
|
||||
console.addLine("[Zuul] standard output/error still open "
|
||||
"after child exited")
|
||||
# ZUUL: stdout and stderr are in the console log file
|
||||
@@ -495,7 +495,7 @@ def zuul_run_command(self, args, zuul_log_id, check_rc=False, close_fds=True, ex
|
||||
finally:
|
||||
if t:
|
||||
with Console(zuul_log_id) as console:
|
||||
- if t.isAlive():
|
||||
+ if t.is_alive():
|
||||
console.addLine("[Zuul] standard output/error still open "
|
||||
"after child exited")
|
||||
if fail_json_kwargs:
|
||||
diff --git a/zuul/lib/log_streamer.py b/zuul/lib/log_streamer.py
|
||||
index 16b72227..9ed124c5 100644
|
||||
--- a/zuul/lib/log_streamer.py
|
||||
+++ b/zuul/lib/log_streamer.py
|
||||
@@ -181,7 +181,7 @@ class LogStreamer(object):
|
||||
raise
|
||||
|
||||
def stop(self):
|
||||
- if self.thd.isAlive():
|
||||
+ if self.thd.is_alive():
|
||||
self.server.shutdown()
|
||||
self.server.server_close()
|
||||
self.thd.join()
|
||||
--
|
||||
2.25.4
|
||||
|
||||
36
0001-Update-cherrypy-and-cheroot-requirement-pinning.patch
Normal file
36
0001-Update-cherrypy-and-cheroot-requirement-pinning.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
From e8935676a8b6db3b29d419d440f9e82b5090a5b2 Mon Sep 17 00:00:00 2001
|
||||
From: Fabien Boucher <fboucher@redhat.com>
|
||||
Date: Mon, 13 Jul 2020 15:32:53 +0000
|
||||
Subject: [PATCH] Update cherrypy and cheroot requirement pinning
|
||||
|
||||
Cheroot 8.3.1 have been released with the https://github.com/cherrypy/cheroot/issues/263
|
||||
fix.
|
||||
|
||||
Change-Id: I83aad30a6145ed2c7689d6c25c624c453c07ed2b
|
||||
---
|
||||
requirements.txt | 7 ++-----
|
||||
1 file changed, 2 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/requirements.txt b/requirements.txt
|
||||
index 78eb980f..829c7606 100644
|
||||
--- a/requirements.txt
|
||||
+++ b/requirements.txt
|
||||
@@ -29,13 +29,10 @@ iso8601
|
||||
psutil
|
||||
fb-re2>=1.0.6
|
||||
paho-mqtt
|
||||
-cherrypy==18.3.0; # last version to support cheroot below
|
||||
+cherrypy
|
||||
ws4py
|
||||
routes
|
||||
pathspec
|
||||
jsonpath-rw
|
||||
urllib3!=1.25.4,!=1.25.5 # https://github.com/urllib3/urllib3/pull/1684
|
||||
-# TODO(tobiash): cheroot 8.1.0 introduced a regression when handling concurrent
|
||||
-# requests. Remove the following line when this issue is resolved:
|
||||
-# https://github.com/cherrypy/cheroot/issues/263
|
||||
-cheroot<8.1.0
|
||||
+cheroot!=8.1.*,!=8.2.*,!=8.3.0 # https://github.com/cherrypy/cheroot/issues/263
|
||||
--
|
||||
2.27.0
|
||||
|
||||
28
0001-requirements-add-explicit-reference-to-dateutil.patch
Normal file
28
0001-requirements-add-explicit-reference-to-dateutil.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
From ea0b50c90d22a2f24b288e1a91e2b85f17059cbc Mon Sep 17 00:00:00 2001
|
||||
From: Tristan Cacqueray <tdecacqu@redhat.com>
|
||||
Date: Mon, 25 May 2020 17:39:59 +0000
|
||||
Subject: [PATCH] requirements: add explicit reference to dateutil
|
||||
|
||||
Zuul is using a dateutil provided transitively. This change
|
||||
makes the requirements explicit.
|
||||
|
||||
Change-Id: I672d409a1bb241e5d199c77acdd51a8260d99ee2
|
||||
---
|
||||
requirements.txt | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/requirements.txt b/requirements.txt
|
||||
index 732aa35a..78eb980f 100644
|
||||
--- a/requirements.txt
|
||||
+++ b/requirements.txt
|
||||
@@ -4,6 +4,7 @@ importlib-resources==1.0.2
|
||||
# Early virtualenv 20 had bad file location assumptions
|
||||
virtualenv!=20.0.0,!=20.0.1,>20
|
||||
|
||||
+python-dateutil
|
||||
github3.py>=1.1.0
|
||||
PyYAML>=3.1.0
|
||||
paramiko>=2.0.1
|
||||
--
|
||||
2.25.4
|
||||
|
||||
279
README.md
Normal file
279
README.md
Normal file
|
|
@ -0,0 +1,279 @@
|
|||
# Getting started with Zuul on Fedora
|
||||
|
||||
## Upstream documentation
|
||||
|
||||
The upstream documentation is available at: https://zuul-ci.org/docs/zuul/index.html
|
||||
|
||||
## Installation
|
||||
|
||||
This section describes the installation process of the minimal set of Zuul components to
|
||||
get a working Zuul deployment. Please refer to the upstream documentation for advanced
|
||||
setup.
|
||||
|
||||
Zuul requires a Web, a Zookeeper and SQL server running. This documentation covers all the step
|
||||
to bootstrap Zuul.
|
||||
|
||||
### Install and setup Zookeeper
|
||||
|
||||
This process describes the minimal steps to get a Zookeeper service running. You
|
||||
should refer to the Zookeeper documentation to get a production setup if needed.
|
||||
|
||||
```
|
||||
$ mkdir /tmp/zookeeper && cd /tmp/zookeeper
|
||||
$ curl -OL https://downloads.apache.org/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
|
||||
$ tar -xvzf apache-zookeeper-3.6.1-bin.tar.gz
|
||||
$ cp apache-zookeeper-3.6.1-bin/conf/zoo_sample.cfg apache-zookeeper-3.6.1-bin/conf/zoo.cfg
|
||||
$ sudo apache-zookeeper-3.6.1-bin/bin/zkServer.sh start
|
||||
```
|
||||
|
||||
### Install and setup postgresql
|
||||
|
||||
This process describes the minimal steps to get a postgres service running. You
|
||||
should refer to the postgrres documentation to get a production setup if needed.
|
||||
|
||||
```
|
||||
$ sudo dnf install -y posgresql python3-psycopg2
|
||||
$ su - postgres
|
||||
$ psql
|
||||
ALTER USER postgres WITH PASSWORD 'mypassword';
|
||||
$ createdb --owner=postgres zuul
|
||||
$ exit
|
||||
```
|
||||
|
||||
Update the local access setting:
|
||||
|
||||
```
|
||||
$ sudo sed -i 's|127.0.0.1/32 ident|127.0.0.1/32 md5|' /var/lib/pgsql/data/pg_hba.conf
|
||||
$ sudo systemctl restart posgreql
|
||||
```
|
||||
|
||||
Validate server connection by running:
|
||||
|
||||
```
|
||||
$ psql -h 127.0.0.1 -U postgres -W zuul
|
||||
```
|
||||
|
||||
### Install Zuul components
|
||||
|
||||
To install the packages run:
|
||||
|
||||
```
|
||||
$ sudo dnf install zuul-scheduler zuul-executor zuul-web zuul-webui
|
||||
```
|
||||
|
||||
### Update the zuul configuration to define the sql connection
|
||||
|
||||
In /etc/zuul/zuul.conf add the following:
|
||||
|
||||
```
|
||||
[connection sqlreporter]
|
||||
driver=sql
|
||||
dburi=postgresql://postgres:mypassword@127.0.0.1:5432/zuul
|
||||
```
|
||||
|
||||
### Setup Ansible virtual environment for the Zuul executor
|
||||
|
||||
The Zuul executor is the component in charge of running Zuul Jobs. A Zuul job is
|
||||
a set of Ansible playbook. The Zuul executor supports multiple version of Ansible.
|
||||
Zuul provides a tool to manage the Ansible virtual environments. To initialize them
|
||||
run:
|
||||
|
||||
```
|
||||
$ sudo -u zuul bash -c "cd && zuul-manage-ansible -u -r /var/lib/zuul/ansible-bin"
|
||||
```
|
||||
|
||||
### Build the Zuul web UI
|
||||
|
||||
The Zuul web UI is a React application. The Zuul packaging provides the source code of
|
||||
the application. The following process describe how to compile the source to get a
|
||||
production build:
|
||||
|
||||
```
|
||||
$ curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
|
||||
$ sudo dnf install yarn
|
||||
$ cd /usr/share/zuul-ui/
|
||||
$ yarn install
|
||||
$ REACT_APP_ZUUL_API='<api_url>' yarn build
|
||||
```
|
||||
|
||||
Replace <api_url> by the URL where the zuul-web API is listening.
|
||||
|
||||
### Start the scheduler and executor
|
||||
|
||||
To do so run:
|
||||
|
||||
```
|
||||
$ sudo -u zuul bash -c "ssh-keygen -t rsa -N '' -f /var/lib/zuul/.ssh/id_rsa"
|
||||
$ sudo systemctl start zuul-scheduler
|
||||
$ sudo systemctl start zuul-executor
|
||||
```
|
||||
|
||||
The services logs are available into /var/log/zuul/zuul.log.
|
||||
|
||||
### Setup the web API
|
||||
|
||||
Install Apache:
|
||||
|
||||
```
|
||||
$ sudo dnf install httpd
|
||||
$ setsebool -P httpd_can_network_connect on
|
||||
```
|
||||
|
||||
Then setup the reverve proxy by adding to /etc/httpd/conf.d/zuul.conf the
|
||||
following content:
|
||||
|
||||
```
|
||||
RewriteEngine on
|
||||
RewriteRule ^/api/tenant/(.*)/console-stream ws://localhost:9000/api/tenant/$1/console-stream [P]
|
||||
RewriteRule ^/(.*)$ http://localhost:9000/$1 [P]
|
||||
```
|
||||
|
||||
Reload Apache:
|
||||
|
||||
```
|
||||
$ sudo systemctl relead httpd
|
||||
```
|
||||
|
||||
Finally start the zuul-web process
|
||||
|
||||
```
|
||||
$ sudo systemctl start zuul-web
|
||||
```
|
||||
|
||||
Validate the direct access to the API by running:
|
||||
|
||||
```
|
||||
$ curl http://localhost:9000/api/tenants
|
||||
```
|
||||
|
||||
Validate the access to the API via the reverse proxy:
|
||||
|
||||
```
|
||||
$ curl http://<site_url>/api/tenants
|
||||
```
|
||||
|
||||
## Run a first Zuul job
|
||||
|
||||
In this section, you'll find the steps to get a first periodic job running.
|
||||
|
||||
Please note that, this is a really basic configuration to ensure the services are working
|
||||
as expected. To go further, please refer to the Zuul documentation to learn how to connect
|
||||
Zuul to Code Review systems such as Github, Gerrit, Pagure. This demo uses the local system
|
||||
to run jobs but this has serious limitation and should not be used in production.
|
||||
Thus Nodepool must be used as the nodes and containers provider for Zuul.
|
||||
Nodepool supports various cloud providers. Nodepool is packaged into Fedora and here is
|
||||
its documentaion: https://zuul-ci.org/docs/nodepool/
|
||||
|
||||
### Prepare a Git repository to host the CI configuration
|
||||
|
||||
We need to prepare a local Git repository to host the pipelines and jobs configuration.
|
||||
|
||||
Follow the process below:
|
||||
|
||||
```
|
||||
$ git init /home/fedora/zuul-config
|
||||
```
|
||||
|
||||
In /home/fedora/zuul-config/.zuul.yaml add the following content:
|
||||
|
||||
```
|
||||
- pipeline:
|
||||
name: periodic
|
||||
post-review: true
|
||||
description: Jobs in this queue are triggered every minute.
|
||||
manager: independent
|
||||
precedence: low
|
||||
trigger:
|
||||
timer:
|
||||
- time: '* * * * *'
|
||||
success:
|
||||
sqlreporter:
|
||||
failure:
|
||||
sqlreporter:
|
||||
|
||||
- job:
|
||||
name: my-noop
|
||||
description: Minimal working job
|
||||
parent: null
|
||||
run: my-noop.yaml
|
||||
|
||||
- project:
|
||||
periodic:
|
||||
jobs:
|
||||
- my-noop
|
||||
```
|
||||
|
||||
Create the /home/fedora/zuul-config/my-noop.yaml and add the following content:
|
||||
|
||||
```
|
||||
---
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: List working directory
|
||||
command: ls -al {{ ansible_user_dir }}
|
||||
- name: Sleep 30 seconds
|
||||
wait_for:
|
||||
timeout: 30
|
||||
```
|
||||
|
||||
Then commit the configuration by running:
|
||||
|
||||
```
|
||||
$ cd /home/fedora/zuul-config/
|
||||
$ git config user.name "John Doe"
|
||||
$ git config user.email "john@localhost"
|
||||
$ git add -A .
|
||||
$ git commit -m"Init demo config"
|
||||
```
|
||||
|
||||
### Run a Git deamon to serve the config repository
|
||||
|
||||
```
|
||||
$ sudo dnf install -y python3-dulwich
|
||||
$ dulwich web-daemon -l 0.0.0.0 /
|
||||
```
|
||||
|
||||
### Add the new connection in the Zuul configuration
|
||||
|
||||
In /etc/zuul/zuul.conf add the following:
|
||||
|
||||
```
|
||||
[connection local_git]
|
||||
driver=git
|
||||
baseurl=http://localhost:8000/home/fedora
|
||||
poll_delay=300
|
||||
```
|
||||
|
||||
### Setup the Zuul tenant configuration file
|
||||
|
||||
In /etc/zuul/main.yaml add the following:
|
||||
|
||||
```
|
||||
- tenant:
|
||||
name: default
|
||||
source:
|
||||
local_git:
|
||||
config-projects:
|
||||
- zuul-config
|
||||
```
|
||||
|
||||
### Restart the Zuul services
|
||||
|
||||
```
|
||||
$ sudo systemctl restart zuul-*
|
||||
```
|
||||
|
||||
### Verify the job executed periodically
|
||||
|
||||
Run the following command to access the builds API endpoint and ensure the
|
||||
my-noop job run as expected every minutes w/o errors.
|
||||
|
||||
```
|
||||
$ curl http://<host>/api/tenant/default/builds | python -m json.tool
|
||||
```
|
||||
|
||||
Access the build page, where you should see the periodic job my-noop runs
|
||||
|
||||
```
|
||||
http://<host>/t/default/builds
|
||||
```
|
||||
|
|
@ -1 +0,0 @@
|
|||
Orphaned for 6+ weeks
|
||||
34
logging.conf
Normal file
34
logging.conf
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
[loggers]
|
||||
keys=root,zuul
|
||||
|
||||
[handlers]
|
||||
keys=console,normal
|
||||
|
||||
[formatters]
|
||||
keys=simple
|
||||
|
||||
[logger_root]
|
||||
level=INFO
|
||||
handlers=console
|
||||
|
||||
[logger_zuul]
|
||||
level=INFO
|
||||
handlers=normal
|
||||
qualname=zuul
|
||||
propagate=0
|
||||
|
||||
[handler_console]
|
||||
level=INFO
|
||||
class=StreamHandler
|
||||
formatter=simple
|
||||
args=(sys.stdout,)
|
||||
|
||||
[handler_normal]
|
||||
level=INFO
|
||||
class=logging.handlers.TimedRotatingFileHandler
|
||||
formatter=simple
|
||||
args=('/var/log/zuul/zuul.log', 'midnight', 1, 30,)
|
||||
|
||||
[formatter_simple]
|
||||
format=%(asctime)s %(levelname)s %(name)s: %(message)s
|
||||
datefmt=
|
||||
3
main.yaml
Normal file
3
main.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
- tenant:
|
||||
name: default
|
||||
source: {}
|
||||
1
sources
Normal file
1
sources
Normal file
|
|
@ -0,0 +1 @@
|
|||
SHA512 (zuul-3.19.1.tar.gz) = 0460e7e8407cd9cc005d1c05be718ca350a526cb7db44bfb1e8fe702a28c127ad828d6f6a7b1786205722e778def571fae80663db3d371df8a06e6b37ca50d89
|
||||
86
tests/configure_zuul_jobs.yml
Normal file
86
tests/configure_zuul_jobs.yml
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
- name: Install dulwich
|
||||
package:
|
||||
name: python3-dulwich
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Create a local git repository
|
||||
shell: git init {{ ansible_user_dir }}/zuul-config
|
||||
|
||||
- name: Create .zuul.yaml
|
||||
copy:
|
||||
src: zuul.yaml
|
||||
dest: "{{ ansible_user_dir }}/zuul-config/.zuul.yaml"
|
||||
|
||||
- name: Create my-noop.yaml
|
||||
copy:
|
||||
src: my-noop.yaml
|
||||
dest: "{{ ansible_user_dir }}/zuul-config/my-noop.yaml"
|
||||
|
||||
- name: Commit zuul-config changes
|
||||
shell: "{{ item }}"
|
||||
register: cmd
|
||||
failed_when:
|
||||
- cmd.rc != 0
|
||||
- not "'nothing to commit' in cmd.stdout"
|
||||
args:
|
||||
chdir: "{{ ansible_user_dir }}/zuul-config/"
|
||||
loop:
|
||||
- git config user.name "John Doe"
|
||||
- git config user.email "john@localhost"
|
||||
- git add -A .
|
||||
- git commit -m"Init demo config"
|
||||
|
||||
- name: Ensure dulwich down
|
||||
shell: pkill -f web-daemon
|
||||
ignore_errors: true
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1866463
|
||||
- name: Ensure dulwich running
|
||||
shell: "python3 /usr/lib64/python3.9/site-packages/dulwich/cli.py web-daemon -l 0.0.0.0 / &"
|
||||
|
||||
- name: Add the git connection into the zuul config
|
||||
blockinfile:
|
||||
path: /etc/zuul/zuul.conf
|
||||
marker: "# {mark} local_git"
|
||||
block: |
|
||||
[connection local_git]
|
||||
driver=git
|
||||
baseurl=http://localhost:8000/{{ ansible_user_dir }}
|
||||
poll_delay=300
|
||||
become: true
|
||||
|
||||
- name: Setup the Zuul default tenant to load zuul-config
|
||||
copy:
|
||||
src: main.yaml
|
||||
dest: /etc/zuul/main.yaml
|
||||
become: true
|
||||
|
||||
- name: Restart Zuul components
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: restarted
|
||||
become: true
|
||||
loop:
|
||||
- zuul-scheduler
|
||||
- zuul-executor
|
||||
- zuul-web
|
||||
|
||||
- name: Give some time to services to fully start
|
||||
pause:
|
||||
seconds: 15
|
||||
|
||||
- name: Check zuul services are up
|
||||
shell: systemctl is-active {{ item }}
|
||||
loop:
|
||||
- zuul-scheduler
|
||||
- zuul-executor
|
||||
- zuul-web
|
||||
become: true
|
||||
|
||||
- name: Give some time to Zuul to trigger and execute the job
|
||||
pause:
|
||||
minutes: 2
|
||||
|
||||
- name: Ensure the my-noop job was executed
|
||||
shell: python -c "import requests; r = requests.get('http://localhost/api/tenant/default/builds').json(); assert r[0]['job_name'] == 'my-noop'; assert r[0]['result'] == 'SUCCESS'"
|
||||
10
tests/install_zuul.yml
Normal file
10
tests/install_zuul.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
- name: Install Zuul packages
|
||||
package:
|
||||
name:
|
||||
- zuul-scheduler
|
||||
- zuul-executor
|
||||
- zuul-web
|
||||
- zuul-webui
|
||||
- zuul-doc
|
||||
state: present
|
||||
become: true
|
||||
6
tests/main.yaml
Normal file
6
tests/main.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
- tenant:
|
||||
name: default
|
||||
source:
|
||||
local_git:
|
||||
config-projects:
|
||||
- zuul-config
|
||||
8
tests/my-noop.yaml
Normal file
8
tests/my-noop.yaml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
tasks:
|
||||
- name: List working directory
|
||||
command: ls -al {{ ansible_user_dir }}
|
||||
- name: Sleep 30 seconds
|
||||
wait_for:
|
||||
timeout: 30
|
||||
3
tests/orig_main.yaml
Normal file
3
tests/orig_main.yaml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
- tenant:
|
||||
name: default
|
||||
source: {}
|
||||
56
tests/setup_postgres.yml
Normal file
56
tests/setup_postgres.yml
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
- name: Install postgres
|
||||
package:
|
||||
name:
|
||||
- postgresql
|
||||
- postgresql-server
|
||||
- python3-psycopg2
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Init postgreql DB
|
||||
shell: /usr/bin/postgresql-setup --initdb
|
||||
ignore_errors: true
|
||||
become: true
|
||||
|
||||
- name: Start postgres
|
||||
service:
|
||||
name: postgresql
|
||||
state: started
|
||||
become: true
|
||||
|
||||
- name: Wait for the service to be up
|
||||
pause:
|
||||
seconds: 15
|
||||
|
||||
- name: Setup a postgres admin password
|
||||
shell: psql -c "ALTER USER postgres WITH PASSWORD 'mypassword';"
|
||||
become_user: postgres
|
||||
become: true
|
||||
environment:
|
||||
PGPASSWORD: mypassword
|
||||
|
||||
- name: Create the database for zuul
|
||||
shell: createdb --owner=postgres zuul
|
||||
register: cmd
|
||||
failed_when: cmd.rc != 0 and not "'already exists' in cmd.stderr"
|
||||
# ignore_errors: true
|
||||
become_user: postgres
|
||||
become: true
|
||||
environment:
|
||||
PGPASSWORD: mypassword
|
||||
|
||||
- name: Enable auth access
|
||||
shell: sed -i 's|127.0.0.1/32 ident|127.0.0.1/32 md5|' /var/lib/pgsql/data/pg_hba.conf
|
||||
become: true
|
||||
|
||||
- name: Restart postgres
|
||||
service:
|
||||
name: postgresql
|
||||
state: restarted
|
||||
become: true
|
||||
|
||||
- name: Ensure postgres access
|
||||
shell: psql -h 127.0.0.1 -U postgres zuul -c "\dt"
|
||||
environment:
|
||||
PGPASSWORD: mypassword
|
||||
|
||||
34
tests/setup_zookeeper.yml
Normal file
34
tests/setup_zookeeper.yml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
- name: Install JDK
|
||||
package:
|
||||
name: java-latest-openjdk
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Create /tmp/zookeeper
|
||||
file:
|
||||
path: /tmp/zookeeper
|
||||
state: directory
|
||||
become: true
|
||||
|
||||
- name: Get and extract Zookeeper
|
||||
unarchive:
|
||||
src: https://downloads.apache.org/zookeeper/zookeeper-{{ zookeeper_version }}/apache-zookeeper-{{ zookeeper_version }}-bin.tar.gz
|
||||
dest: /tmp/zookeeper
|
||||
remote_src: yes
|
||||
become: true
|
||||
|
||||
- name: Setup Zookeeper config file
|
||||
copy:
|
||||
src: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/conf/zoo_sample.cfg
|
||||
dest: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/conf/zoo.cfg
|
||||
remote_src: true
|
||||
become: true
|
||||
|
||||
- name: Ensure Zookeeper not running
|
||||
command: pkill -f zookeeper
|
||||
ignore_errors: true
|
||||
become: true
|
||||
|
||||
- name: Start Zookeeper
|
||||
shell: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/bin/zkServer.sh start
|
||||
become: true
|
||||
56
tests/setup_zuul_core.yml
Normal file
56
tests/setup_zuul_core.yml
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
- name: Ensure scheduler and executor service are down
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: stopped
|
||||
loop:
|
||||
- zuul-executor
|
||||
- zuul-scheduler
|
||||
become: true
|
||||
|
||||
- name: Setup the Zuul default tenant to be empty
|
||||
copy:
|
||||
src: orig_main.yaml
|
||||
dest: /etc/zuul/main.yaml
|
||||
become: true
|
||||
|
||||
- name: Define the sql connection
|
||||
blockinfile:
|
||||
path: /etc/zuul/zuul.conf
|
||||
marker: "# {mark} sqlreporter"
|
||||
block: |
|
||||
[connection sqlreporter]
|
||||
driver=sql
|
||||
dburi=postgresql://postgres:mypassword@127.0.0.1:5432/zuul
|
||||
become: true
|
||||
|
||||
- name: Setup Ansible virtual environment for the Zuul executor
|
||||
shell: zuul-manage-ansible -u -r /var/lib/zuul/ansible-bin
|
||||
become_user: zuul
|
||||
become: true
|
||||
|
||||
- name: Create ssh keypair for Zuul
|
||||
shell: ssh-keygen -t rsa -N '' -f /var/lib/zuul/.ssh/id_rsa
|
||||
args:
|
||||
creates: /var/lib/zuul/.ssh/id_rsa
|
||||
become_user: zuul
|
||||
become: true
|
||||
|
||||
- name: Start scheduler and executor services
|
||||
service:
|
||||
name: "{{ item }}"
|
||||
state: started
|
||||
loop:
|
||||
- zuul-executor
|
||||
- zuul-scheduler
|
||||
become: true
|
||||
|
||||
- name: Give some time to services to fully start
|
||||
pause:
|
||||
seconds: 15
|
||||
|
||||
- name: Check zuul core services are up
|
||||
shell: systemctl is-active {{ item }}
|
||||
loop:
|
||||
- zuul-executor
|
||||
- zuul-scheduler
|
||||
become: true
|
||||
80
tests/setup_zuul_web.yml
Normal file
80
tests/setup_zuul_web.yml
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
- name: Ensure zuul-web service is down
|
||||
service:
|
||||
name: zuul-web
|
||||
state: stopped
|
||||
become: true
|
||||
|
||||
- name: Install httpd
|
||||
package:
|
||||
name:
|
||||
- httpd
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Ensure httpd can connect to zuul-web
|
||||
command: setsebool -P httpd_can_network_connect on
|
||||
become: true
|
||||
|
||||
- name: Add the reverse proxy setting in httpd
|
||||
blockinfile:
|
||||
create: true
|
||||
path: /etc/httpd/conf.d/zuul.conf
|
||||
block: |
|
||||
RewriteEngine on
|
||||
RewriteRule ^/api/tenant/(.*)/console-stream ws://localhost:9000/api/tenant/$1/console-stream [P]
|
||||
RewriteRule ^/(.*)$ http://localhost:9000/$1 [P]
|
||||
become: true
|
||||
|
||||
- name: Reload httpd
|
||||
service:
|
||||
name: httpd
|
||||
state: reloaded
|
||||
become: true
|
||||
|
||||
- name: Add the yarn yum repository
|
||||
shell: "curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo"
|
||||
become: true
|
||||
|
||||
- name: Install yarn
|
||||
package:
|
||||
name: yarn
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Start a production build of the Zuul web UI
|
||||
shell: "{{ item }}"
|
||||
args:
|
||||
chdir: /usr/share/zuul-ui/
|
||||
environment:
|
||||
REACT_APP_ZUUL_API: 'http://domain.com'
|
||||
loop:
|
||||
- yarn install
|
||||
- yarn build
|
||||
become: true
|
||||
|
||||
- name: Ensure zuul-web service is up
|
||||
service:
|
||||
name: zuul-web
|
||||
state: started
|
||||
become: true
|
||||
|
||||
- name: Give some time to services to fully start
|
||||
pause:
|
||||
seconds: 15
|
||||
|
||||
- name: Check zuul web services are up
|
||||
shell: systemctl is-active {{ item }}
|
||||
loop:
|
||||
- zuul-web
|
||||
- httpd
|
||||
become: true
|
||||
|
||||
- name: Check we can access the Zuul API
|
||||
shell: curl http://localhost:9000/api/tenants
|
||||
register: cmd
|
||||
failed_when: not "'default' in cmd.stdout"
|
||||
|
||||
- name: Check we can access the Zuul API via httpd
|
||||
shell: curl http://localhost/api/tenants
|
||||
register: cmd
|
||||
failed_when: not "'default' in cmd.stdout"
|
||||
23
tests/tests.yml
Normal file
23
tests/tests.yml
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
- hosts: localhost
|
||||
vars:
|
||||
zookeeper_version: "3.6.1"
|
||||
tasks:
|
||||
- import_tasks: setup_zookeeper.yml
|
||||
tags:
|
||||
- zookeeper
|
||||
- import_tasks: setup_postgres.yml
|
||||
tags:
|
||||
- postgres
|
||||
- import_tasks: install_zuul.yml
|
||||
tags:
|
||||
- install_zuul
|
||||
- import_tasks: setup_zuul_core.yml
|
||||
tags:
|
||||
- setup_zuul_core
|
||||
- import_tasks: setup_zuul_web.yml
|
||||
tags:
|
||||
- setup_zuul_web
|
||||
# Now configure Zuul to run a job
|
||||
- import_tasks: configure_zuul_jobs.yml
|
||||
tags:
|
||||
- configure_zuul_jobs
|
||||
24
tests/zuul.yaml
Normal file
24
tests/zuul.yaml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
- pipeline:
|
||||
name: periodic
|
||||
post-review: true
|
||||
description: Jobs in this queue are triggered every minute.
|
||||
manager: independent
|
||||
precedence: low
|
||||
trigger:
|
||||
timer:
|
||||
- time: '* * * * *'
|
||||
success:
|
||||
sqlreporter:
|
||||
failure:
|
||||
sqlreporter:
|
||||
|
||||
- job:
|
||||
name: my-noop
|
||||
description: Minimal working job
|
||||
parent: null
|
||||
run: my-noop.yaml
|
||||
|
||||
- project:
|
||||
periodic:
|
||||
jobs:
|
||||
- my-noop
|
||||
15
zuul-executor.service
Normal file
15
zuul-executor.service
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Zuul Executor Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=zuul
|
||||
Group=zuul
|
||||
SyslogIdentifier=zuul-executor
|
||||
EnvironmentFile=-/etc/sysconfig/zuul
|
||||
ExecStart=/usr/bin/zuul-executor -f
|
||||
PrivateTmp=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
14
zuul-fingergw.service
Normal file
14
zuul-fingergw.service
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Zuul Finger Gateway Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
Group=root
|
||||
SyslogIdentifier=zuul-fingergw
|
||||
EnvironmentFile=-/etc/sysconfig/zuul
|
||||
ExecStart=/usr/bin/zuul-fingergw -f
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
15
zuul-merger.service
Normal file
15
zuul-merger.service
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Zuul Merger Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=zuul
|
||||
Group=zuul
|
||||
LimitNOFILE=8192
|
||||
SyslogIdentifier=zuul-merger
|
||||
EnvironmentFile=-/etc/sysconfig/zuul
|
||||
ExecStart=/usr/bin/zuul-merger -f
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
15
zuul-scheduler.service
Normal file
15
zuul-scheduler.service
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
[Unit]
|
||||
Description=Zuul Scheduler Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=zuul
|
||||
Group=zuul
|
||||
SyslogIdentifier=zuul-scheduler
|
||||
EnvironmentFile=-/etc/sysconfig/zuul
|
||||
ExecStart=/usr/bin/zuul-scheduler -f
|
||||
ExecReload=/usr/bin/zuul-scheduler smart-reconfigure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
14
zuul-web.service
Normal file
14
zuul-web.service
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Zuul Web Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=zuul
|
||||
Group=zuul
|
||||
SyslogIdentifier=zuul-web
|
||||
EnvironmentFile=-/etc/sysconfig/zuul
|
||||
ExecStart=/usr/bin/zuul-web -f
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
82
zuul.conf
Normal file
82
zuul.conf
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
[gearman]
|
||||
server=127.0.0.1
|
||||
;port=4730
|
||||
;ssl_ca=/path/to/ca.pem
|
||||
;ssl_cert=/path/to/client.pem
|
||||
;ssl_key=/path/to/client.key
|
||||
|
||||
[statsd]
|
||||
server=127.0.0.1
|
||||
|
||||
[zookeeper]
|
||||
hosts=127.0.0.1:2181
|
||||
|
||||
[gearman_server]
|
||||
start=true
|
||||
;ssl_ca=/path/to/ca.pem
|
||||
;ssl_cert=/path/to/server.pem
|
||||
;ssl_key=/path/to/server.key
|
||||
;port=4730
|
||||
|
||||
[scheduler]
|
||||
tenant_config=/etc/zuul/main.yaml
|
||||
log_config=/etc/zuul/logging.conf
|
||||
pidfile=/var/run/zuul/zuul.pid
|
||||
state_dir=/var/lib/zuul
|
||||
|
||||
[merger]
|
||||
git_dir=/var/lib/zuul/git
|
||||
;git_user_email=zuul@example.com
|
||||
;git_user_name=zuul
|
||||
|
||||
[executor]
|
||||
default_username=zuul
|
||||
log_config=/etc/zuul/logging.conf
|
||||
;trusted_ro_paths=/opt/zuul-scripts:/var/cache
|
||||
;trusted_rw_paths=/opt/zuul-logs
|
||||
|
||||
[web]
|
||||
log_config=/etc/zuul/logging.conf
|
||||
listen_address=127.0.0.1
|
||||
port=9000
|
||||
static_cache_expiry=0
|
||||
status_url=https://zuul.example.com/status
|
||||
static_path=/usr/share/zuul-ui/build
|
||||
|
||||
[webclient]
|
||||
url=https://zuul.example.com
|
||||
verify_ssl=true
|
||||
|
||||
[auth zuul_operator]
|
||||
driver=HS256
|
||||
allow_authz_override=true
|
||||
realm=zuul.example.com
|
||||
default=true
|
||||
client_id=zuul.example.com
|
||||
issuer_id=zuul_operator
|
||||
secret=NoDanaOnlyZuul
|
||||
max_validity_time=36000
|
||||
skew=0
|
||||
|
||||
;[connection gerrit]
|
||||
;driver=gerrit
|
||||
;server=review.example.com
|
||||
;baseurl=https://review.example.com/r
|
||||
;user=jenkins
|
||||
;sshkey=/home/jenkins/.ssh/id_rsa
|
||||
;keepalive=60
|
||||
|
||||
[connection smtp]
|
||||
driver=smtp
|
||||
server=localhost
|
||||
port=25
|
||||
default_from=zuul@example.com
|
||||
default_to=you@example.com
|
||||
|
||||
;[connection mqtt]
|
||||
;driver=mqtt
|
||||
;server=localhost
|
||||
;user=zuul
|
||||
;password=zuul
|
||||
;keepalive=60
|
||||
|
||||
61
zuul.rpmlintrc
Normal file
61
zuul.rpmlintrc
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Documentation in a separate sub-package
|
||||
addFilter("zuul.noarch: W: no-documentation")
|
||||
addFilter("zuul-executor.noarch: W: no-documentation")
|
||||
addFilter("zuul-fingergw.noarch: W: no-documentation")
|
||||
addFilter("zuul-merger.noarch: W: no-documentation")
|
||||
addFilter("zuul-migrate.noarch: W: no-documentation")
|
||||
addFilter("zuul-scheduler.noarch: W: no-documentation")
|
||||
addFilter("zuul-web.noarch: W: no-documentation")
|
||||
addFilter("zuul-webui.noarch: W: no-documentation")
|
||||
# Expected - Zuul services should run as the zuul user identity
|
||||
addFilter("zuul.noarch: W: non-standard-uid /etc/zuul/logging.conf zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /etc/zuul/logging.conf zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /etc/zuul/zuul.conf zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /etc/zuul/zuul.conf zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /etc/zuul/main.yaml zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /etc/zuul/main.yaml zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /var/lib/zuul zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /var/lib/zuul zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /var/lib/zuul/.ssh zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /var/lib/zuul/.ssh zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /var/lib/zuul/ansible zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /var/lib/zuul/ansible zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /var/lib/zuul/keys zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /var/lib/zuul/keys zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-uid /var/log/zuul zuul")
|
||||
addFilter("zuul.noarch: W: non-standard-gid /var/log/zuul zuul")
|
||||
addFilter("zuul-executor.noarch: W: non-standard-uid /var/lib/zuul/ansible zuul")
|
||||
addFilter("zuul-executor.noarch: W: non-standard-gid /var/lib/zuul/ansible zuul")
|
||||
addFilter("zuul-executor.noarch: W: non-standard-uid /var/lib/zuul/executor zuul")
|
||||
addFilter("zuul-executor.noarch: W: non-standard-gid /var/lib/zuul/executor zuul")
|
||||
# Expected - zuul.conf can store credentials
|
||||
addFilter("zuul.noarch: E: non-readable /etc/zuul/zuul.conf 640")
|
||||
# Expected - See upstream comments https://review.opendev.org/728955
|
||||
addFilter("zuul.noarch: E: non-executable-script /usr/lib/python3.9/site-packages/zuul/ansible/base/library/command.py 644 /usr/bin/python3")
|
||||
addFilter("zuul.noarch: E: non-executable-script /usr/lib/python3.9/site-packages/zuul/ansible/base/library/zuul_console.py 644 /usr/bin/python3")
|
||||
# Expected - Zuul runtime expects to find that directory
|
||||
addFilter("zuul.noarch: W: hidden-file-or-dir /var/lib/zuul/.ssh")
|
||||
addFilter("zuul.noarch: W: hidden-file-or-dir /var/lib/zuul/.ssh")
|
||||
# Expected - Provided Python logging configuration configures the rotation
|
||||
addFilter("zuul.noarch: W: log-files-without-logrotate \['/var/log/zuul'\]")
|
||||
# Expected - upstream does not provide man pages
|
||||
addFilter("zuul.noarch: W: no-manual-page-for-binary zuul")
|
||||
addFilter("zuul.noarch: W: no-manual-page-for-binary zuul-bwrap")
|
||||
addFilter("zuul-executor.noarch: W: no-manual-page-for-binary zuul-executor")
|
||||
addFilter("zuul-executor.noarch: W: no-manual-page-for-binary zuul-manage-ansible")
|
||||
addFilter("zuul-fingergw.noarch: W: no-manual-page-for-binary zuul-fingergw")
|
||||
addFilter("zuul-merger.noarch: W: no-manual-page-for-binary zuul-merger")
|
||||
addFilter("zuul-migrate.noarch: W: no-manual-page-for-binary zuul-migrate")
|
||||
addFilter("zuul-scheduler.noarch: W: no-manual-page-for-binary zuul-scheduler")
|
||||
addFilter("zuul-web.noarch: W: no-manual-page-for-binary zuul-web")
|
||||
# Expected - executor service require python3-devel to install ansible virtualenvs
|
||||
addFilter("zuul-executor.noarch: E: devel-dependency python3-devel")
|
||||
# Expected - gearman is a protocol name
|
||||
addFilter("zuul-scheduler.noarch: W: spelling-error %description -l en_US gearman -> gear man, gear-man, germane")
|
||||
# Expected - executor devel-dependency
|
||||
addFilter("zuul-executor.noarch: E: devel-dependency libffi-devel")
|
||||
addFilter("zuul-executor.noarch: E: explicit-lib-dependency libffi-devel")
|
||||
# No idea for this one
|
||||
addFilter("zuul-doc.noarch: W: wrong-file-end-of-line-encoding /usr/share/doc/zuul-doc/html/objects.inv")
|
||||
# Expected - https://github.com/rpm-software-management/rpmlint/issues/427
|
||||
addFilter("zuul.noarch: E: useless-provides bundled\(ansible\)")
|
||||
550
zuul.spec
Normal file
550
zuul.spec
Normal file
|
|
@ -0,0 +1,550 @@
|
|||
Name: zuul
|
||||
Version: 3.19.1
|
||||
Release: 1%{?dist}
|
||||
Summary: Trunk Gating System
|
||||
|
||||
# The entire source code is ASL 2.0 except files under %%{python3_sitelib}/zuul/ansible which is GPLv3+
|
||||
License: ASL 2.0 and GPLv3+
|
||||
URL: https://zuul-ci.org
|
||||
Source0: %pypi_source
|
||||
|
||||
Source2: zuul-scheduler.service
|
||||
Source3: zuul-merger.service
|
||||
Source4: zuul-executor.service
|
||||
Source5: zuul-web.service
|
||||
Source6: zuul-fingergw.service
|
||||
Source7: README.md
|
||||
Source8: zuul.conf
|
||||
Source9: logging.conf
|
||||
Source10: main.yaml
|
||||
|
||||
Patch01: 0001-Remove-another-shebang-and-remove-useless-exec-bits.patch
|
||||
Patch02: 0001-requirements-add-explicit-reference-to-dateutil.patch
|
||||
Patch03: 0001-Replace-deprecated-Thread.isAlive-with-Thread.is_ali.patch
|
||||
Patch04: 0001-Update-cherrypy-and-cheroot-requirement-pinning.patch
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-pbr
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: python3-zuul-sphinx
|
||||
BuildRequires: python3-snowballstemmer
|
||||
BuildRequires: python3-fixtures
|
||||
BuildRequires: python3-sphinx-autodoc-typehints
|
||||
BuildRequires: python3-sphinxcontrib-blockdiag
|
||||
BuildRequires: python3-sphinxcontrib-programoutput
|
||||
BuildRequires: python3-sphinxcontrib-openapi
|
||||
BuildRequires: python3-reno
|
||||
BuildRequires: python3-CacheControl
|
||||
BuildRequires: python3-jwt
|
||||
BuildRequires: python3-github3py
|
||||
BuildRequires: python3-pyyaml
|
||||
BuildRequires: python3-paramiko
|
||||
BuildRequires: python3-GitPython
|
||||
BuildRequires: python3-daemon
|
||||
BuildRequires: python3-extras
|
||||
BuildRequires: python3-statsd
|
||||
BuildRequires: python3-voluptuous
|
||||
BuildRequires: python3-gear
|
||||
BuildRequires: python3-APScheduler
|
||||
BuildRequires: python3-prettytable
|
||||
BuildRequires: python3-babel
|
||||
BuildRequires: python3-kazoo
|
||||
BuildRequires: python3-sqlalchemy
|
||||
BuildRequires: python3-alembic
|
||||
BuildRequires: python3-cryptography
|
||||
BuildRequires: python3-cherrypy
|
||||
BuildRequires: python3-ws4py
|
||||
BuildRequires: python3-routes
|
||||
BuildRequires: python3-netaddr
|
||||
BuildRequires: python3-paho-mqtt
|
||||
BuildRequires: python3-psutil
|
||||
BuildRequires: python3-fb-re2
|
||||
BuildRequires: python3-cachetools
|
||||
BuildRequires: python3-jsonpath-rw
|
||||
BuildRequires: python3-dateutil
|
||||
BuildRequires: python3-iso8601
|
||||
BuildRequires: python3-PyMySQL
|
||||
BuildRequires: python3-psycopg2
|
||||
BuildRequires: python3-pathspec
|
||||
BuildRequires: python3-graphene
|
||||
BuildRequires: systemd
|
||||
BuildRequires: ansible
|
||||
|
||||
Provides: bundled(ansible) = 2.9
|
||||
Provides: bundled(ansible) = 2.8
|
||||
Provides: bundled(ansible) = 2.7
|
||||
|
||||
%description
|
||||
Zuul is a program that drives continuous integration, delivery,
|
||||
and deployment systems with a focus on project gating and
|
||||
interrelated projects.
|
||||
|
||||
|
||||
%package webui
|
||||
Summary: The Zuul web interface
|
||||
|
||||
%description webui
|
||||
This package provides the Zuul web interface source code.
|
||||
Please refers to README.fedora for build and deployment instruction.
|
||||
|
||||
%package scheduler
|
||||
Summary: The Zuul scheduler service
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: systemd
|
||||
|
||||
%description scheduler
|
||||
The main Zuul process. Handles receiving events, executing jobs,
|
||||
collecting results and posting reports. Coordinates the work of
|
||||
the other components. It also provides a gearman daemon which
|
||||
the other components use for coordination.
|
||||
|
||||
|
||||
%package merger
|
||||
Summary: The Zuul merger service
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: systemd
|
||||
|
||||
%description merger
|
||||
Scale-out component that performs git merge operations.
|
||||
Zuul performs a large number of git operations in the course of
|
||||
its work. Adding merger processes can help speed Zuul’s processing.
|
||||
This component is optional (zero or more of these can be run).
|
||||
|
||||
|
||||
%package web
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: nodejs
|
||||
Summary: The Zuul web service
|
||||
|
||||
%description web
|
||||
A web server that receives “web-hook” events from external providers,
|
||||
supplies a web dashboard, and provides web-socket access to live
|
||||
streaming of logs.
|
||||
|
||||
|
||||
%package executor
|
||||
Summary: The Zuul executor service
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: systemd
|
||||
Requires: git-core
|
||||
Requires: bubblewrap
|
||||
# zuul-manage-ansible requires them to create ansible virtualenvs
|
||||
## Requires: python3-virtualenv
|
||||
Requires: gcc
|
||||
Requires: python3-devel
|
||||
Requires: libffi-devel
|
||||
|
||||
%description executor
|
||||
Scale-out component for executing jobs. At least one of these is
|
||||
required. Depending on system configuration, you can expect a single
|
||||
executor to handle up to about 100 simultaneous jobs. Can handle
|
||||
the functions of a merger if dedicated mergers are not provided.
|
||||
One or more of these must be run.
|
||||
|
||||
|
||||
%package fingergw
|
||||
Summary: Executor finger gateway service
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: systemd
|
||||
|
||||
%description fingergw
|
||||
A gateway which provides finger protocol access to live streaming of logs.
|
||||
|
||||
%package migrate
|
||||
Summary: Migrate zuul v2 and Jenkins Job Builder to Zuul v3
|
||||
Requires: %{name} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: bubblewrap
|
||||
|
||||
%description migrate
|
||||
Migrate zuul v2 and Jenkins Job Builder to Zuul v3
|
||||
|
||||
%package doc
|
||||
Summary: Zuul documentation
|
||||
|
||||
%description doc
|
||||
The Zuul HTML documentation
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -n zuul-%{version} -p1
|
||||
sed -i '/^importlib-resources.*/d' requirements.txt
|
||||
# remove extra uneeded shebangs in zuul_return
|
||||
# archive on pypi do not preserve links
|
||||
# could be removed at next release
|
||||
find zuul/ansible/ -type f -name "zuul_return.py" \
|
||||
-exec sed -i '/\/usr\/bin\/python/d' {} \;
|
||||
|
||||
# Inject package version
|
||||
cat << EOF > zuul/version.py
|
||||
is_release = True
|
||||
release_string = "%{version}-%{release}"
|
||||
class version_info:
|
||||
def release_string():
|
||||
return release_string
|
||||
EOF
|
||||
# Fix non compliant shebangs
|
||||
/usr/bin/pathfix.py -i %{python3} -p -n -k zuul/ansible
|
||||
install -m 0644 %{SOURCE7} README.fedora
|
||||
# Fix 0001-Replace-deprecated-Thread.isAlive-with-Thread.is_ali.patch not fully apply
|
||||
# due to pypi archive removing the symlinks
|
||||
cp zuul/ansible/base/library/command.py zuul/ansible/2.7/library/
|
||||
cp zuul/ansible/base/library/command.py zuul/ansible/2.8/library/
|
||||
cp zuul/ansible/base/library/command.py zuul/ansible/2.9/library/
|
||||
|
||||
%build
|
||||
%py3_build
|
||||
|
||||
# Create fake zuul clients suitable for sphinx programoutput
|
||||
cp zuul/cmd/client.py build/zuul
|
||||
sed -i '1i \#!/usr/bin/env python3' build/zuul
|
||||
chmod +x build/zuul
|
||||
cp zuul/cmd/manage_ansible.py build/zuul-manage-ansible
|
||||
sed -i '1i \#!/usr/bin/env python3' build/zuul-manage-ansible
|
||||
chmod +x build/zuul-manage-ansible
|
||||
# Generate documentation (without release note because source doesn't have git log)
|
||||
sed -e 's/^ *releasenotes$//' -i doc/source/reference/index.rst
|
||||
rm doc/source/reference/releasenotes.rst
|
||||
# TODO: https://bugzilla.redhat.com/show_bug.cgi?id=1849654
|
||||
# sed '/sphinx_autodoc_typehints/d' -i doc/source/conf.py
|
||||
PYTHONPATH=../../build/lib PATH=$PATH:$(pwd)/build PBR_VERSION=%{version} SPHINX_DEBUG=1 sphinx-build-3 \
|
||||
-b html doc/source build/html
|
||||
# Remove empty stub files
|
||||
find build -type f -name "*.pyi" -size 0 -delete
|
||||
# rm doc build leftovers
|
||||
rm -Rf build/html/.buildinfo build/html/.doctrees
|
||||
# Fix file-not-utf8
|
||||
iconv -f iso8859-1 -t utf-8 build/html/objects.inv > build/html/objects.inv.conv && \
|
||||
mv -f build/html/objects.inv.conv build/html/objects.inv
|
||||
# Fix wrong-file-end-of-line-encoding
|
||||
sed -i 's/\r$//' LICENSE
|
||||
sed -i 's/\r$//' build/html/objects.inv
|
||||
|
||||
%install
|
||||
install -p -d -m 0755 %{buildroot}/%{_datadir}/zuul-ui
|
||||
mv web/* %{buildroot}/%{_datadir}/zuul-ui/
|
||||
%py3_install
|
||||
rm -Rf %{buildroot}%{python3_sitelib}/zuul/web/static
|
||||
install -p -D -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}/zuul-scheduler.service
|
||||
install -p -D -m 0644 %{SOURCE3} %{buildroot}%{_unitdir}/zuul-merger.service
|
||||
install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_unitdir}/zuul-executor.service
|
||||
install -p -D -m 0644 %{SOURCE5} %{buildroot}%{_unitdir}/zuul-web.service
|
||||
install -p -D -m 0644 %{SOURCE6} %{buildroot}%{_unitdir}/zuul-fingergw.service
|
||||
install -p -D -m 0640 %{SOURCE8} %{buildroot}%{_sysconfdir}/zuul/zuul.conf
|
||||
install -p -D -m 0644 %{SOURCE9} %{buildroot}%{_sysconfdir}/zuul/logging.conf
|
||||
install -p -D -m 0644 %{SOURCE10} %{buildroot}%{_sysconfdir}/zuul/main.yaml
|
||||
install -p -d -m 0700 %{buildroot}%{_sharedstatedir}/zuul
|
||||
install -p -d -m 0755 %{buildroot}%{_localstatedir}/log/zuul
|
||||
|
||||
# Prepare lib directory
|
||||
install -p -d -m 0700 %{buildroot}%{_sharedstatedir}/zuul/.ssh
|
||||
install -p -d -m 0755 %{buildroot}%{_sharedstatedir}/zuul/ansible
|
||||
install -p -d -m 0755 %{buildroot}%{_sharedstatedir}/zuul/executor
|
||||
install -p -d -m 0755 %{buildroot}%{_sharedstatedir}/zuul/git
|
||||
install -p -d -m 0700 %{buildroot}%{_sharedstatedir}/zuul/keys
|
||||
|
||||
|
||||
%pre
|
||||
getent group zuul >/dev/null || groupadd -r zuul
|
||||
if ! getent passwd zuul >/dev/null; then
|
||||
useradd -r -g zuul -G zuul -d %{_sharedstatedir}/zuul -s /sbin/nologin -c "Zuul Daemon" zuul
|
||||
fi
|
||||
exit 0
|
||||
|
||||
|
||||
%post scheduler
|
||||
%systemd_post zuul-scheduler.service
|
||||
%post merger
|
||||
%systemd_post zuul-merger.service
|
||||
%post web
|
||||
%systemd_post zuul-web.service
|
||||
%post executor
|
||||
%systemd_post zuul-executor.service
|
||||
%post fingergw
|
||||
%systemd_post zuul-fingergw.service
|
||||
|
||||
|
||||
%preun scheduler
|
||||
%systemd_preun zuul-scheduler.service
|
||||
%preun merger
|
||||
%systemd_preun zuul-merger.service
|
||||
%preun web
|
||||
%systemd_preun zuul-web.service
|
||||
%preun executor
|
||||
%systemd_preun zuul-executor.service
|
||||
%preun fingergw
|
||||
%systemd_preun zuul-fingergw.service
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.rst
|
||||
%dir %attr(0755,zuul,zuul) %{_sysconfdir}/zuul
|
||||
%config(noreplace) %attr(0640,zuul,zuul) %{_sysconfdir}/zuul/zuul.conf
|
||||
%config(noreplace) %attr(0644,zuul,zuul) %{_sysconfdir}/zuul/main.yaml
|
||||
%config(noreplace) %attr(0644,zuul,zuul) %{_sysconfdir}/zuul/logging.conf
|
||||
%dir %attr(0755,zuul,zuul) %{_sharedstatedir}/zuul
|
||||
%dir %attr(0755,zuul,zuul) %{_sharedstatedir}/zuul/.ssh
|
||||
%dir %attr(0755,zuul,zuul) %{_sharedstatedir}/zuul/ansible
|
||||
# Zuul runtime check complains
|
||||
# Project key directory /var/lib/zuul/keys must be mode 0700; current mode is 755
|
||||
%dir %attr(0700,zuul,zuul) %{_sharedstatedir}/zuul/keys
|
||||
%dir %attr(0755,zuul,zuul) %{_localstatedir}/log/zuul
|
||||
%{python3_sitelib}/zuul
|
||||
%{python3_sitelib}/zuul-*.egg-info/
|
||||
%{_bindir}/zuul
|
||||
%{_bindir}/zuul-bwrap
|
||||
|
||||
%files webui
|
||||
%license LICENSE
|
||||
%{_datadir}/zuul-ui
|
||||
|
||||
%files scheduler
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-scheduler
|
||||
%{_unitdir}/zuul-scheduler.service
|
||||
|
||||
%files merger
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-merger
|
||||
%{_unitdir}/zuul-merger.service
|
||||
|
||||
%files web
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-web
|
||||
%{_unitdir}/zuul-web.service
|
||||
|
||||
%files executor
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-executor
|
||||
%{_bindir}/zuul-manage-ansible
|
||||
%{_unitdir}/zuul-executor.service
|
||||
%dir %attr(0755,zuul,zuul) %{_sharedstatedir}/zuul/ansible
|
||||
%dir %attr(0755,zuul,zuul) %{_sharedstatedir}/zuul/executor
|
||||
|
||||
%files fingergw
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-fingergw
|
||||
%{_unitdir}/zuul-fingergw.service
|
||||
|
||||
%files migrate
|
||||
%license LICENSE
|
||||
%{_bindir}/zuul-migrate
|
||||
|
||||
%files doc
|
||||
%license LICENSE
|
||||
%doc build/html README.fedora
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Jul 27 2020 Fabien Boucher <fboucher@redhat.com> - 3.19.1-1
|
||||
- Bump to 3.19.1
|
||||
- Fedora rawhide compat
|
||||
|
||||
* Tue Mar 3 2020 Tristan Cacqueray <tdecacqu@redhat.com> - 3.18.0-1
|
||||
- Bump to 3.18.0
|
||||
- Use -f argument for services
|
||||
- Use smart-reconfigure command for scheduler reload
|
||||
|
||||
* Wed Feb 26 2020 Tristan Cacqueray <tdecacqu@redhat.com> - 3.13.0-2
|
||||
- Add security fix
|
||||
|
||||
* Tue Dec 10 2019 Fabien Boucher <fboucher@redhat.com> - 3.13.0-1
|
||||
- Bump to 3.13.0
|
||||
|
||||
* Tue Oct 22 2019 Fabien Boucher <fboucher@redhat.com> - 3.11.1-1
|
||||
- Bump to 3.11.1
|
||||
|
||||
* Mon Sep 23 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.10.2-2
|
||||
- Remove SCL leftovers
|
||||
|
||||
* Tue Sep 17 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.10.2-1
|
||||
- Add synchronize rsh security fix
|
||||
|
||||
* Thu Aug 15 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.10.1-1
|
||||
- Bump to 3.10.1
|
||||
|
||||
* Mon May 20 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.8.1-3
|
||||
- Add merger optimization
|
||||
|
||||
* Tue May 14 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.8.1-2
|
||||
- Remove a couple of un-needed patches
|
||||
|
||||
* Wed May 8 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.8.1-1
|
||||
- Bump to 3.8.1
|
||||
- Remove React service worker
|
||||
|
||||
* Wed Apr 17 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.8.0-1
|
||||
- Bump to 3.8.0
|
||||
|
||||
* Mon Mar 25 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.7.1-1
|
||||
- Bump to 3.7.1
|
||||
|
||||
* Mon Mar 18 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.7.0-1
|
||||
- Bump to 3.7.0
|
||||
|
||||
* Mon Feb 11 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.6.0-1
|
||||
- Bump to 3.6.0
|
||||
|
||||
* Fri Feb 8 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.5.0-2
|
||||
- Cherry-pick github fix
|
||||
- Fix config endpoint
|
||||
|
||||
* Wed Jan 23 2019 Javier Peña <jpena@redhat.com> - 3.5.0-1
|
||||
- Bump to 3.5.0
|
||||
|
||||
* Wed Jan 2 2019 Tristan Cacqueray <tdecacqu@redhat.com> - 3.4.0-1
|
||||
- Bump to 3.4.0
|
||||
|
||||
* Thu Nov 29 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.3.1-1
|
||||
- Update the openshift resources patches
|
||||
- Use package version in the zuul.version module
|
||||
|
||||
* Tue Nov 6 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.3.0-1
|
||||
- Bump to 3.3.0
|
||||
|
||||
* Mon Sep 24 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-6
|
||||
- Add react web interface
|
||||
|
||||
* Wed Sep 19 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-5
|
||||
- Bump to latest master
|
||||
|
||||
* Thu Aug 9 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-4
|
||||
- Add timer trigger fix
|
||||
|
||||
* Mon Aug 6 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-3
|
||||
- Add missing canonical name in scheduler status
|
||||
|
||||
* Sat Aug 4 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-2
|
||||
- Add node age to webpage
|
||||
|
||||
* Mon Jul 30 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.2.0-1
|
||||
- Bump version
|
||||
|
||||
* Wed Jul 18 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.1.0-5
|
||||
- Bump to last master for ui fix
|
||||
|
||||
* Mon Jul 2 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.1.0-4
|
||||
- Bump to 3.1.1 tech preview
|
||||
|
||||
* Fri Jun 22 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.1.0-3
|
||||
- Add resource connection type patch
|
||||
- Add patch to get the zuul-scheduler -t validation option
|
||||
- Add /etc/localtime patch
|
||||
|
||||
* Thu Jun 21 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.1.0-2
|
||||
- Fix tenant status page reload issue
|
||||
- Add glyphicon status balls
|
||||
|
||||
* Fri Jun 15 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.1.0-1
|
||||
- Bump version to 3.1.0
|
||||
- Add angular6 patch
|
||||
|
||||
* Mon May 28 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.2-2
|
||||
- Bump ansible patch to 2.5 version
|
||||
|
||||
* Fri Apr 13 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.2-1
|
||||
- Update version to 3.0.2 release
|
||||
- Update the MQTT driver patch
|
||||
|
||||
* Fri Apr 13 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.1-1
|
||||
- Update version to 3.0.1 release
|
||||
- Add patch to fix tag reporter
|
||||
- Update the MQTT driver patch
|
||||
|
||||
* Thu Mar 29 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-26
|
||||
- Update version to 3.0.0 release
|
||||
|
||||
* Tue Mar 20 2018 Fabien Boucher <fboucher@redhat.com> - 3.0.0-25
|
||||
- Bump version for security fixes
|
||||
- Add patches for supporting zuul to start with a broken config
|
||||
|
||||
* Fri Mar 16 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-24
|
||||
- Bump version for security fixes
|
||||
- Add new Nodepool dashboards
|
||||
|
||||
* Thu Mar 15 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-23
|
||||
- Bump version
|
||||
|
||||
* Tue Mar 13 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-22
|
||||
- Bump version
|
||||
|
||||
* Thu Feb 22 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-21
|
||||
- Add missing ansible-2.4 fix
|
||||
|
||||
* Wed Feb 21 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-20
|
||||
- Bump version
|
||||
- Add branch-column patch
|
||||
- Fix dynamic config loader
|
||||
|
||||
* Mon Feb 19 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-19
|
||||
- Bump version and switch to ansible 2.4 requirement
|
||||
|
||||
* Wed Feb 07 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-18
|
||||
- Bump version
|
||||
- Add pipelines.json endpoint
|
||||
|
||||
* Wed Jan 31 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-17
|
||||
- Bump version
|
||||
- Add external webui built with npm
|
||||
|
||||
* Mon Jan 22 2018 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-16
|
||||
- Bump version
|
||||
- Add config-loader optimization patch
|
||||
- Add job page description patch
|
||||
- Add dynamic config load
|
||||
- Remove with_restart in systemd unit
|
||||
- Add doc sub package
|
||||
|
||||
* Wed Dec 27 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-15
|
||||
- Bump version
|
||||
- Add jmespath to the executor requirements
|
||||
- Add fingergw sub-package
|
||||
- Add zookeeper retry logic patch
|
||||
|
||||
* Tue Dec 05 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-14
|
||||
- Bump version
|
||||
|
||||
* Wed Nov 29 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-13
|
||||
- Bump version
|
||||
- Add MQTT driver patch
|
||||
- Add log_stream options patch
|
||||
|
||||
* Fri Nov 17 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-12
|
||||
- Force ssh known_host to be in scl user home
|
||||
|
||||
* Mon Nov 6 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-11
|
||||
- Bump version and slightly update the patches
|
||||
|
||||
* Wed Nov 1 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-10
|
||||
- Bump version and remove merged patches
|
||||
|
||||
* Wed Sep 27 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-9
|
||||
- Add newrev patch
|
||||
|
||||
* Thu Sep 14 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-8
|
||||
- Add zuul-web interfaces
|
||||
|
||||
* Tue Sep 05 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-7
|
||||
- Add scheduler StartPost command to wait for gearman server.
|
||||
|
||||
* Fri Aug 25 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-6
|
||||
- Fix zuul-web static file missing from python module
|
||||
- Fix bwrap usage (LD_LIBRARY_PATH is removed by setuid)
|
||||
- Bump version
|
||||
|
||||
* Tue Jul 25 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-5
|
||||
- Bump version and fix executor reload
|
||||
|
||||
* Wed Jul 12 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-4
|
||||
- Bump version and add zuul-web package
|
||||
|
||||
* Thu Jul 6 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-3
|
||||
- Remove demonization from service file
|
||||
|
||||
* Thu Jun 29 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-2
|
||||
- Fix service reload
|
||||
|
||||
* Mon Jun 19 2017 Tristan Cacqueray <tdecacqu@redhat.com> - 3.0.0-1
|
||||
- Initial packaging
|
||||
Loading…
Add table
Add a link
Reference in a new issue