#2 3.19.1 Packaging
Merged 3 years ago by fbo. Opened 4 years ago by fbo.
rpms/ fbo/zuul rawhide  into  master

file modified
+5
@@ -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

+ 

@@ -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

+ 

@@ -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

+ 

file added
+279
@@ -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

+ ```

file added
+34
@@ -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=

file added
+3
@@ -0,0 +1,3 @@ 

+ - tenant:

+     name: default

+     source: {}

file modified
+1
@@ -0,0 +1,1 @@ 

+ SHA512 (zuul-3.19.1.tar.gz) = 0460e7e8407cd9cc005d1c05be718ca350a526cb7db44bfb1e8fe702a28c127ad828d6f6a7b1786205722e778def571fae80663db3d371df8a06e6b37ca50d89

@@ -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'"

@@ -0,0 +1,10 @@ 

+ - name: Install Zuul packages

+   package:

+     name:

+       - zuul-scheduler

+       - zuul-executor

+       - zuul-web

+       - zuul-webui

+       - zuul-doc

+     state: present

+   become: true

file added
+6
@@ -0,0 +1,6 @@ 

+ - tenant:

+     name: default

+     source:

+       local_git:

+         config-projects:

+           - zuul-config

file added
+8
@@ -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

@@ -0,0 +1,3 @@ 

+ - tenant:

+     name: default

+     source: {}

@@ -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

+ 

@@ -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

@@ -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

@@ -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"

file added
+23
@@ -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

file added
+24
@@ -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

@@ -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

@@ -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

file added
+15
@@ -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

@@ -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

file added
+14
@@ -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

file added
+82
@@ -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

+ 

file added
+61
@@ -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)")

file added
+550
@@ -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

no initial comment

rebased onto 96b9e95

4 years ago

Note that the package needs to go trough re-review (in Bugzilla) and be unretired. When releng unretires a package, they (among other things) first revert the retiring commit. I'm afraid you will eventually need to rebase this on top of that.

rebased onto 0d8c5a0

4 years ago

Build failed.

rebased onto 5a28cbb

3 years ago

Build failed.

rebased onto a0ec309

3 years ago

Build failed.

rebased onto e5b85f5

3 years ago

Build failed.

rebased onto 163b4e7

3 years ago

Build failed.

rebased onto 2881fc1

3 years ago

Build failed.

Build failed.

rebased onto d69a98e

3 years ago

rebased onto 79adb74

3 years ago

Build succeeded.

Build failed.

Build succeeded.

rebased onto 99a65c2

3 years ago

Build succeeded.

rebased onto 56467bc

3 years ago

Build succeeded.

1 new commit added

  • bypass cheroot req and move foward
3 years ago

Build failed.

1 new commit added

  • Improve README.fedora
3 years ago

Build failed.

1 new commit added

  • Readme update
3 years ago

Build failed.

3 new commits added

  • Add functional tests
  • Fix markdown
  • Fix README path
3 years ago

Build failed.

1 new commit added

  • functional test second step
3 years ago

Build failed.

Build failed.

1 new commit added

  • Tests + spec fixes
3 years ago

Build failed.

1 new commit added

  • Fix ordering in for postgresql setup
3 years ago

Build failed.

1 new commit added

  • Intregrate cherrot pinning patch
3 years ago

Build failed.

1 new commit added

  • Fix missing /etc/zuul and refector logging.conf
3 years ago

Build failed.

1 new commit added

  • Bump to 3.19.1
3 years ago

Build failed.

Build failed.

Build failed.

1 new commit added

  • configure_zuul_jobs: add ignore_errors on pkill task
3 years ago

Build failed.

Build failed.

1 new commit added

  • tests: fix dulwich web-daemon call and repo path
3 years ago

Build succeeded.

1 new commit added

  • Fix license and missing provides
3 years ago

Build failed.

1 new commit added

  • Remove multiple provide: zuul.noarch: E: useless-provides bundled(ansible)
3 years ago

Build succeeded.

1 new commit added

  • Fix missing systemd require for subpackages
3 years ago

Build failed.

1 new commit added

  • Give more time for the periodic job to execute
3 years ago

Build failed.

rebased onto f71cf1d

3 years ago

Build failed.

Pull-Request has been merged by fbo

3 years ago
Metadata
Flags
simple-koji-ci
success
Build completed for 814d0946
3 years ago
simple-koji-ci
success
Build completed for df76bd97
3 years ago
simple-koji-ci
success
Build completed for 89132775
3 years ago
simple-koji-ci
success
Build completed for 6f88cc70
3 years ago
simple-koji-ci
success
Build completed for 41b6e504
3 years ago
simple-koji-ci
success
Build completed for d8285cab
3 years ago
simple-koji-ci
success
Build completed for d631fa4b
3 years ago
simple-koji-ci
success
Build completed for c30c63fd
3 years ago
simple-koji-ci
success
Build completed for 2c56cdf5
3 years ago
simple-koji-ci
success
Build completed for b3d5cf25
3 years ago
simple-koji-ci
success
Build completed for 7e6fcea9
3 years ago
simple-koji-ci
success
Build completed for bb80bfb8
3 years ago
simple-koji-ci
success
Build completed for 7b9f812a
3 years ago
simple-koji-ci
success
Build completed for 60fdba95
3 years ago
simple-koji-ci
success
Build completed for a732aabc
3 years ago
simple-koji-ci
failure
Build failed for 1bf30b5f
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
Zuul
success
Jobs result is success
3 years ago
simple-koji-ci
success
Build completed for 56467bc6
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
success
Jobs result is success
3 years ago
simple-koji-ci
success
Build completed for 99a65c2b
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
success
Jobs result is success
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
success
Jobs result is success
3 years ago
simple-koji-ci
success
Build completed for 79adb746
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
simple-koji-ci
success
Build completed for d69a98ea
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
simple-koji-ci
success
Build completed for 2881fc16
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
simple-koji-ci
success
Build completed for 163b4e73
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
simple-koji-ci
success
Build completed for e5b85f5b
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
simple-koji-ci
success
Build completed for a0ec3094
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
3 years ago
simple-koji-ci
success
Build completed for 5a28cbbb
3 years ago
Zuul
pending
Jobs result is pending
3 years ago
Zuul
failure
Jobs result is failure
4 years ago
simple-koji-ci
success
Build completed for 0d8c5a01
4 years ago
Zuul
pending
Jobs result is pending
4 years ago
simple-koji-ci
failure
Build failed for 96b9e957
4 years ago
simple-koji-ci
failure
Build failed for 15a13d0c
4 years ago