ci: Catch Exceptions when attempting to register a CDash build (#27883)
This PR also slightly changes the behavior in ci_rebuild(). We now still attempt to submit `spack install` results to CDash even if the initial registration failed due to connection issues. This commit follows in the spirit of #24299. We do not want `spack install` to exit with a non-zero status when something goes wrong while attempting to report results to CDash.
This commit is contained in:
parent
5bbb63ed93
commit
3139894794
@ -1271,6 +1271,7 @@ def get_concrete_specs(env, root_spec, job_name, related_builds,
|
|||||||
def register_cdash_build(build_name, base_url, project, site, track):
|
def register_cdash_build(build_name, base_url, project, site, track):
|
||||||
url = base_url + '/api/v1/addBuild.php'
|
url = base_url + '/api/v1/addBuild.php'
|
||||||
time_stamp = datetime.datetime.now().strftime('%Y%m%d-%H%M')
|
time_stamp = datetime.datetime.now().strftime('%Y%m%d-%H%M')
|
||||||
|
build_id = None
|
||||||
build_stamp = '{0}-{1}'.format(time_stamp, track)
|
build_stamp = '{0}-{1}'.format(time_stamp, track)
|
||||||
payload = {
|
payload = {
|
||||||
"project": project,
|
"project": project,
|
||||||
@ -1292,17 +1293,20 @@ def register_cdash_build(build_name, base_url, project, site, track):
|
|||||||
|
|
||||||
request = Request(url, data=enc_data, headers=headers)
|
request = Request(url, data=enc_data, headers=headers)
|
||||||
|
|
||||||
response = opener.open(request)
|
try:
|
||||||
response_code = response.getcode()
|
response = opener.open(request)
|
||||||
|
response_code = response.getcode()
|
||||||
|
|
||||||
if response_code != 200 and response_code != 201:
|
if response_code != 200 and response_code != 201:
|
||||||
msg = 'Adding build failed (response code = {0}'.format(response_code)
|
msg = 'Adding build failed (response code = {0}'.format(response_code)
|
||||||
tty.warn(msg)
|
tty.warn(msg)
|
||||||
return (None, None)
|
return (None, None)
|
||||||
|
|
||||||
response_text = response.read()
|
response_text = response.read()
|
||||||
response_json = json.loads(response_text)
|
response_json = json.loads(response_text)
|
||||||
build_id = response_json['buildid']
|
build_id = response_json['buildid']
|
||||||
|
except Exception as e:
|
||||||
|
print("Registering build in CDash failed: {0}".format(e))
|
||||||
|
|
||||||
return (build_id, build_stamp)
|
return (build_id, build_stamp)
|
||||||
|
|
||||||
|
@ -437,17 +437,17 @@ def ci_rebuild(args):
|
|||||||
cdash_build_name, cdash_base_url, cdash_project,
|
cdash_build_name, cdash_base_url, cdash_project,
|
||||||
cdash_site, job_spec_buildgroup)
|
cdash_site, job_spec_buildgroup)
|
||||||
|
|
||||||
|
cdash_upload_url = '{0}/submit.php?project={1}'.format(
|
||||||
|
cdash_base_url, cdash_project_enc)
|
||||||
|
|
||||||
|
install_args.extend([
|
||||||
|
'--cdash-upload-url', cdash_upload_url,
|
||||||
|
'--cdash-build', cdash_build_name,
|
||||||
|
'--cdash-site', cdash_site,
|
||||||
|
'--cdash-buildstamp', cdash_build_stamp,
|
||||||
|
])
|
||||||
|
|
||||||
if cdash_build_id is not None:
|
if cdash_build_id is not None:
|
||||||
cdash_upload_url = '{0}/submit.php?project={1}'.format(
|
|
||||||
cdash_base_url, cdash_project_enc)
|
|
||||||
|
|
||||||
install_args.extend([
|
|
||||||
'--cdash-upload-url', cdash_upload_url,
|
|
||||||
'--cdash-build', cdash_build_name,
|
|
||||||
'--cdash-site', cdash_site,
|
|
||||||
'--cdash-buildstamp', cdash_build_stamp,
|
|
||||||
])
|
|
||||||
|
|
||||||
tty.debug('CDash: Relating build with dependency builds')
|
tty.debug('CDash: Relating build with dependency builds')
|
||||||
spack_ci.relate_cdash_builds(
|
spack_ci.relate_cdash_builds(
|
||||||
spec_map, cdash_base_url, cdash_build_id, cdash_project,
|
spec_map, cdash_base_url, cdash_build_id, cdash_project,
|
||||||
|
Loading…
Reference in New Issue
Block a user