From d8ee999f26f265b0943cd250070d80ce27150eb5 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Tue, 5 Sep 2017 13:35:10 -0400 Subject: [PATCH] require all repos to have a .gitreview file Add a step to ensure that all repositories being tagged have a .gitreview file. This ensures that the release job can properly clone the repo and then establish a gerrit remote to submit patches. Typically the file is missing for repos that are not fully set up, or for repos that have been retired. Change-Id: I1d8afeff40b7b4143486439ab2ab28925fea356e Signed-off-by: Doug Hellmann --- openstack_releases/cmds/validate.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/openstack_releases/cmds/validate.py b/openstack_releases/cmds/validate.py index b66c1b62e3..e97906f9df 100644 --- a/openstack_releases/cmds/validate.py +++ b/openstack_releases/cmds/validate.py @@ -332,6 +332,22 @@ def clone_deliverable(deliverable_info, workdir, mk_warning, mk_error): return ok +def validate_gitreview(deliverable_info, workdir, mk_warning, mk_error): + "Verify that all repos include a .gitreview file." + checked = set() + for release in deliverable_info.get('releases', []): + for project in release['projects']: + if project['repo'] in checked: + continue + checked.add(project['repo']) + print('\nlooking for .gitreview in %s' % project['repo']) + filename = os.path.join( + workdir, project['repo'], '.gitreview', + ) + if not os.path.exists(filename): + mk_error('%s has no .gitreview file' % (project['repo'],)) + + def validate_releases(deliverable_info, zuul_layout, series_name, workdir, @@ -915,6 +931,7 @@ def main(): validate_release_notes(deliverable_info, mk_warning, mk_error) validate_type(deliverable_info, mk_warning, mk_error) validate_model(deliverable_info, series_name, mk_warning, mk_error) + validate_gitreview(deliverable_info, workdir, mk_warning, mk_error) validate_releases( deliverable_info, zuul_layout,