Add a tool to build collections with pbr
OpenStack in general uses git tags to drive versioning of artifacts. This is important because of our code review driven workflow, since patches don't necessarily land in a predictable sequence, so flows requiring a version number in a file to be updated at a specific time are problematic. By having pbr generate the correct version number then putting that into the galaxy.yml file, we can match the behavior without too much undue burden. Also ignore build_artifact directory. Change-Id: Id02fee682fb5a4b6fd6dcb0644848e6d1269e19b
This commit is contained in:
parent
b7e9e8870c
commit
5936a8f691
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
.tox
|
||||
build_artifact
|
||||
ansible_collections
|
||||
galaxy.yml
|
||||
|
@ -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/
|
||||
|
@ -1,3 +1,4 @@
|
||||
pbr
|
||||
ansible
|
||||
pycodestyle
|
||||
flake8
|
||||
@ -5,4 +6,4 @@ pylint
|
||||
voluptuous
|
||||
yamllint
|
||||
rstcheck
|
||||
|
||||
ruamel.yaml
|
||||
|
47
tools/build.py
Executable file
47
tools/build.py
Executable file
@ -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()
|
6
tox.ini
6
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"
|
||||
|
Loading…
Reference in New Issue
Block a user