33
44import subprocess
55import sys
6+ import os
67from datetime import datetime
78from pathlib import Path
89
@@ -19,26 +20,60 @@ def __init__(self):
1920
2021 def check_github_api_status (self ):
2122 """Verify GitHub API connectivity"""
22- try :
23- result = subprocess .run (
24- ["gh" , "api" , "user" ], capture_output = True , text = True
25- )
26- if result .returncode == 0 :
27- self .results ["dependencies_satisfied" ].append ("GitHub API accessible" )
28- return True
23+ # Check if we're in a CI/CD environment
24+ if os .getenv ('CI' ) or os .getenv ('GITHUB_ACTIONS' ):
25+ # In CI/CD, check if GITHUB_TOKEN is available
26+ github_token = os .getenv ('CONDUCTOR_GITHUB_TOKEN' ) or os .getenv ('GITHUB_TOKEN' ) or os .getenv ('GH_TOKEN' )
27+ if github_token :
28+ # Test API access using curl instead of gh CLI
29+ try :
30+ import urllib .request
31+ import urllib .parse
32+
33+ # Create request with Authorization header
34+ req = urllib .request .Request ('https://api.github.com/user' )
35+ req .add_header ('Authorization' , f'token { github_token } ' )
36+ req .add_header ('User-Agent' , 'Code-Conductor-CI' )
37+
38+ with urllib .request .urlopen (req ) as response :
39+ if response .status == 200 :
40+ self .results ["dependencies_satisfied" ].append ("GitHub API accessible (CI/CD)" )
41+ return True
42+ else :
43+ self .results ["blockers" ].append (
44+ f"GitHub API authentication failed - status { response .status } "
45+ )
46+ return False
47+ except Exception as e :
48+ self .results ["blockers" ].append (f"GitHub API error in CI/CD: { e } " )
49+ return False
2950 else :
3051 self .results ["blockers" ].append (
31- "GitHub API authentication failed - run 'gh auth login' "
52+ "GitHub token not available in CI/CD environment "
3253 )
3354 return False
34- except FileNotFoundError :
35- self .results ["blockers" ].append (
36- "GitHub CLI not installed - visit https://cli.github.com"
37- )
38- return False
39- except Exception as e :
40- self .results ["blockers" ].append (f"GitHub CLI error: { e } " )
41- return False
55+ else :
56+ # Local environment - use GitHub CLI
57+ try :
58+ result = subprocess .run (
59+ ["gh" , "api" , "user" ], capture_output = True , text = True
60+ )
61+ if result .returncode == 0 :
62+ self .results ["dependencies_satisfied" ].append ("GitHub API accessible" )
63+ return True
64+ else :
65+ self .results ["blockers" ].append (
66+ "GitHub API authentication failed - run 'gh auth login'"
67+ )
68+ return False
69+ except FileNotFoundError :
70+ self .results ["blockers" ].append (
71+ "GitHub CLI not installed - visit https://cli.github.com"
72+ )
73+ return False
74+ except Exception as e :
75+ self .results ["blockers" ].append (f"GitHub CLI error: { e } " )
76+ return False
4277
4378 def check_git_status (self ):
4479 """Check git repository status"""
0 commit comments