diff --git a/.gitignore b/.gitignore index f64eec70..0cab88a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .tox build_artifact ansible_collections +galaxy.yml diff --git a/ci/run-ansible-tests-collection.sh b/ci/run-ansible-tests-collection.sh index 54d6752b..594388c1 100755 --- a/ci/run-ansible-tests-collection.sh +++ b/ci/run-ansible-tests-collection.sh @@ -98,6 +98,7 @@ then fi # install collections +tox -ebuild ansible-galaxy collection build --force . --output-path ./build_artifact ansible-galaxy collection install $(ls build_artifact/openstack-cloud-*) --force pushd ci/ diff --git a/galaxy.yml b/galaxy.yml.in similarity index 100% rename from galaxy.yml rename to galaxy.yml.in diff --git a/test-requirements.txt b/test-requirements.txt index c8a6da75..4d5c6681 100644 --- a/test-requirements.txt +++ b/test-requirements.txt @@ -1,3 +1,4 @@ +pbr ansible pycodestyle flake8 @@ -5,4 +6,4 @@ pylint voluptuous yamllint rstcheck - +ruamel.yaml diff --git a/tools/build.py b/tools/build.py new file mode 100755 index 00000000..bfac5126 --- /dev/null +++ b/tools/build.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python +# Copyright 2019 Red Hat, Inc. +# +# 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. + +# The next two lines are pointless for this file, but the collection +# linter freaks out if they are not there. +from __future__ import absolute_import, division, print_function +__metaclass__ = type + +import pbr.version + +from ruamel.yaml import YAML + + +def generate_version_info(): + version_info = pbr.version.VersionInfo('openstack-cloud') + semantic_version = version_info.semantic_version() + release_string = semantic_version._long_version('-') + + yaml = YAML() + yaml.explicit_start = True + yaml.indent(sequence=4, offset=2) + + config = yaml.load(open('galaxy.yml.in')) + config['version'] = release_string + + with open('galaxy.yml', 'w') as fp: + yaml.dump(config, fp) + + +def main(): + generate_version_info() + + +if __name__ == '__main__': + main() diff --git a/tox.ini b/tox.ini index 034c65d6..76b79efb 100644 --- a/tox.ini +++ b/tox.ini @@ -26,9 +26,15 @@ commands = stestr run {posargs} commands = flake8 +[testenv:build] +commands = + {toxinidir}/tools/build.py + ansible-galaxy collection build --force {toxinidir} --output-path {toxinidir}/build_artifact + [testenv:linters] passenv = * commands = + {toxinidir}/tools/build.py ansible-galaxy collection build --force {toxinidir} --output-path {toxinidir}/build_artifact /bin/bash -c "ansible-galaxy collection install $(ls {toxinidir}/build_artifact/openstack-cloud-*) --force -p {toxinidir}" /bin/bash -c "cd ansible_collections/openstack/cloud && ansible-test sanity"