diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..48bdfc8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*.pyc +*~ + +# Unit test / coverage reports +.coverage +.tox +.stestr + +# Sphinx +doc/build + +# pbr generates these +AUTHORS +ChangeLog diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..7300381 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1,19 @@ +# The order of packages is significant, because pip processes them in the order +# of appearance. Changing the order has an impact on the overall integration +# process, which may cause wedges in the gate later. +flake8 +zuul + +# We need to pin the ansible version directly here; per the +# deprecation policy it should trail the version used by Zuul by 4 +# weeks to give people time to update before these roles start +# depending on new features. Also note we can't just include zuul +# here to pull in ansible anyway; pip doesn't actually have a +# dependency solver and the uncapped ansible requirement from +# ansible-lint pull in the latest version. +ansible>=2.5.1,<2.6 # https://review.openstack.org/567007 +# We need to pin ansible-lint to before 4.0 which blows up all over the place +ansible-lint<4 +bashate>=0.2 +zuul-sphinx>=0.1.1 +stestr>=1.0.0 # Apache-2.0 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..03a1ae4 --- /dev/null +++ b/tox.ini @@ -0,0 +1,53 @@ +[tox] +minversion = 1.6 +skipsdist = True +envlist = linters + +[testenv] +basepython = python3 +install_command = pip install {opts} {packages} +deps = -r{toxinidir}/test-requirements.txt +commands = stestr run {posargs} + stestr slowest + +[testenv:py27] +basepython = python2.7 + +[testenv:docs] +commands = + sphinx-build -E -W -d doc/build/doctrees -b html doc/source/ doc/build/html + +[testenv:linters] +passenv = + # NOTE(pabelanger): if you'd like to run tox -elinters locally, you'll need + # to export ANSIBLE_ROLES_PATH pointing to the currect repos. + # see openstack-zuul-jobs-linters job for more information. + ANSIBLE_ROLES_PATH +setenv = + ANSIBLE_LIBRARY= {envsitepackagesdir}/zuul/ansible/library + ANSIBLE_ACTION_PLUGINS = {envsitepackagesdir}/zuul/ansible/actiongeneral +whitelist_externals = bash +commands = + flake8 {posargs} + # Ansible lint + # [ANSIBLE0012] Commands should not change things if nothing needs doing + bash -c "find playbooks -type f -regex '.*.ya?ml' -print0 | \ + xargs -t -n1 -0 ansible-lint -xANSIBLE0012" + bash -c 'find roles -maxdepth 1 -mindepth 1 -type d -printf "%p/\n" | \ + xargs -t -n1 ansible-lint -xANSIBLE0012' + # Ansible Syntax Check + bash -c "find playbooks -type f -regex '.*.ya?ml' -exec \ + ansible-playbook --syntax-check -i {toxinidir}/tests/inventory \{\} + > /dev/null" + +[testenv:venv] +commands = {posargs} + +[flake8] +# These are ignored intentionally in openstack-infra projects; +# please don't submit patches that solely correct them or enable them. +# E402 - ansible modules put documentation before imports. Align to ansible. +# W504 - line break after binary operator, we cannot have both +# W503 and W504 enabled +ignore = E125,E129,E402,E741,W504,H +show-source = True +exclude = .venv,.tox,dist,doc,build,*.egg diff --git a/zuul.yaml b/zuul.yaml index 9104d2b..78380ea 100644 --- a/zuul.yaml +++ b/zuul.yaml @@ -142,3 +142,11 @@ label: ubuntu-xenial secrets: - site_logs + +- project: + check: + jobs: + - openstack-zuul-jobs-linters + gate: + jobs: + - openstack-zuul-jobs-linters