Merge "Add zuul jobs for tox and linters"

This commit is contained in:
Zuul 2019-08-26 18:18:46 +00:00 committed by Gerrit Code Review
commit c7191c6d5a
8 changed files with 194 additions and 1 deletions

16
bindep.txt Normal file
View File

@ -0,0 +1,16 @@
# This is a cross-platform list tracking distribution packages needed by tests;
# see http://docs.openstack.org/infra/bindep/ for additional information.
libffi-devel [test platform:rpm]
libffi-dev [test platform:dpkg]
libssl-dev [platform:dpkg]
openssl-devel [platform:rpm]
python3-dev [compile test platform:dpkg platform:apk]
python3-devel [compile test platform:rpm]
libre2-dev [compile test platform:dpkg]
libre2-4 [platform:ubuntu-bionic]
libre2-3 [platform:debian-stretch]
libre2-1v5 [platform:ubuntu-xenial]
re2-devel [compile test platform:rpm]
re2-dev [platform:apk]
re2 [platform:rpm platform:apk]

20
setup.cfg Normal file
View File

@ -0,0 +1,20 @@
[metadata]
name = starlingx-zuul-jobs
summary = A set of Ansible playbooks used by StarlingX for CI
description-file =
README.rst
author = StarlingX Team
author-email = starlingx-discuss@lists.starlingx.io
home-page = https://starlingx.io/
classifier =
Intended Audience :: Information Technology
Intended Audience :: System Administrators
License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux
Programming Language :: Python
[build_sphinx]
source-dir = doc/source
build-dir = doc/build
all_files = 1
warning-is-error = 1

30
setup.py Normal file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env python
# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools
# In python < 2.7.4, a lazy loading of package `pbr` will break
# setuptools if some other modules registered functions in `atexit`.
# solution from: http://bugs.python.org/issue15881#msg170215
try:
import multiprocessing # noqa
except ImportError:
pass
setuptools.setup(
setup_requires=['pbr>=2.0'],
pbr=True)

11
test-requirements.txt Normal file
View File

@ -0,0 +1,11 @@
# 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.
hacking>=1.1.0,<1.2 # Apache-2.0
zuul
ansible>=2.7.0,<2.8
ansible-lint<4
bashate>=0.2
zuul-sphinx>=0.2.0

2
tests/inventory Normal file
View File

@ -0,0 +1,2 @@
[all]
localhost

89
tox.ini Normal file
View File

@ -0,0 +1,89 @@
[tox]
minversion = 1.6
skipsdist = True
envlist = linters
[testenv]
basepython = python3
install_command = pip install {opts} {packages}
deps = -r{toxinidir}/test-requirements.txt
[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
commands = bindep test
[testenv:docs]
whitelist_externals = bash
commands =
bash -c 'if [ -d doc ]; then \
python setup.py build_sphinx; \
fi'
[testenv:linters]
whitelist_externals = bash
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/base/library
ANSIBLE_ACTION_PLUGINS = {envsitepackagesdir}/zuul/ansible/base/actiongeneral
commands =
flake8 {posargs}
# Ansible lint
# [ANSIBLE0012] Commands should not change things if nothing needs doing
bash -c 'if [ -d playbooks ]; then \
find playbooks -type f -regex ".*\.ya?ml" -print0 | xargs -t -n1 -0 \
ansible-lint -xANSIBLE0012; \
fi'
bash -c 'if [ -d roles ]; then \
find roles -maxdepth 1 -mindepth 1 -type d -printf "%p/\n" | xargs -t -n1 \
ansible-lint -xANSIBLE0012; \
fi'
# Ansible Syntax Check
bash -c 'if [ -d playbooks ]; then \
find playbooks -type f -regex ".*\.ya?ml" -print0 | xargs -t -n1 -0 \
ansible-playbook --syntax-check -i {toxinidir}/tests/inventory; \
fi'
# Check Shell Scripts Syntax
bash -c 'if [ -d scripts ]; then \
find {toxinidir} \
-not \( -type d -name .?\* -prune \) \
-type f \
-not -name \*~ \
-not -name \*.md \
\( \
-name \*.sh \
-or -not -wholename \*/devstack/files/\* \
-wholename \*/devstack/\* \
\) \
-print0 | xargs -t -n1 -0 \
bashate -v -iE006; \
fi'
[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.
ignore = E125,E129,H
show-source = True
exclude = .venv,.tox,dist,doc,build,*.egg
[testenv:pep8]
basepython = python3
usedevelop = False
skip_install = True
deps =
hacking
flake8-bugbear<=19.3.0
flake8<3.6.0
commands =
flake8

17
zuul.d/jobs.yaml Normal file
View File

@ -0,0 +1,17 @@
- job:
name: stx-zuul-jobs-linters
parent: openstack-zuul-jobs-linters
description: |
This job runs against starlingx/zuul-jobs so we can properly
lint our ansible playbooks / roles.
required-projects:
- opendev/base-jobs
- openstack/openstack-zuul-jobs
- openstack/project-config
- opendev/system-config
- zuul/zuul-jobs
- zuul/zuul
vars:
tox_envlist: linters
tox_environment:
ANSIBLE_ROLES_PATH: ~/src/opendev.org/starlingx/zuul-jobs/roles:~/src/opendev.org/opendev/base-jobs/roles:~/src/opendev.org/zuul/zuul-jobs/roles:~/src/opendev.org/openstack/openstack-zuul-jobs/roles:~/src/opendev.org/openstack/project-config/roles:~/src/opendev.org/opendev/system-config/roles

View File

@ -1,3 +1,11 @@
- project:
templates:
- noop-jobs
- build-openstack-docs-pti
check:
jobs:
- openstack-tox-linters
- openstack-tox-pep8
gate:
jobs:
- openstack-tox-linters
- openstack-tox-pep8