- 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 :type: dict Environment variables to pass in to the tox run. .. 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 python_version: 2.7 - 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. Changes to the zuul-jobs collection are no longer regression tested with Python 3.4, but this job definition is being retained for backward compatibility. 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. Changes to the zuul-jobs collection are no longer regression tested with Python 3.5, but this job definition is being retained for backward compatibility. 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-py39 parent: tox description: | Run unit tests for a Python project under cPython version 3.9. Uses tox with the ``py39`` environment. vars: tox_envlist: py39 python_version: 3.9 - 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 - 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 :type: dict Environment variables to pass in to the tox run. .. 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. 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. # 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.