67f223b53a
This partially reverts commit 3f961ce202d7d24e2944de09636b35cec9c13bf6. This alternative installs wheel with the ensure-pip role instead of in a separate role. wheel is very closely linked with pip install operations so this isn't a large overreach of the role. I suggest this for several reasons; firstly the python-wheel role doesn't try to install packages, so we end up with mixed system pip and upstream versions of wheel most of the time. This is the type of thing that has proven problematic in the past. It also installs via pip --user; something we've already had problems with tox when for various reasons roles want to run this as non-zuul user. Using ensure-pip we keep the packaged versions together. [1] did try to install wheel with root, but during runtime which didn't work due to sudo being revoked. This should work for the existing build-python-release job, because it already includes ensure-pip in pre-run via playbooks/python/pre.yaml I believe our conclusion on the ensure-* roles was that requiring root/become: for installation is OK, but we should have a no-op path if the tools are found. This is consistent with that approach (i.e. if you want wheel and can't do sudo, you should pre-install it on your image using whatever you build that with). This adds a check to the existing "is pip installed" check to also check if wheel packages are available. If not we trigger the install path. This revealed some issues with RedHat.yaml -- we can always install Python 3 (packages available for CentOS 7) so remove that check, and if Ansible is running under Python 2; ensure we install the dependencies too (not only if it is forced). Update the documentation to describe that it will enable support for bdist_wheel, and add a basic sanity test that wheels are produced by pip. The existing build-python-release job is kept; although it is modified to use the playbooks/python/pre.yaml playbook as the build job does. Change-Id: I2ab11bb45b6b2a49d54db39195228ab40141185c [1] https://review.opendev.org/#/c/736001/5/roles/build-python-release/tasks/main.yaml
350 lines
9.2 KiB
YAML
350 lines
9.2 KiB
YAML
- job:
|
|
name: tox
|
|
parent: unittests
|
|
description: |
|
|
Base job containing setup and teardown for tox-based test jobs.
|
|
|
|
This performs basic host and general project setup tasks common
|
|
to all tox unit test jobs.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: tox_envlist
|
|
|
|
Use the specified tox environments (``ALL`` selects all).
|
|
|
|
.. zuul:jobvar:: tox_environment
|
|
|
|
List of user defined environmental variables to pass to bash
|
|
shell.
|
|
|
|
.. zuul:jobvar:: tox_extra_args
|
|
|
|
String containing extra arguments to append to the tox command line.
|
|
|
|
.. zuul:jobvar:: tox_constraints_file
|
|
|
|
Path to a pip constraints file. Will be provided to tox in the
|
|
TOX_CONSTRAINTS_FILE environment variable if it exists.
|
|
|
|
.. zuul:jobvar:: tox_install_siblings
|
|
:default: true
|
|
|
|
Override tox requirements that have corresponding zuul git repos
|
|
on the node by installing the git versions into the tox virtualenv.
|
|
|
|
.. zuul:jobvar:: tox_install_bindep
|
|
:default: true
|
|
|
|
Whether or not to run the binary dependencies detection and
|
|
installation with bindep.
|
|
run: playbooks/tox/run.yaml
|
|
pre-run: playbooks/tox/pre.yaml
|
|
post-run: playbooks/tox/post.yaml
|
|
vars:
|
|
tox_environment:
|
|
NOSE_WITH_HTML_OUTPUT: 1
|
|
NOSE_HTML_OUT_FILE: nose_results.html
|
|
NOSE_WITH_XUNIT: 1
|
|
|
|
- job:
|
|
name: tox-py27
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 2.7.
|
|
|
|
Uses tox with the ``py27`` environment.
|
|
vars:
|
|
tox_envlist: py27
|
|
|
|
- job:
|
|
name: tox-py34
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 3.4.
|
|
|
|
Uses tox with the ``py34`` environment.
|
|
vars:
|
|
tox_envlist: py34
|
|
python_version: 3.4
|
|
|
|
- job:
|
|
name: tox-py35
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 3.5.
|
|
|
|
Uses tox with the ``py35`` environment.
|
|
vars:
|
|
tox_envlist: py35
|
|
python_version: 3.5
|
|
|
|
- job:
|
|
name: tox-py36
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 3.6.
|
|
|
|
Uses tox with the ``py36`` environment.
|
|
vars:
|
|
tox_envlist: py36
|
|
python_version: 3.6
|
|
|
|
- job:
|
|
name: tox-py37
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 3.7.
|
|
|
|
Uses tox with the ``py37`` environment.
|
|
vars:
|
|
tox_envlist: py37
|
|
python_version: 3.7
|
|
|
|
- job:
|
|
name: tox-py38
|
|
parent: tox
|
|
description: |
|
|
Run unit tests for a Python project under cPython version 3.8.
|
|
|
|
Uses tox with the ``py38`` environment.
|
|
vars:
|
|
tox_envlist: py38
|
|
python_version: 3.8
|
|
|
|
- job:
|
|
name: tox-docs
|
|
# This is not parented to tox since we do not need
|
|
# the roles from its parent unittests.
|
|
description: |
|
|
Run documentation unit tests.
|
|
|
|
Uses tox with the ``docs`` environment.
|
|
vars:
|
|
tox_envlist: docs
|
|
bindep_profile: compile doc
|
|
run: playbooks/tox/run.yaml
|
|
pre-run:
|
|
- playbooks/tox-docs/pre.yaml
|
|
- playbooks/tox/pre.yaml
|
|
post-run:
|
|
- playbooks/tox/docs-post.yaml
|
|
- playbooks/tox/post.yaml
|
|
success-url: docs/
|
|
|
|
- job:
|
|
name: tox-linters
|
|
parent: tox
|
|
description: |
|
|
Runs code linting tests.
|
|
|
|
Uses tox with the ``linters`` environment.
|
|
vars:
|
|
tox_envlist: linters
|
|
test_setup_skip: true
|
|
|
|
- job:
|
|
name: tox-molecule
|
|
parent: tox
|
|
pre-run: playbooks/tox/pre-molecule.yaml
|
|
description: |
|
|
Runs Ansible molecule testing on a system where docker is available.
|
|
|
|
Uses tox with the ``molecule`` environment.
|
|
vars:
|
|
tox_envlist: molecule
|
|
|
|
- job:
|
|
name: tox-pep8
|
|
parent: tox
|
|
description: |
|
|
Runs code pep8 tests.
|
|
|
|
Uses tox with the ``pep8`` environment.
|
|
vars:
|
|
tox_envlist: pep8
|
|
test_setup_skip: true
|
|
|
|
- job:
|
|
name: tox-cover
|
|
parent: tox
|
|
description: |
|
|
Run code coverage tests.
|
|
|
|
Uses tox with the ``cover`` environment.
|
|
post-run: playbooks/tox/cover-post.yaml
|
|
vars:
|
|
tox_envlist: cover
|
|
|
|
- job:
|
|
name: tox-bashate
|
|
parent: tox
|
|
description: |
|
|
Run bashate tests.
|
|
|
|
Uses tox with the ``bashate`` environment.
|
|
vars:
|
|
tox_envlist: bashate
|
|
|
|
- job:
|
|
name: tox-nodejs-npm
|
|
parent: tox
|
|
description: |
|
|
Run tests using tox but with the javascript toolchain installed
|
|
and available as well. A combination of the tox and nodejs-npm
|
|
jobs. By default will run npm before running the tox environment listed.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: tox_envlist
|
|
|
|
Use the specified tox environments (``ALL`` selects all).
|
|
|
|
.. zuul:jobvar:: tox_environment
|
|
|
|
List of user defined environmental variables to pass to bash
|
|
shell.
|
|
|
|
.. zuul:jobvar:: tox_extra_args
|
|
|
|
String containing extra arguments to append to the tox command line.
|
|
|
|
.. zuul:jobvar:: tox_constraints_file
|
|
|
|
Path to a pip constraints file. Will be provided to tox in the
|
|
TOX_CONSTRAINTS_FILE environment variable if it exists.
|
|
|
|
.. zuul:jobvar:: tox_install_siblings
|
|
:default: true
|
|
|
|
Override tox requirements that have corresponding zuul git repos
|
|
on the node by installing the git versions into the tox virtualenv.
|
|
|
|
.. zuul:jobvar:: npm_command
|
|
:default: build
|
|
|
|
Command to pass to npm.
|
|
|
|
.. zuul:jobvar:: node_version
|
|
:default: 6
|
|
|
|
The version of Node to use.
|
|
|
|
.. zuul:jobvar:: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
|
|
.. zuul:jobvar:: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
pre-run: playbooks/javascript/pre.yaml
|
|
run: playbooks/tox/npm.yaml
|
|
post-run: playbooks/javascript/post.yaml
|
|
vars:
|
|
npm_command: build
|
|
|
|
- job:
|
|
name: build-python-release
|
|
description: |
|
|
Build a source tarball and a bdist wheel for uploading.
|
|
pre-run: playbooks/python/pre.yaml
|
|
run: playbooks/python/release.yaml
|
|
post-run: playbooks/python/tarball-post.yaml
|
|
|
|
- job:
|
|
name: python-upload-pypi
|
|
parent: build-python-release
|
|
description: |
|
|
Generate and upload a python source tarball and binary wheel
|
|
|
|
Requires a variable ``pypi_info`` be set which is a dict containing
|
|
at least a ``username`` and ``password`` attribute.
|
|
post-run: playbooks/python/upload-pypi.yaml
|
|
|
|
- job:
|
|
name: build-sphinx-docs
|
|
description: |
|
|
Build documentation using Sphinx
|
|
|
|
Additional requirements can be provided in a project in either the
|
|
file ``doc/requirements.txt`` or ``test-requirements.txt``. (The first
|
|
file found in that order will be the one used) Non-python distro
|
|
requirements can be specified in ``bindep.txt`` using the ``doc`` tag.
|
|
|
|
Runs `whereto https://docs.openstack.org/whereto/latest/` after the build
|
|
if it is installed.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: constraints_file
|
|
|
|
Optional path to a pip constraints file for installing python
|
|
libraries.
|
|
|
|
.. zuul:jobvar:: sphinx_python
|
|
:default: python2
|
|
|
|
Version of python to use, either ``python2`` or ``python3``.
|
|
|
|
.. zuul:jobvar:: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Directory to operate in.
|
|
success-url: html/
|
|
pre-run: playbooks/sphinx/pre.yaml
|
|
run: playbooks/sphinx/run.yaml
|
|
post-run: playbooks/sphinx/post.yaml
|
|
|
|
- job:
|
|
name: build-reno-releasenotes
|
|
description: |
|
|
Build releasenotes using reno
|
|
|
|
Additional requirements can be provided in a project in either the
|
|
file ``doc/requirements.txt`` or ``test-requirements.txt``. (The first
|
|
file found in that order will be the one used) Non-python distro
|
|
requirements can be specified in ``bindep.txt`` using the ``doc`` tag.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: constraints_file
|
|
|
|
Optional path to a pip constraints file for installing python
|
|
libraries.
|
|
|
|
.. zuul:jobvar:: sphinx_python
|
|
:default: python2
|
|
|
|
Version of python to use, either ``python2`` or ``python3``.
|
|
|
|
.. zuul:jobvar:: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Directory to operate in.
|
|
success-url: docs/
|
|
# Release notes always build on master.
|
|
override-checkout: master
|
|
pre-run: playbooks/releasenotes/pre.yaml
|
|
run: playbooks/releasenotes/run.yaml
|
|
post-run: playbooks/releasenotes/post.yaml
|
|
files:
|
|
- ^releasenotes/.*
|
|
- bindep.txt
|
|
- doc/requirements.txt
|
|
- test-requirements.txt
|
|
- tox.ini
|
|
|
|
- job:
|
|
name: markdownlint
|
|
files: '^.*\.md$'
|
|
pre-run: playbooks/markdownlint/pre.yaml
|
|
run: playbooks/markdownlint/run.yaml
|
|
post-run: playbooks/markdownlint/post.yaml
|
|
description: |
|
|
Check any markdown for basic lint problems. Include a file named
|
|
`.markdownlint.json` that is configured according to
|
|
https://github.com/DavidAnson/markdownlint#optionsconfig
|
|
to control rule specifics.
|