62028d063e
Added a water mark to install-guide, developer-docs, upgrade-guide and releasenotes to make clear to deployers which release they're working with. Modified conf.py that adds watermark to the documentation according to particular branch. If the current branch is master than watermark is 'Pre-release' and if the current branch is stable/<release-name> than watermark is <release-name>. As global-requirements does not have sphinxmark included in stable/newton [1], the requirements is added in tox.ini. I will replicate this patch to all the role documentation once its gets merged to master. [1] https://review.openstack.org/376429 Closes-Bug:1624489 Change-Id: If454938abb4990764076436cd428673b456eab3c
170 lines
4.7 KiB
INI
170 lines
4.7 KiB
INI
[tox]
|
|
minversion = 2.0
|
|
skipsdist = True
|
|
envlist = docs,linters,releasenotes
|
|
|
|
|
|
[testenv]
|
|
usedevelop = True
|
|
basepython = python2.7
|
|
install_command =
|
|
pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages}
|
|
deps =
|
|
-r{toxinidir}/test-requirements.txt
|
|
sphinxmark>=0.1.14
|
|
passenv =
|
|
HOME
|
|
http_proxy
|
|
HTTP_PROXY
|
|
https_proxy
|
|
HTTPS_PROXY
|
|
no_proxy
|
|
NO_PROXY
|
|
whitelist_externals =
|
|
bash
|
|
rm
|
|
sudo
|
|
setenv =
|
|
VIRTUAL_ENV={envdir}
|
|
|
|
|
|
[testenv:docs]
|
|
commands=
|
|
bash -c "rm -rf doc/build"
|
|
doc8 doc
|
|
python setup.py build_sphinx
|
|
|
|
|
|
[doc8]
|
|
# Settings for doc8:
|
|
extensions = .rst
|
|
|
|
[testenv:releasenotes]
|
|
commands =
|
|
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
|
|
|
|
|
# environment used by the -infra templated docs job
|
|
[testenv:venv]
|
|
commands =
|
|
{posargs}
|
|
|
|
|
|
[testenv:pep8]
|
|
commands =
|
|
# Run hacking/flake8 check for all python files
|
|
bash -c "grep --recursive --binary-files=without-match \
|
|
--files-with-match '^.!.*python$' \
|
|
--exclude-dir .eggs \
|
|
--exclude-dir .git \
|
|
--exclude-dir .tox \
|
|
--exclude-dir *.egg-info \
|
|
--exclude-dir doc \
|
|
{toxinidir} | xargs flake8 --verbose"
|
|
|
|
|
|
[flake8]
|
|
# Ignores the following rules due to how ansible modules work in general
|
|
# F403 'from ansible.module_utils.basic import *' used;
|
|
# unable to detect undefined names
|
|
# H303 No wildcard (*) import.
|
|
ignore=F403,H303
|
|
|
|
|
|
[testenv:bashate]
|
|
commands =
|
|
# Run bashate check for all bash scripts
|
|
# Ignores the following rules:
|
|
# E003: Indent not multiple of 4 (we prefer to use multiples of 2)
|
|
# E006: Line longer than 79 columns (as many scripts use jinja
|
|
# templating, this is very difficult)
|
|
# E040: Syntax error determined using `bash -n` (as many scripts
|
|
# use jinja templating, this will often fail and the syntax
|
|
# error will be discovered in execution anyway)
|
|
bash -c "grep --recursive --binary-files=without-match \
|
|
--files-with-match '^.!.*\(ba\)\?sh$' \
|
|
--exclude-dir .tox \
|
|
--exclude-dir .git \
|
|
{toxinidir} | xargs bashate --error . --verbose --ignore=E003,E006,E040"
|
|
|
|
|
|
[testenv:ansible]
|
|
deps =
|
|
{[testenv]deps}
|
|
ansible==2.1.0
|
|
ansible-lint>=2.7.0,<3.0.0
|
|
setenv =
|
|
{[testenv]setenv}
|
|
ANSIBLE_HOST_KEY_CHECKING = False
|
|
ANSIBLE_SSH_CONTROL_PATH = /tmp/%%h-%%r
|
|
ANSIBLE_ACTION_PLUGINS = {homedir}/.ansible/roles/plugins/action
|
|
ANSIBLE_CALLBACK_PLUGINS = {homedir}/.ansible/roles/plugins/callback
|
|
ANSIBLE_FILTER_PLUGINS = {homedir}/.ansible/roles/plugins/filter
|
|
ANSIBLE_LOOKUP_PLUGINS = {homedir}/.ansible/roles/plugins/lookup
|
|
ANSIBLE_LIBRARY = {homedir}/.ansible/roles/plugins/library
|
|
ANSIBLE_ROLES_PATH = {homedir}/.ansible/roles
|
|
commands =
|
|
rm -rf {homedir}/.ansible/roles
|
|
ansible-galaxy install \
|
|
--role-file={toxinidir}/ansible-role-requirements.yml \
|
|
--force
|
|
|
|
|
|
[testenv:ansible-lint]
|
|
deps =
|
|
{[testenv:ansible]deps}
|
|
setenv =
|
|
{[testenv:ansible]setenv}
|
|
commands =
|
|
{[testenv:ansible]commands}
|
|
# Perform an Ansible lint check
|
|
ansible-lint --exclude {homedir}/.ansible/roles/sshd \
|
|
{toxinidir}/tests/bootstrap-aio.yml
|
|
ansible-lint {toxinidir}/playbooks/setup-everything.yml
|
|
|
|
|
|
[testenv:ansible-syntax]
|
|
deps =
|
|
{[testenv:ansible]deps}
|
|
setenv =
|
|
{[testenv:ansible]setenv}
|
|
commands =
|
|
{[testenv:ansible]commands}
|
|
# Perform an Ansible syntax check
|
|
ansible-playbook -i 'localhost ansible-connection=local,' \
|
|
--syntax-check \
|
|
--list-tasks \
|
|
{toxinidir}/tests/bootstrap-aio.yml
|
|
ansible-playbook -i 'localhost ansible-connection=local,' \
|
|
--syntax-check \
|
|
--list-tasks \
|
|
-e 'force_containers_destroy=yes' \
|
|
{toxinidir}/playbooks/setup-everything.yml
|
|
|
|
[testenv:inventory]
|
|
# Use a fixed seed since some inventory tests rely on specific ordering
|
|
setenv =
|
|
{[testenv]setenv}
|
|
PYTHONHASHSEED = 100
|
|
commands =
|
|
coverage erase
|
|
coverage run {toxinidir}/tests/test_inventory.py
|
|
coverage report --show-missing --include={toxinidir}/playbooks/inventory/*
|
|
coverage erase
|
|
coverage run {toxinidir}/tests/test_manage.py
|
|
coverage report --show-missing --include={toxinidir}/scripts/*
|
|
|
|
|
|
[testenv:linters]
|
|
deps =
|
|
{[testenv:ansible]deps}
|
|
setenv =
|
|
{[testenv:ansible]setenv}
|
|
commands =
|
|
{[testenv:pep8]commands}
|
|
{[testenv:bashate]commands}
|
|
{[testenv:ansible-lint]commands}
|
|
{[testenv:ansible-syntax]commands}
|
|
{[testenv:inventory]commands}
|
|
{[testenv:docs]commands}
|