zuul-jobs/zuul.yaml

660 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-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