# 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 ``. .. 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-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