zuul-jobs/zuul.d/python-jobs.yaml
Clark Boylan efa55f881d Modernize ensure-nodejs
The ensure-nodejs role defaults to install nodejs 6 which produces this
error currently:

  Failed to update apt cache: W:The repository
  'https://deb.nodesource.com/node_6.x noble Release' does not have a
  Release file., W:Data from such a repository can't be authenticated
  and is therefore potentially dangerous to use.

We need to make a few changes to bring this ensure-nodejs role up to
modern expectations for nodesource usage. First we drop the default
nodejs version from ensure-nodejs. Everyone is already setting this
value to make this role work or they are broken and will need to change
something anyway. This gets us off of the nodejs update treadmill in
this role.

Then with nodejs 16 and newer there is a new gpg key and no deb-src
packages so we need to change the apt configuration if using 16 and
newer. We make these changes to match the corresponding setup_16.x etc
scripts from nodesource.

Change-Id: I0d5c93e4fbcee0be2cc477bf9f625e419a2b9bd1
2024-09-18 16:46:00 -07:00

637 lines
16 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
: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-fips
parent: unittests-fips
description: |
Base job containing setup and teardown for fips and tox-based test jobs.
This performs basic host and general project setup tasks common
to all tox unit test jobs related to fips.
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-py310
parent: tox
description: |
Run unit tests for a Python project under cPython version 3.10.
Uses tox with the ``py310`` environment.
vars:
tox_envlist: py310
python_version: "3.10"
- job:
name: tox-py311
parent: tox
description: |
Run unit tests for a Python project under cPython version 3.11.
Uses tox with the ``py311`` environment.
vars:
tox_envlist: py311
python_version: "3.11"
- job:
name: tox-py312
parent: tox
description: |
Run unit tests for a Python project under cPython version 3.12.
Uses tox with the ``py312`` environment.
vars:
tox_envlist: py312
python_version: "3.12"
- 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: 14
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: nox
parent: unittests
description: |
Base job containing setup and teardown for nox-based test jobs.
This performs basic host and general project setup tasks common
to all nox unit test jobs.
Responds to these variables:
.. zuul:jobvar:: nox_session
Use the specified nox sessions
.. zuul:jobvar:: nox_keyword
Use the specified nox keyword
.. zuul:jobvar:: nox_tag
Use the specified nox tag
.. zuul:jobvar:: nox_force_python
Force nox to run the selected sessions under this version of python.
.. zuul:jobvar:: nox_config_file
Override the default noxfile.py configuration path.
.. zuul:jobvar:: nox_environment
:type: dict
Environment variables to pass in to the nox run.
Nox behaves differently when CI=1 is set. Consider setting this
if you override the role defaults.
.. zuul:jobvar:: nox_extra_args
String containing extra arguments to append to the nox command line.
.. zuul:jobvar:: nox_constraints_file
Path to a pip constraints file. Will be provided to nox in the
NOX_CONSTRAINTS_FILE environment variable if it exists.
.. zuul:jobvar:: nox_install_siblings
:default: true
Override nox requirements that have corresponding zuul git repos
on the node by installing the git versions into the nox virtualenv.
.. zuul:jobvar:: nox_install_bindep
:default: true
Whether or not to run the binary dependencies detection and
installation with bindep.
run: playbooks/nox/run.yaml
pre-run: playbooks/nox/pre.yaml
- job:
name: nox-py36
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.6.
Uses nox with the ``test`` keyword forcing python 3.6.
vars:
nox_keyword: tests
nox_force_python: "3.6"
python_version: "3.6"
- job:
name: nox-py37
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.7.
Uses nox with the ``test`` keyword forcing python 3.7.
vars:
nox_keyword: tests
nox_force_python: "3.7"
python_version: "3.7"
- job:
name: nox-py38
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.8.
Uses nox with the ``test`` keyword forcing python 3.8.
vars:
nox_keyword: tests
nox_force_python: "3.8"
python_version: "3.8"
- job:
name: nox-py39
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.9.
Uses nox with the ``test`` keyword forcing python 3.9.
vars:
nox_keyword: tests
nox_force_python: "3.9"
python_version: "3.9"
- job:
name: nox-py310
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.10.
Uses nox with the ``test`` keyword forcing python 3.10.
vars:
nox_keyword: tests
nox_force_python: "3.10"
python_version: "3.10"
- job:
name: nox-py311
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.11.
Uses nox with the ``test`` keyword forcing python 3.11.
vars:
nox_keyword: tests
nox_force_python: "3.11"
python_version: "3.11"
- job:
name: nox-py312
parent: nox
description: |
Run unit tests for a Python project under cPython version 3.12.
Uses nox with the ``test`` keyword forcing python 3.12.
vars:
nox_keyword: tests
nox_force_python: "3.12"
python_version: "3.12"
- job:
name: nox-cover
parent: nox
description: |
Run code coverage tests.
Uses nox with the ``cover`` keyword.
post-run: playbooks/nox/cover-post.yaml
vars:
nox_keyword: cover
- job:
name: nox-linters
parent: nox
description: |
Runs code linting tests.
Uses nox with the ``linters`` keyword.
vars:
nox_keyword: linters
test_setup_skip: true
- job:
name: nox-docs
# This is not parented to nox since we do not need
# the roles from its parent unittests.
description: |
Run documentation unit tests.
Uses nox with the ``docs`` keyword.
vars:
nox_keyword: docs
bindep_profile: compile doc
run: playbooks/nox/run.yaml
pre-run:
- playbooks/nox/docs-pre.yaml
- playbooks/nox/pre.yaml
post-run:
- playbooks/nox/docs-post.yaml
- 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 authentication values. See
`<https://zuul-ci.org/docs/zuul-jobs/python-roles.html#role-upload-pypi>`__
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.
vars:
node_version: 18