Squashed 'acm-hub-bootstrap/' content from commit 4b79b1a0
git-subtree-dir: acm-hub-bootstrap git-subtree-split: 4b79b1a0be6da2a9efc9ace8871b4762342da70b
This commit is contained in:
84
tests/interop/create_ci_badge.py
Normal file
84
tests/interop/create_ci_badge.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
from datetime import datetime
|
||||
|
||||
from junitparser import JUnitXml
|
||||
|
||||
oc = os.environ["HOME"] + "/oc_client/oc"
|
||||
|
||||
ci_badge = {
|
||||
"schemaVersion": 1,
|
||||
"label": "Community test",
|
||||
"message": "",
|
||||
"color": "red",
|
||||
"openshiftVersion": "",
|
||||
"infraProvider": os.environ.get("INFRA_PROVIDER"),
|
||||
"patternName": os.environ.get("PATTERN_NAME"),
|
||||
"patternRepo": "",
|
||||
"patternBranch": "",
|
||||
"date": datetime.today().strftime("%Y-%m-%d"),
|
||||
"testSource": "Community",
|
||||
"debugInfo": None,
|
||||
}
|
||||
|
||||
|
||||
def get_openshift_version():
|
||||
try:
|
||||
version_ret = subprocess.run([oc, "version", "-o", "json"], capture_output=True)
|
||||
version_out = version_ret.stdout.decode("utf-8")
|
||||
openshift_version = json.loads(version_out)["openshiftVersion"]
|
||||
major_minor = ".".join(openshift_version.split(".")[:-1])
|
||||
return openshift_version, major_minor
|
||||
except KeyError as e:
|
||||
print("KeyError:" + str(e))
|
||||
return None
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
versions = get_openshift_version()
|
||||
ci_badge["openshiftVersion"] = versions[0]
|
||||
|
||||
pattern_repo = subprocess.run(
|
||||
["git", "config", "--get", "remote.origin.url"], capture_output=True, text=True
|
||||
)
|
||||
pattern_branch = subprocess.run(
|
||||
["git", "branch", "--show-current"], capture_output=True, text=True
|
||||
)
|
||||
|
||||
ci_badge["patternRepo"] = pattern_repo.stdout.strip()
|
||||
ci_badge["patternBranch"] = pattern_branch.stdout.strip()
|
||||
|
||||
# Check each xml file for failures
|
||||
results_dir = os.environ.get("WORKSPACE")
|
||||
failures = 0
|
||||
|
||||
for file in os.listdir(results_dir):
|
||||
if file.startswith("test_") and file.endswith(".xml"):
|
||||
with open(os.path.join(results_dir, file), "r") as result_file: # type: ignore
|
||||
xml = JUnitXml.fromfile(result_file) # type: ignore
|
||||
for suite in xml:
|
||||
for case in suite:
|
||||
if case.result:
|
||||
failures += 1
|
||||
|
||||
# Determine badge color from results
|
||||
if failures == 0:
|
||||
ci_badge["color"] = "green"
|
||||
|
||||
# For now we assume `message` is the same as patternBranch
|
||||
ci_badge["message"] = ci_badge["patternBranch"]
|
||||
|
||||
ci_badge_json_basename = (
|
||||
os.environ.get("PATTERN_SHORTNAME") # type: ignore
|
||||
+ "-"
|
||||
+ os.environ.get("INFRA_PROVIDER")
|
||||
+ "-"
|
||||
+ versions[1]
|
||||
+ "-stable-badge.json"
|
||||
)
|
||||
ci_badge_json_filename = os.path.join(results_dir, ci_badge_json_basename) # type: ignore
|
||||
print(f"Creating CI badge file at: {ci_badge_json_filename}")
|
||||
|
||||
with open(ci_badge_json_filename, "w") as ci_badge_file:
|
||||
json.dump(ci_badge, ci_badge_file)
|
||||
Reference in New Issue
Block a user