diff --git a/scripts/check_ci_status.py b/scripts/check_ci_status.py new file mode 100644 index 000000000..cc159f9eb --- /dev/null +++ b/scripts/check_ci_status.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +"""检查指定commit的CI status状态。 + +用法: python3 check_ci_status.py +返回: 打印状态 (success/failure/pending/error) +""" + +import json +import sys +import urllib.error +import urllib.request + + +def main(): + if len(sys.argv) != 5: + print("pending") + return + + token = sys.argv[1] + repo = sys.argv[2] + sha = sys.argv[3] + target_context = sys.argv[4] + + api_url = f"https://git.xiaoxiajianji.com/api/v1/repos/{repo}/commits/{sha}/statuses?per_page=100" + req = urllib.request.Request(api_url, headers={"Authorization": f"token {token}"}) + + try: + with urllib.request.urlopen(req, timeout=30) as resp: + statuses = json.loads(resp.read().decode()) + except Exception: + print("pending") + return + + # API返回按时间倒序,第一个就是最新的 + for s in statuses: + if s.get("context") == target_context: + print(s.get("status", "pending")) + return + + print("pending") + + +if __name__ == "__main__": + main()