Merge "do not rely on side-effects to clone repositories"
This commit is contained in:
@@ -306,12 +306,40 @@ def validate_model(deliverable_info, series_name, mk_warning, mk_error):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def clone_deliverable(deliverable_info, workdir, mk_warning, mk_error):
|
||||||
|
"""Clone all of the repositories for the deliverable into the workdir.
|
||||||
|
|
||||||
|
Returns boolean indicating whether all of the clones could be
|
||||||
|
performed as expected.
|
||||||
|
|
||||||
|
"""
|
||||||
|
cloned = set()
|
||||||
|
ok = True
|
||||||
|
print('\nchecking out source code')
|
||||||
|
for release in deliverable_info.get('releases', []):
|
||||||
|
for project in release['projects']:
|
||||||
|
if project['repo'] in cloned:
|
||||||
|
continue
|
||||||
|
cloned.add(project['repo'])
|
||||||
|
try:
|
||||||
|
gitutils.clone_repo(workdir, project['repo'])
|
||||||
|
except Exception as err:
|
||||||
|
mk_error('Could not clone repository %s at %s: %s' % (
|
||||||
|
project['repo'], project['hash'], err))
|
||||||
|
# No point in running extra checks if we can't
|
||||||
|
# clone the repository.
|
||||||
|
ok = False
|
||||||
|
return ok
|
||||||
|
|
||||||
|
|
||||||
def validate_releases(deliverable_info, zuul_layout,
|
def validate_releases(deliverable_info, zuul_layout,
|
||||||
series_name,
|
series_name,
|
||||||
workdir,
|
workdir,
|
||||||
mk_warning, mk_error):
|
mk_warning, mk_error):
|
||||||
"""Apply validation rules to the 'releases' list for the deliverable.
|
"""Apply validation rules to the 'releases' list for the deliverable.
|
||||||
"""
|
"""
|
||||||
|
print()
|
||||||
|
|
||||||
release_model = get_model(deliverable_info, series_name)
|
release_model = get_model(deliverable_info, series_name)
|
||||||
is_independent = (release_model == 'independent')
|
is_independent = (release_model == 'independent')
|
||||||
|
|
||||||
@@ -880,16 +908,13 @@ def main():
|
|||||||
if args.debug:
|
if args.debug:
|
||||||
raise RuntimeError(msg)
|
raise RuntimeError(msg)
|
||||||
|
|
||||||
|
clone_deliverable(deliverable_info, workdir, mk_warning, mk_error)
|
||||||
validate_schema(deliverable_info, mk_warning, mk_error)
|
validate_schema(deliverable_info, mk_warning, mk_error)
|
||||||
validate_bugtracker(deliverable_info, mk_warning, mk_error)
|
validate_bugtracker(deliverable_info, mk_warning, mk_error)
|
||||||
validate_team(deliverable_info, team_data, mk_warning, mk_error)
|
validate_team(deliverable_info, team_data, mk_warning, mk_error)
|
||||||
validate_release_notes(deliverable_info, mk_warning, mk_error)
|
validate_release_notes(deliverable_info, mk_warning, mk_error)
|
||||||
validate_type(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_model(deliverable_info, series_name, mk_warning, mk_error)
|
||||||
# NOTE(dhellmann): A side-effect of validate_releases() is
|
|
||||||
# that all of the repos mentioned in the deliverable file are
|
|
||||||
# cloned. No validation that needs the repo to be checked out
|
|
||||||
# locally should happen before validate_releases() is called.
|
|
||||||
validate_releases(
|
validate_releases(
|
||||||
deliverable_info,
|
deliverable_info,
|
||||||
zuul_layout,
|
zuul_layout,
|
||||||
|
|||||||
Reference in New Issue
Block a user