Update Zuul

bwrap filtered out various including paths from rootfs, including
/opt/rh, so Python was not able to access its shared libraries. The
installation then failed in the middle, leaving half-usable Ansible
installation (for Zuul's internal purposes). This meant that there was
no `openstack` package, so log upload to Swift was failing.

Ansible installation still could not be bootstrapped, and zuul-executor
died (unfortunatley just once):

 Installing collected packages: MarkupSafe, jinja2, PyYAML, pycparser, cffi, six, pynacl, cryptography, bcrypt, paramiko, ansible, XStatic-Bootstrap-SCSS, pyfakefs, XStatic-Patternfly-Bootstrap-Treeview, wcwidth, pyparsing, pyperclip, cmd2, pbr, stevedore, PrettyTable, cliff, XStatic, XStatic-Patternfly, wrapt, debtcollector, msgpack, pytz, netaddr, iso8601, netifaces, Babel, oslo.i18n, oslo.utils, oslo.serialization, itsdangerous, Werkzeug, click, Flask, SQLAlchemy, Flask-SQLAlchemy, XStatic-jQuery, Mako, python-editor, python-dateutil, alembic, Flask-Migrate, pygments, junit-xml, Flask-Script, Frozen-Flask, extras, linecache2, traceback2, argparse, unittest2, fixtures, python-mimeparse, testtools, python-subunit, XStatic-DataTables, ara, os-service-types, urllib3, chardet, idna, certifi, requests, keystoneauth1, jsonpointer, jsonpatch, appdirs, munch, decorator, jmespath, requestsexceptions, dogpile.cache, openstacksdk, dictdiffer, websocket-client, pyasn1, rsa, pyasn1-modules, cachetools, google-auth, oauthlib, requests-oauthlib, kubernetes, python-string-utils, ruamel.yaml.clib, ruamel.yaml, openshift, google-resumable-media, protobuf, googleapis-common-protos, google-api-core, google-cloud-core, google-cloud-storage
 Running setup.py install for PyYAML: started
 Running setup.py install for PyYAML: finished with status 'done'
 Running setup.py install for ansible: started
 Running setup.py install for ansible: finished with status 'done'
 Running setup.py install for XStatic-Patternfly-Bootstrap-Treeview: started
 Running setup.py install for XStatic-Patternfly-Bootstrap-Treeview: finished with status 'error'
 Complete output from command /var/lib/zuul/ansible-bin/2.6/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-24z_rrjk/XStatic-Patternfly-Bootstrap-Treeview/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-6ie_p40b-record/install-record.txt --single-version-externally-managed --compile --install-headers /var/lib/zuul/ansible-bin/2.6/include/site/python3.6/XStatic-Patternfly-Bootstrap-Treeview:
 Traceback (most recent call last):
 File "<string>", line 1, in <module>
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/setuptools/__init__.py", line 10, in <module>
 from setuptools.extern.six.moves import filter, filterfalse, map
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/setuptools/extern/__init__.py", line 1, in <module>
 from pkg_resources.extern import VendorImporter
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3017, in <module>
 @_call_aside
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3003, in _call_aside
 f(*args, **kwargs)
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3045, in _initialize_master_working_set
 dist.activate(replace=False)
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2577, in activate
 declare_namespace(pkg)
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2151, in declare_namespace
 _handle_ns(packageName, path_item)
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2091, in _handle_ns
 _rebuild_mod_path(path, packageName, module)
 File "/var/lib/zuul/ansible-bin/2.6/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2120, in _rebuild_mod_path
 orig_path.sort(key=position_in_sys_path)
 AttributeError: '_NamespacePath' object has no attribute 'sort'

This looks like https://github.com/pypa/pip/issues/4216, and apparently
an upgrade of PIP should help, except that it does not, but an update of
setuptools from 36.5.0 to 46.1.3 should help, but it also does not, but
an update of virtualenv from 15.1.0 to 20.0.16 should help, because that
one is apparently used by Zuul for installing virtual environments for
Ansible. Thanks to webknjaz on IRC for explaining that to me; the TL;DR
is that "virtualenv" decides about which PIP gets used in the
just-created virtual environment.

Change-Id: Ie1e624d21e1f4040804d80dc5deaaeadd81ff07a
See-also: https://review.opendev.org/718425
diff --git a/roles/zuul_server/tasks/main.yaml b/roles/zuul_server/tasks/main.yaml
index 2de722f..9ed263d 100644
--- a/roles/zuul_server/tasks/main.yaml
+++ b/roles/zuul_server/tasks/main.yaml
@@ -60,7 +60,7 @@
     name: openstack.zuul
   vars:
     zuul_install_method: pip
-    zuul_git_version: '3.7.1'
+    zuul_git_version: '3.18.0'
     zuul_pip_executable: /opt/rh/rh-python36/root/bin/pip
     zuul_pip_extra_args: "--install-option='--install-scripts=/usr/local/bin'"
     zuul_file_zuul_conf_src: files/zuul/zuul.conf