in lib/litani_report.py [0:0]
def add_stage_stats(stage, stage_name, pipeline_name):
n_complete_jobs = len([j for j in stage["jobs"] if j["complete"]])
if stage["jobs"]:
stage["progress"] = int(n_complete_jobs * 100 / len(stage["jobs"]))
stage["complete"] = n_complete_jobs == len(stage["jobs"])
else:
stage["progress"] = 0
stage["complete"] = True
status = StageStatus.SUCCESS
for job in stage["jobs"]:
try:
if not job["complete"]:
continue
if job["outcome"] == "fail":
status = StageStatus.FAIL
elif job["outcome"] == "fail_ignored" and status == StageStatus.SUCCESS:
status = StageStatus.FAIL_IGNORED
except KeyError:
logging.error(
"Could not find key in stage: %s",
json.dumps(stage, indent=2))
sys.exit(1)
stage["status"] = status.name.lower()
stage["url"] = "artifacts/%s/%s" % (pipeline_name, stage_name)
stage["name"] = stage_name