82d3910b17
The docker image that we build the zuul executor from is a Debian image, but it does not follow the same python3 policies as Debian itself. While we would not necessarily expect all roles to work on the executor, it is reasonable to want to use the ensure-pip role (which logically should be a no-op on the executor) for the side effect of finding and returning the appropriate pip command. Currently, the role fails on the executor because it mistakenly concludes that it must install python3-venv to get a working venv module. By increasing the precision of the check for what is missing (the actual error is a missing "ensurepip" python module (oh irony!), we can avoid attempting an installation of python3-venv on python docker images (including the Zuul executor images). This also adds the ensure-pip-localhost job This tests that the ensure-pip role works on the Zuul executor. The executor is a debian host with a working python environment, so it should be a no-op (and no packages should need to be installed). Change-Id: Id7f13f2f73d45e680f79c00a83751b185212a63d
73 lines
2.3 KiB
YAML
73 lines
2.3 KiB
YAML
- hosts: localhost
|
|
tasks:
|
|
# ensure-pip
|
|
|
|
- name: Include ensure-pip
|
|
include_role:
|
|
name: ensure-pip
|
|
|
|
- name: Create temp directory
|
|
tempfile:
|
|
state: directory
|
|
suffix: venv-test
|
|
register: _tmp_venv
|
|
|
|
- name: Sanity check provided virtualenv command installs
|
|
pip:
|
|
name: tox
|
|
virtualenv_command: '{{ ensure_pip_virtualenv_command }}'
|
|
virtualenv: '{{ _tmp_venv.path }}'
|
|
|
|
- name: Sanity check installed command runs without error
|
|
command: '{{ _tmp_venv.path }}/bin/tox --version'
|
|
|
|
- name: Remove tmpdir
|
|
file:
|
|
path: '{{ _tmp_venv.path }}'
|
|
state: absent
|
|
|
|
- name: Sanity check pip wheel generation
|
|
shell: |
|
|
cd {{ ansible_user_dir }}/src/opendev.org/zuul/zuul-client
|
|
# This should run anywhere without too much logic ...
|
|
run_pip=$(command -v pip3 || command -v pip2 || command -v pip)
|
|
# Preinstall pbr to work around very old distutils lacking SNI support
|
|
$run_pip install pbr
|
|
$run_pip wheel --no-deps .
|
|
ls zuul_client-*.whl || exit 1
|
|
|
|
- name: Test virtualenv
|
|
# NOTE(ianw) 2022-02-03 : not supported on 9-stream, see inline comments
|
|
# NOTE(frickler) 2022-03-01 : pin pluggy so as to work on Debian Buster
|
|
when: not (ansible_facts['distribution'] == 'CentOS' and ansible_facts['distribution_major_version']|int >= 9)
|
|
block:
|
|
# ensure-virtualenv
|
|
- name: Include ensure-virtualenv
|
|
include_role:
|
|
name: ensure-virtualenv
|
|
|
|
- name: Sanity check virtualenv command works
|
|
shell: |
|
|
tmp_venv=$(mktemp -d -t venv-XXXXXXXXXX)
|
|
trap "rm -rf $tmp_venv" EXIT
|
|
virtualenv $tmp_venv
|
|
$tmp_venv/bin/pip install tox "pluggy<1"
|
|
failed_when: false
|
|
register: _virtualenv_sanity
|
|
|
|
- name: Assert sanity check
|
|
fail:
|
|
msg: 'The virtualenv command does not appear to work!'
|
|
when:
|
|
- _virtualenv_sanity.rc != 0
|
|
|
|
# NOTE(ianw) : this does not play nicely with pip-and-virtualenv which
|
|
# has already installed from source. We might be able to test this
|
|
# once it's gone...
|
|
|
|
# - hosts: all
|
|
# roles:
|
|
# - role: ensure-pip
|
|
# vars:
|
|
# ensure_pip_from_upstream: True
|