swift/tools/playbooks/common/install_dependencies.yaml
Tim Burke 2d7c1dc6dd CI: Fix our usage of tox
For tox 3.x and earlier, passenv was a space-separated list; as of tox
4.0.0, it's comma-separated. For a while, our spaces would be silently
included in the now-one-and-only passenv value parsed (which wasn't
great, but mostly just caused confusion) -- as of tox 4.0.6, however, it
became a hard error, and all tests would fail like

  pass_env values cannot contain whitespace, use comma to have multiple
  values in a single line, invalid values found 'SWIFT_* *_proxy'

Unfortunately, we don't really know what versions of tox all our various
stakeholders might want/need to use (though we previously set a
minversion of 2.3.2). We might be able to spread values over multiple
lines to make it compatible with both tox 3 *and* tox 4, but I'm fairly
certain *_proxy was only included for some variables that are recent
versions of tox include by default anyway, so just increase our
minversion (which was too low, anyway -- allowlist_externals which we
already configure was added in 3.18.0) and get rid of *_proxy.

FWIW, python-swiftclient was already specifying 3.18.0 as a minversion,
so I expect the new minversion to not be a problem.

Also, add ./.functests to a bunch of allowlist_externals, as newer tox
is more strict about that sort of thing.

Drop skipsdist in a bunch of places so we can import swift from func
tests and docs. (Still not sure why I don't see us hitting a similar
problem for unit tests...)

Change-Id: I4be1e86e3291ad1619c695fb93d7cadf053b556d
2022-12-29 13:36:06 -08:00

60 lines
2.0 KiB
YAML

# Copyright (c) 2018 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
- hosts: all
become: true
roles:
- ensure-pip
tasks:
- name: upgrade pip, but not too far
pip:
# 20.* works on both py2 and py3, and the pip for centos7 in EPEL
# isn't smart enough to prevent us upgrading to 21+
name: pip<21
extra_args: --upgrade
- name: install rsync-daemon - CentOS 8
package:
name: rsync-daemon
state: present
when:
- ansible_facts['distribution'] == "CentOS"
- ansible_facts['distribution_major_version'] == "8"
- name: install python modules with pip
pip: name={{ item }} state=present extra_args='--upgrade'
with_items:
# For some reason, pip on py2 isn't smart enough to prevent us
# trying to install a too-new mock or attrs??
- 'mock<4'
- 'attrs<22.1.0'
# crudini pulls in iniparse which can conflict with distro-installed
# packages on centos7
- 'crudini<0.9.4'
# Order matters; install constrained versions *first*, then unconstrained
- eventlet
- pyeclib
- pytest
- pytest-cov
- python-swiftclient
- name: install PasteDeploy - CentOS 7
pip: name={{ item }} state=present extra_args='--upgrade'
with_items:
# py2_constraints isn't obeyed by pip install swift
- 'PasteDeploy==2.1.1'
when:
- ansible_facts['distribution'] == "CentOS"
- ansible_facts['distribution_major_version'] == "7"