Add ensure-nox role
This is an alternative to tox. Change-Id: I394774836e303584473f0e7d64d496baa393037a
This commit is contained in:
parent
41153f0653
commit
77b1b24911
@ -5,6 +5,7 @@ Python Roles
|
|||||||
.. zuul:autorole:: build-releasenotes
|
.. zuul:autorole:: build-releasenotes
|
||||||
.. zuul:autorole:: ensure-babel
|
.. zuul:autorole:: ensure-babel
|
||||||
.. zuul:autorole:: ensure-if-python
|
.. zuul:autorole:: ensure-if-python
|
||||||
|
.. zuul:autorole:: ensure-nox
|
||||||
.. zuul:autorole:: ensure-pip
|
.. zuul:autorole:: ensure-pip
|
||||||
.. zuul:autorole:: ensure-python
|
.. zuul:autorole:: ensure-python
|
||||||
.. zuul:autorole:: ensure-sphinx
|
.. zuul:autorole:: ensure-sphinx
|
||||||
|
26
roles/ensure-nox/README.rst
Normal file
26
roles/ensure-nox/README.rst
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
Ensure nox is installed
|
||||||
|
|
||||||
|
Look for ``nox``, and if not found, install it via ``pip`` into a
|
||||||
|
virtual environment for the current user.
|
||||||
|
|
||||||
|
**Role Variables**
|
||||||
|
|
||||||
|
.. zuul:rolevar:: ensure_nox_version
|
||||||
|
:default: ''
|
||||||
|
|
||||||
|
Version specifier to select the version of nox. The default is the
|
||||||
|
latest version.
|
||||||
|
|
||||||
|
**Output Variables**
|
||||||
|
|
||||||
|
.. zuul:rolevar:: nox_executable
|
||||||
|
:default: nox
|
||||||
|
|
||||||
|
After running this role, ``nox_executable`` will be set as the path
|
||||||
|
to a valid ``nox``.
|
||||||
|
|
||||||
|
At role runtime, look for an existing ``nox`` at this specific
|
||||||
|
path. Note the default (``nox``) effectively means to find tox in
|
||||||
|
the current ``$PATH``. For example, if your base image
|
||||||
|
pre-installs tox in an out-of-path environment, set this so the
|
||||||
|
role does not attempt to install the user version.
|
3
roles/ensure-nox/defaults/main.yaml
Normal file
3
roles/ensure-nox/defaults/main.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
nox_executable: nox
|
||||||
|
ensure_nox_version: ''
|
||||||
|
nox_venv_path: '{{ ansible_user_dir }}/.local/nox'
|
34
roles/ensure-nox/tasks/main.yaml
Normal file
34
roles/ensure-nox/tasks/main.yaml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
- name: Install pip
|
||||||
|
include_role:
|
||||||
|
name: ensure-pip
|
||||||
|
|
||||||
|
- name: Check if nox is installed
|
||||||
|
shell: |
|
||||||
|
command -v {{ nox_executable }} {{ nox_venv_path }}/bin/nox || exit 1
|
||||||
|
args:
|
||||||
|
executable: /bin/bash
|
||||||
|
register: nox_preinstalled
|
||||||
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Export preinstalled nox_exectuable
|
||||||
|
set_fact:
|
||||||
|
nox_executable: '{{ nox_preinstalled.stdout_lines[0] }}'
|
||||||
|
cacheable: true
|
||||||
|
when: nox_preinstalled.rc == 0
|
||||||
|
|
||||||
|
- name: Install nox to local env
|
||||||
|
when: nox_preinstalled.rc != 0
|
||||||
|
block:
|
||||||
|
- name: Create local venv
|
||||||
|
command: '{{ ensure_pip_virtualenv_command }} {{ nox_venv_path }}'
|
||||||
|
|
||||||
|
- name: Install nox to local venv
|
||||||
|
command: '{{ nox_venv_path }}/bin/pip install nox{{ ensure_nox_version }}'
|
||||||
|
|
||||||
|
- name: Export installed nox_executable path
|
||||||
|
set_fact:
|
||||||
|
nox_executable: '{{ nox_venv_path }}/bin/nox'
|
||||||
|
cacheable: true
|
||||||
|
|
||||||
|
- name: Output nox version
|
||||||
|
command: "{{ nox_executable }} --version"
|
55
test-playbooks/ensure-nox.yaml
Normal file
55
test-playbooks/ensure-nox.yaml
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
- hosts: all
|
||||||
|
name: Remove any pre-installed nox
|
||||||
|
tasks:
|
||||||
|
- name: Remove nox package with pip
|
||||||
|
shell: pip uninstall -y nox
|
||||||
|
args:
|
||||||
|
warn: false
|
||||||
|
become: true
|
||||||
|
failed_when: false
|
||||||
|
- name: Remove nox package with pip3
|
||||||
|
shell: pip3 uninstall -y nox
|
||||||
|
args:
|
||||||
|
warn: false
|
||||||
|
become: true
|
||||||
|
failed_when: false
|
||||||
|
- name: Verify nox is not installed
|
||||||
|
command: "nox --version"
|
||||||
|
register: result
|
||||||
|
failed_when: result.rc == 0
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
name: Test ensure-nox installs into user environment
|
||||||
|
tasks:
|
||||||
|
- name: Verify nox is not installed
|
||||||
|
command: "nox --version"
|
||||||
|
register: result
|
||||||
|
failed_when: result.rc == 0
|
||||||
|
- name: Run ensure-nox with nox not installed
|
||||||
|
include_role:
|
||||||
|
name: ensure-nox
|
||||||
|
- name: Verify nox_executable is set
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- nox_executable == "{{ ansible_user_dir }}/.local/nox/bin/nox"
|
||||||
|
- name: Verify nox is installed
|
||||||
|
command: "{{ nox_executable }} --version"
|
||||||
|
register: result
|
||||||
|
failed_when: result.rc != 0
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
name: Test ensure-nox when nox_executable is set to an already installed nox
|
||||||
|
tasks:
|
||||||
|
- name: Create a virtualenv
|
||||||
|
command: '{{ ensure_pip_virtualenv_command }} {{ ansible_user_dir }}/nox-venv'
|
||||||
|
- name: Install nox to local venv
|
||||||
|
command: '{{ ansible_user_dir }}/nox-venv/bin/pip install nox'
|
||||||
|
- name: Run ensure-nox pointing to an already installed nox
|
||||||
|
include_role:
|
||||||
|
name: ensure-nox
|
||||||
|
vars:
|
||||||
|
nox_executable: "{{ ansible_user_dir }}/nox-venv/bin/nox"
|
||||||
|
- name: Verify nox_executable is set to the virtualenv nox
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- nox_executable == '{{ ansible_user_dir }}/nox-venv/bin/nox'
|
@ -1,3 +1,112 @@
|
|||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox
|
||||||
|
description: Test the ensure-nox role
|
||||||
|
files:
|
||||||
|
- roles/ensure-nox/.*
|
||||||
|
- test-playbooks/ensure-nox.yaml
|
||||||
|
run: test-playbooks/ensure-nox.yaml
|
||||||
|
tags: all-platforms
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-centos-7
|
||||||
|
description: Test the ensure-nox role on centos-7
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: centos-7
|
||||||
|
label: centos-7
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-centos-8-stream
|
||||||
|
description: Test the ensure-nox role on centos-8-stream
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: centos-8-stream
|
||||||
|
label: centos-8-stream
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-centos-9-stream
|
||||||
|
description: Test the ensure-nox role on centos-9-stream
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: centos-9-stream
|
||||||
|
label: centos-9-stream
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-debian-bullseye
|
||||||
|
description: Test the ensure-nox role on debian-bullseye
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: debian-bullseye
|
||||||
|
label: debian-bullseye
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-debian-buster
|
||||||
|
description: Test the ensure-nox role on debian-buster
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: debian-buster
|
||||||
|
label: debian-buster
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-fedora-36
|
||||||
|
description: Test the ensure-nox role on fedora-36
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: fedora-36
|
||||||
|
label: fedora-36
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-opensuse-15
|
||||||
|
description: Test the ensure-nox role on opensuse-15
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: opensuse-15
|
||||||
|
label: opensuse-15
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-ubuntu-bionic
|
||||||
|
description: Test the ensure-nox role on ubuntu-bionic
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: ubuntu-bionic
|
||||||
|
label: ubuntu-bionic
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-ubuntu-focal
|
||||||
|
description: Test the ensure-nox role on ubuntu-focal
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: ubuntu-focal
|
||||||
|
label: ubuntu-focal
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: zuul-jobs-test-ensure-nox-ubuntu-jammy
|
||||||
|
description: Test the ensure-nox role on ubuntu-jammy
|
||||||
|
parent: zuul-jobs-test-ensure-nox
|
||||||
|
tags: auto-generated
|
||||||
|
nodeset:
|
||||||
|
nodes:
|
||||||
|
- name: ubuntu-jammy
|
||||||
|
label: ubuntu-jammy
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: zuul-jobs-test-ensure-pip
|
name: zuul-jobs-test-ensure-pip
|
||||||
description: Test the ensure-pip role
|
description: Test the ensure-pip role
|
||||||
@ -458,6 +567,16 @@
|
|||||||
- project:
|
- project:
|
||||||
check:
|
check:
|
||||||
jobs: &id001
|
jobs: &id001
|
||||||
|
- zuul-jobs-test-ensure-nox-centos-7
|
||||||
|
- zuul-jobs-test-ensure-nox-centos-8-stream
|
||||||
|
- zuul-jobs-test-ensure-nox-centos-9-stream
|
||||||
|
- zuul-jobs-test-ensure-nox-debian-bullseye
|
||||||
|
- zuul-jobs-test-ensure-nox-debian-buster
|
||||||
|
- zuul-jobs-test-ensure-nox-fedora-36
|
||||||
|
- zuul-jobs-test-ensure-nox-opensuse-15
|
||||||
|
- zuul-jobs-test-ensure-nox-ubuntu-bionic
|
||||||
|
- zuul-jobs-test-ensure-nox-ubuntu-focal
|
||||||
|
- zuul-jobs-test-ensure-nox-ubuntu-jammy
|
||||||
- zuul-jobs-test-ensure-pip-centos-7
|
- zuul-jobs-test-ensure-pip-centos-7
|
||||||
- zuul-jobs-test-ensure-pip-centos-8-stream
|
- zuul-jobs-test-ensure-pip-centos-8-stream
|
||||||
- zuul-jobs-test-ensure-pip-centos-9-stream
|
- zuul-jobs-test-ensure-pip-centos-9-stream
|
||||||
|
Loading…
Reference in New Issue
Block a user