| |
@@ -424,20 +424,24 @@
|
| |
def get_pr_ci_result(package, pr_id):
|
| |
"""
|
| |
Return CI result for package pull-request
|
| |
- Returns "failure" or "success" or None
|
| |
- TODO: Add support for FedoraCI, add support for results other than "failure" and "success"
|
| |
+ Returns {"Zuul": "result", "simple-koji-ci": "result"} , "result" can be "failure", "success", "pending" or None
|
| |
+ TODO: Add support for FedoraCI once pagure exposes it's result in the api
|
| |
"""
|
| |
resp_pr_ci_result = get_json("https://src.fedoraproject.org/api/0/rpms/%s/pull-request/%s/flag" % (package, pr_id))
|
| |
+ data = {"Zuul": None, "simple-koji-ci": None}
|
| |
if not resp_pr_ci_result:
|
| |
- return None
|
| |
- # Pagure might not have CI results at all, return None in such cases
|
| |
- try:
|
| |
- # Pagure returns PR results sorted from newest to latest, so we can pick just the first result
|
| |
- if resp_pr_ci_result["flags"][0]["status"] not in ("failure", "success"):
|
| |
- return None
|
| |
- return resp_pr_ci_result["flags"][0]["status"]
|
| |
- except IndexError:
|
| |
- return None
|
| |
+ return data
|
| |
+ if "flags" not in resp_pr_ci_result:
|
| |
+ return data
|
| |
+ for result in resp_pr_ci_result["flags"]:
|
| |
+ if result["username"] == "Zuul" and not data["Zuul"]:
|
| |
+ data["Zuul"] = result["status"]
|
| |
+ if result["username"] == "simple-koji-ci" and not data["simple-koji-ci"]:
|
| |
+ data["simple-koji-ci"] = result["status"]
|
| |
+ # We care only about the newest results
|
| |
+ if data["simple-koji-ci"] and data["Zuul"]:
|
| |
+ break
|
| |
+ return data
|
| |
|
| |
|
| |
def get_package_prs(package):
|
| |
Fixes https://pagure.io/fedora-qa/oraculum/issue/28
Fixes https://pagure.io/fedora-qa/packager_dashboard/issue/47