/ check_ci.py
check_ci.py
 1  #!/usr/bin/env python3
 2  import subprocess
 3  import json
 4  import sys
 5  
 6  token_file = "/home/devops/.config/forgejo/token"
 7  with open(token_file) as f:
 8      token = f.read().strip()
 9  
10  result = subprocess.run(
11      ["curl", "-s", "-H", f"Authorization: token {token}",
12       "https://source.ac-dc.network/api/v1/repos/alpha-delta-network/alphaos/actions/runs?limit=3"],
13      capture_output=True, text=True, timeout=15
14  )
15  
16  data = json.loads(result.stdout)
17  runs = data.get('workflow_runs', [])
18  print(f"=== CI Status for alphaos (top 3 runs) ===")
19  for run in runs:
20      print(f"Run #{run['id']}: {run['status']} - {run.get('title', '')[:60]}")
21  
22      # Check for radicle-push job if this is the latest run
23      if run == runs[0]:
24          jobs_url = f"https://source.ac-dc.network/api/v1/repos/alpha-delta-network/alphaos/actions/runs/{run['id']}/jobs"
25          jobs_result = subprocess.run(
26              ["curl", "-s", "-H", f"Authorization: token {token}", jobs_url],
27              capture_output=True, text=True, timeout=15
28          )
29          try:
30              jobs_data = json.loads(jobs_result.stdout)
31              jobs = jobs_data.get('jobs', [])
32              print(f"\n  Jobs for latest run:")
33              for job in jobs:
34                  print(f"    - {job['name']}: {job['status']} / {job.get('conclusion', 'N/A')}")
35          except:
36              pass