add wheel checks to missing-releases
Extend the command we use to audit release artifacts so it checks for wheels. Change-Id: If0b2d6a3cb05830a80289462181c3506d92102b9 Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
bf99d19dd5
commit
5da68dfe56
@ -34,6 +34,19 @@ from openstack_releases import yamlutils
|
|||||||
urllib3.disable_warnings()
|
urllib3.disable_warnings()
|
||||||
|
|
||||||
|
|
||||||
|
def check_url(type, url):
|
||||||
|
if links.link_exists(url):
|
||||||
|
print(' found {}'.format(type))
|
||||||
|
else:
|
||||||
|
print(' did not find {} {}'.format(type, url))
|
||||||
|
yield 'missing {} {}'.format(type, url)
|
||||||
|
|
||||||
|
|
||||||
|
def check_signed_file(type, url):
|
||||||
|
for item_type, item in [(type, url), (type + ' signature', url + '.asc')]:
|
||||||
|
yield from check_url(item_type, item)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@ -95,16 +108,16 @@ def main():
|
|||||||
# case is an error because sometimes we want to
|
# case is an error because sometimes we want to
|
||||||
# import history and sometimes we want to make new
|
# import history and sometimes we want to make new
|
||||||
# releases.
|
# releases.
|
||||||
print('%s %s' % (project['repo'], release['version']), end=' ')
|
print('%s %s' % (project['repo'], release['version']))
|
||||||
|
|
||||||
if not args.artifacts:
|
if not args.artifacts:
|
||||||
version_exists = gitutils.tag_exists(
|
version_exists = gitutils.tag_exists(
|
||||||
project['repo'], release['version'],
|
project['repo'], release['version'],
|
||||||
)
|
)
|
||||||
if version_exists:
|
if version_exists:
|
||||||
print('tag:found', end=' ')
|
print(' tag:found')
|
||||||
else:
|
else:
|
||||||
print('tag:MISSING', end=' ')
|
print(' tag:MISSING')
|
||||||
errors.append('%s missing tag %s' %
|
errors.append('%s missing tag %s' %
|
||||||
(project['repo'], release['version']))
|
(project['repo'], release['version']))
|
||||||
|
|
||||||
@ -112,19 +125,45 @@ def main():
|
|||||||
# report if that exists.
|
# report if that exists.
|
||||||
if link_mode == 'tarball':
|
if link_mode == 'tarball':
|
||||||
tb_url = links.tarball_url(release['version'], project)
|
tb_url = links.tarball_url(release['version'], project)
|
||||||
if links.link_exists(tb_url):
|
errors.extend(check_signed_file('tarball', tb_url))
|
||||||
print('tarball:found', end=' ')
|
wheel_2_errors = list(
|
||||||
else:
|
check_url(
|
||||||
print('tarball:MISSING\n%s' % tb_url)
|
'python 2 wheel',
|
||||||
errors.append('%s missing tarball %s' %
|
links.wheel_py2_url(release['version'], project)
|
||||||
(filename, tb_url))
|
)
|
||||||
sig_url = links.signature_url(release['version'], project)
|
)
|
||||||
if links.link_exists(sig_url):
|
wheel_both_errors = list(
|
||||||
print('signature:found', end=' ')
|
check_url(
|
||||||
else:
|
'python 2/3 wheel',
|
||||||
print('signature:MISSING\n%s' % sig_url)
|
links.wheel_both_url(release['version'], project)
|
||||||
errors.append('%s missing signature %s' %
|
)
|
||||||
(filename, sig_url))
|
)
|
||||||
|
# We only expect to find one wheel. Look for both,
|
||||||
|
# and minimize what we report as errors.
|
||||||
|
if wheel_2_errors and wheel_both_errors:
|
||||||
|
# We have neither wheel.
|
||||||
|
errors.extend(wheel_2_errors)
|
||||||
|
errors.extend(wheel_both_errors)
|
||||||
|
elif not wheel_both_errors:
|
||||||
|
# We have the "both" wheel, so check for the
|
||||||
|
# signature file.
|
||||||
|
errors.extend(
|
||||||
|
check_url(
|
||||||
|
'python 2/3 wheel signature',
|
||||||
|
links.wheel_both_url(release['version'],
|
||||||
|
project) + '.asc',
|
||||||
|
)
|
||||||
|
)
|
||||||
|
elif not wheel_2_errors:
|
||||||
|
# We have the py2 wheel, so check for the
|
||||||
|
# signature file.
|
||||||
|
errors.extend(
|
||||||
|
check_url(
|
||||||
|
'python 2 wheel signature',
|
||||||
|
links.wheel_py2_url(release['version'],
|
||||||
|
project) + '.asc',
|
||||||
|
)
|
||||||
|
)
|
||||||
print()
|
print()
|
||||||
|
|
||||||
if errors:
|
if errors:
|
||||||
|
@ -42,6 +42,28 @@ def tarball_url(version, project):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def wheel_py2_url(version, project):
|
||||||
|
repo_base = project['repo'].rsplit('/')[-1]
|
||||||
|
base = project.get('tarball-base', repo_base)
|
||||||
|
return '{s}/{r}/{n}-{v}-py2-none-any.whl'.format(
|
||||||
|
s='https://tarballs.openstack.org',
|
||||||
|
v=version,
|
||||||
|
r=repo_base,
|
||||||
|
n=base,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def wheel_both_url(version, project):
|
||||||
|
repo_base = project['repo'].rsplit('/')[-1]
|
||||||
|
base = project.get('tarball-base', repo_base)
|
||||||
|
return '{s}/{r}/{n}-{v}-py2.py3-none-any.whl'.format(
|
||||||
|
s='https://tarballs.openstack.org',
|
||||||
|
v=version,
|
||||||
|
r=repo_base,
|
||||||
|
n=base,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def artifact_link(version, project, deliverable_info):
|
def artifact_link(version, project, deliverable_info):
|
||||||
mode = deliverable_info.get('artifact-link-mode', 'tarball')
|
mode = deliverable_info.get('artifact-link-mode', 'tarball')
|
||||||
if mode == 'tarball':
|
if mode == 'tarball':
|
||||||
|
Loading…
Reference in New Issue
Block a user