From 832ffd9c279a7967913c3eef54aaecc3c614a714 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Thu, 26 Apr 2018 06:50:29 -0700 Subject: [PATCH] First commit in Gerrit - Add .gitreview - Add tox configuration - Add .gitignore - Add requirements and test-requirements.txt - Ass setup files - Add ci-scripts for ansible-lint Change-Id: I333f3701beee0d36854bcbd6b05d367941d68723 --- .gitignore | 69 ++++++++++++++++++++++++++++++++++++++ .gitreview | 4 +++ ansible-requirements.txt | 6 ++++ ci-scripts/ansible-lint.sh | 21 ++++++++++++ requirements.txt | 2 ++ setup.cfg | 39 +++++++++++++++++++++ setup.py | 19 +++++++++++ test-requirements.txt | 1 + tox.ini | 60 +++++++++++++++++++++++++++++++++ 9 files changed, 221 insertions(+) create mode 100644 .gitignore create mode 100644 .gitreview create mode 100644 ansible-requirements.txt create mode 100755 ci-scripts/ansible-lint.sh create mode 100644 requirements.txt create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 test-requirements.txt create mode 100644 tox.ini diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fb919b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,69 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +sdist/ +var/ +container_registry.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +doc/build/ + +# PyBuilder +target/ + +# virtualenv +.venv/ + +# jenkins config +jenkins/config.ini +playbooks/debug.yml + +# Files created by releasenotes build +releasenotes/build + +# Editors +.*.sw[klmnop] + diff --git a/.gitreview b/.gitreview new file mode 100644 index 0000000..6d85adb --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=review.openstack.org +port=29418 +project=openstack/ansible-role-container-registry.git diff --git a/ansible-requirements.txt b/ansible-requirements.txt new file mode 100644 index 0000000..a1b6838 --- /dev/null +++ b/ansible-requirements.txt @@ -0,0 +1,6 @@ +# These are required here because ansible can't be in global-requirements due +# to licensing conflicts. But we sill need to be able to pull them in for +# lint checks and want to document these as ansible specific things that may +# be required for this repository. +ansible +ansible-lint diff --git a/ci-scripts/ansible-lint.sh b/ci-scripts/ansible-lint.sh new file mode 100755 index 0000000..65e2245 --- /dev/null +++ b/ci-scripts/ansible-lint.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# ANSIBLE0006: Using command rather than module +# we have a few use cases where we need to use curl and rsync +# ANSIBLE0007: Using command rather than an argument to e.g file +# we have a lot of 'rm' command and we should use file module instead +# ANSIBLE0010: Package installs should not use latest. +# Sometimes we need to update some packages. +# ANSIBLE0012: Commands should not change things if nothing needs doing +# ANSIBLE0013: Use Shell only when shell functionality is required +# ANSIBLE0016: Tasks that run when changed should likely be handlers +# this requires refactoring roles, skipping for now +SKIPLIST="ANSIBLE0006,ANSIBLE0007,ANSIBLE0010,ANSIBLE0012,ANSIBLE0013,ANSIBLE0016" + +# Lin the role. +ansible-lint -vvv -x $SKIPLIST ./ || lint_error=1 + +# exit with 1 if we had a least an error or warning. +if [[ -n "$lint_error" ]]; then + exit 1; +fi diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..885c2cb --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +pbr>=1.6 +ansible diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..cda5eea --- /dev/null +++ b/setup.cfg @@ -0,0 +1,39 @@ +[metadata] +name = container-registry +summary = container-registry - Ansible role to deploy a container registry +description-file = + README.md +author = TripleO Team +author-email = emilien@redhat.com +home-page = https://git.openstack.org/cgit/openstack/ansible-role-container-registry +classifier = + License :: OSI Approved :: Apache Software License + Development Status :: 4 - Beta + Intended Audience :: Developers + Intended Audience :: System Administrators + Intended Audience :: Information Technology + Topic :: Utilities + +[global] +setup-hooks = + pbr.hooks.setup_hook + +[files] +data_files = + usr/local/share/ansible/roles/container-registry/defaults = defaults/* + usr/local/share/ansible/roles/container-registry/handlers = handlers/* + usr/local/share/ansible/roles/container-registry/meta = meta/* + usr/local/share/ansible/roles/container-registry/tasks = tasks/* + usr/local/share/ansible/roles/container-registry/templates = templates/* + usr/local/share/ansible/roles/container-registry/tests = tests/* + usr/local/share/ansible/roles/container-registry/vars = vars/* + usr/local/share/ansible/roles/container-registry/files = files/* + playbooks = playbooks/* + +[wheel] +universal = 1 + +[pbr] +skip_authors = True +skip_changelog = True + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..6a931a6 --- /dev/null +++ b/setup.py @@ -0,0 +1,19 @@ +# Copyright Red Hat, Inc. All Rights Reserved. +# +# 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. + +import setuptools + +setuptools.setup( + setup_requires=['pbr'], + pbr=True) diff --git a/test-requirements.txt b/test-requirements.txt new file mode 100644 index 0000000..c3ed418 --- /dev/null +++ b/test-requirements.txt @@ -0,0 +1 @@ +hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..6167d1d --- /dev/null +++ b/tox.ini @@ -0,0 +1,60 @@ +[tox] +minversion = 1.6 +envlist = docs, linters +skipdist = True + +[testenv] +usedevelop = True +install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} {opts} {packages} +setenv = VIRTUAL_ENV={envdir} +deps = -r{toxinidir}/test-requirements.txt +whitelist_externals = bash + +[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:pep8] +commands = + # Run hacking/flake8 check for all python files + bash -c "git ls-files | grep -v releasenotes | xargs grep --binary-files=without-match \ + --files-with-match '^.!.*python$' \ + --exclude-dir .tox \ + --exclude-dir .git \ + --exclude-dir .eggs \ + --exclude-dir *.egg-info \ + --exclude-dir dist \ + --exclude-dir *lib/python* \ + --exclude-dir doc \ + | xargs flake8 --verbose" + +[testenv:ansible-lint] +basepython=python2 +commands = + bash ci-scripts/ansible-lint.sh + +[testenv:linters] +deps = + -r{toxinidir}/test-requirements.txt + -r{toxinidir}/ansible-requirements.txt +commands = + {[testenv:pep8]commands} + {[testenv:ansible-lint]commands} + +[testenv:releasenotes] +whitelist_externals = bash +commands = bash -c ci-scripts/releasenotes_tox.sh + +[testenv:venv] +commands = {posargs} + +[flake8] +# E123, E125 skipped as they are invalid PEP-8. +# E265 deals withs paces inside of comments +show-source = True +ignore = E123,E125,E265 +builtins = _