
This adds job definition for running Ansible Molecule testing framework from inside tox. This would ease use of molecule testing for any projects that want to use by avoiding the need to duplicate the setup code across each repository. It uses tox `molecule` environment. Change-Id: I8df4df5448a78b9e21f45fac12d534eb84b29d3d Needed-By: https://review.opendev.org/#/c/663599/ Needed-By: https://review.opendev.org/#/c/651772/ Needed-By: https://review.opendev.org/#/c/663336/
671 lines
17 KiB
YAML
671 lines
17 KiB
YAML
# Shared jobs that are generally applicable to everyone
|
|
# Assumes a 'base' job defined elsewhere
|
|
|
|
- job:
|
|
name: dco-license
|
|
description: |
|
|
A job to validate all new commits have been signed using --signoff.
|
|
run: playbooks/dco-license/run.yaml
|
|
nodeset:
|
|
nodes: []
|
|
|
|
- job:
|
|
name: unittests
|
|
abstract: true
|
|
description: |
|
|
Perform setup common to all unit test jobs.
|
|
|
|
This performs basic host and general project setup tasks common
|
|
to all types of unit test jobs.
|
|
pre-run: playbooks/unittests/pre.yaml
|
|
post-run: playbooks/unittests/post.yaml
|
|
|
|
- job:
|
|
name: build-docker-image
|
|
description: |
|
|
Build a docker image.
|
|
|
|
.. include:: ../../playbooks/docker-image/README.rst
|
|
pre-run: playbooks/docker-image/pre.yaml
|
|
run: playbooks/docker-image/run.yaml
|
|
|
|
- job:
|
|
name: upload-docker-image
|
|
parent: build-docker-image
|
|
description: |
|
|
Build and upload a docker image.
|
|
|
|
.. include:: ../../playbooks/docker-image/README.rst
|
|
.. include:: ../../playbooks/docker-image/credentials.rst
|
|
post-run: playbooks/docker-image/upload.yaml
|
|
|
|
- job:
|
|
name: promote-docker-image
|
|
description: |
|
|
Retag a previously-uploaded docker image.
|
|
|
|
.. include:: ../../playbooks/docker-image/README.rst
|
|
.. include:: ../../playbooks/docker-image/credentials.rst
|
|
run: playbooks/docker-image/promote.yaml
|
|
nodeset:
|
|
nodes: []
|
|
|
|
- job:
|
|
name: upload-git-mirror
|
|
description: |
|
|
Mirrors a tested project repository to a remote git server.
|
|
|
|
.. zuul:jobvar:: git_mirror_credentials
|
|
:type: dict
|
|
|
|
This is expected to be a Zuul Secret with these keys:
|
|
|
|
.. zuul:jobvar:: user
|
|
|
|
SSH user for the remote git repository
|
|
|
|
.. zuul:jobvar:: host
|
|
|
|
SSH host for the remote git repository
|
|
|
|
.. zuul:jobvar:: ssh_key
|
|
|
|
Literal private key contents.
|
|
Should start with something like ``-----BEGIN RSA PRIVATE KEY-----``.
|
|
|
|
.. zuul:jobvar:: host_key
|
|
|
|
SSH host key of the remote git server.
|
|
Can be obtained with ``ssh-keyscan -H <host>``.
|
|
|
|
.. zuul:jobvar:: git_mirror_repository
|
|
|
|
Path of the remote git repository
|
|
run: playbooks/upload-git-mirror/run.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
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
- 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
|
|
|
|
- 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: html/
|
|
|
|
- job:
|
|
name: tox-linters
|
|
parent: tox
|
|
description: |
|
|
Runs code linting tests.
|
|
|
|
Uses tox with the ``linters`` environment.
|
|
vars:
|
|
tox_envlist: linters
|
|
|
|
- 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
|
|
|
|
- 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.
|
|
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: html/
|
|
# 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: multinode
|
|
abstract: true
|
|
description: |
|
|
Do additional setup needed for multi-node jobs such as setting up
|
|
overlay networks and setting up known-hosts and ssh keys
|
|
pre-run: playbooks/multinode/pre.yaml
|
|
|
|
- job:
|
|
name: nodejs-npm
|
|
parent: unittests
|
|
description: |
|
|
Base job for javascript operations
|
|
|
|
Responds to these variables:
|
|
|
|
.. 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: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
pre-run: playbooks/javascript/pre.yaml
|
|
run: playbooks/javascript/run.yaml
|
|
post-run: playbooks/javascript/post.yaml
|
|
vars:
|
|
npm_command: build
|
|
|
|
- job:
|
|
name: build-javascript-tarball
|
|
parent: nodejs-npm
|
|
description: |
|
|
Build a source tarball for a Javascript project
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: node_version
|
|
:default: 6
|
|
|
|
The version of Node to use.
|
|
|
|
.. zuul:jobvar: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
vars:
|
|
npm_command: pack
|
|
|
|
- job:
|
|
name: build-javascript-content
|
|
parent: nodejs-npm
|
|
description: |
|
|
Build javascript web content as it should be deployed.
|
|
|
|
Responds to these variables:
|
|
|
|
.. 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: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
success-url: npm/html/
|
|
|
|
- job:
|
|
name: build-javascript-content-tarball
|
|
parent: nodejs-npm
|
|
description: |
|
|
Build an archive of javascript web content as it should be deployed.
|
|
|
|
Responds to these variables:
|
|
|
|
.. 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: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
|
|
.. zuul:jobvar: create_tarball_directory
|
|
|
|
Create a tarball with the contents of
|
|
create_tarball_directory (relative to zuul_work_dir).
|
|
post-run: playbooks/javascript/tarball.yaml
|
|
|
|
- job:
|
|
name: nodejs-npm-run-test
|
|
parent: nodejs-npm
|
|
description: |
|
|
Run test using nodejs. This test also starts Xvfb for run time
|
|
tests.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: node_version
|
|
:default: 6
|
|
|
|
The version of Node to use.
|
|
|
|
.. zuul:jobvar: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
pre-run: playbooks/javascript/pre-test.yaml
|
|
vars:
|
|
npm_command: test
|
|
|
|
- job:
|
|
name: nodejs-npm-run-lint
|
|
parent: nodejs-npm
|
|
description: |
|
|
Run lint using nodejs.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: node_version
|
|
:default: 6
|
|
|
|
The version of Node to use.
|
|
|
|
.. zuul:jobvar: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
|
|
.. zuul:jobvar: javascript_content_dir
|
|
:default: dist
|
|
|
|
Directory, relative to zuul_work_dir, holding build content.
|
|
vars:
|
|
npm_command: lint
|
|
|
|
- job:
|
|
name: nodejs-npm-run-docs
|
|
parent: nodejs-npm
|
|
description: |
|
|
Run docs using nodejs.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: node_version
|
|
:default: 6
|
|
|
|
The version of Node to use.
|
|
|
|
.. zuul:jobvar: zuul_work_dir
|
|
:default: {{ zuul.project.src_dir }}
|
|
|
|
Path to operate in.
|
|
post-run: playbooks/tox/docs-post.yaml
|
|
success-url: html/
|
|
vars:
|
|
npm_command: docs
|
|
|
|
- job:
|
|
name: run-test-command
|
|
parent: unittests
|
|
description: |
|
|
Run simple command as test.
|
|
|
|
To use this, set the ``test_command`` variable to a single command or
|
|
a list of commands. For complex list of commands, it is recommended to
|
|
use a single command that run a proper script.
|
|
run: playbooks/run-test-command/run.yaml
|
|
vars:
|
|
test_command: "exit 1"
|
|
|
|
- job:
|
|
name: validate-zone-db
|
|
parent: base
|
|
description: |
|
|
Validate zone.db files in project.
|
|
|
|
Responds to these variables:
|
|
|
|
.. zuul:jobvar:: zone_files
|
|
:default: {{ ansible_user_dir }}/{{ zuul.project.src_dir }}
|
|
|
|
Search for zone.db files recursively in this directory.
|
|
Format should be domain.xyz/zone.db, where the parent
|
|
directory is named for the zone described.
|
|
|
|
.. zuul:jobvar:: zone_db_list
|
|
:default: []
|
|
|
|
Override the default searching above with explicit
|
|
domain/path references (see validate-zone-db role)
|
|
run: playbooks/validate-zone-db/run.yaml
|
|
|
|
- job:
|
|
name: zuul-jobs-test-registry
|
|
description: |
|
|
Test the intermediate registry roles.
|
|
|
|
This job tests changes to the intermediate registry roles. It
|
|
is not meant to be used directly but rather run on changes to
|
|
roles in the zuul-jobs repo.
|
|
files:
|
|
- roles/pull-from-intermediate-registry/.*
|
|
- roles/push-to-intermediate-registry/.*
|
|
- roles/install-docker/.*
|
|
- roles/build-docker-image/.*
|
|
- roles/run-buildset-registry/.*
|
|
- roles/use-buildset-registry/.*
|
|
- test-playbooks/registry/.*
|
|
run:
|
|
test-playbooks/registry/test-registry.yaml
|
|
nodeset:
|
|
nodes:
|
|
- name: intermediate-registry
|
|
label: ubuntu-bionic
|
|
- name: executor
|
|
label: ubuntu-bionic
|
|
- name: builder
|
|
label: ubuntu-bionic
|