FIX: Update GitHubCIHelper to use env vars for init
This commit is contained in:
+30
-22
@@ -15,40 +15,49 @@ class GitHubCIHelper(BaseTool): # Inherits from BaseTool
|
||||
A helper class to interact with GitHub Actions CI,
|
||||
specifically for fetching and analyzing test logs.
|
||||
"""
|
||||
def __init__(self, repo_owner: str, repo_name: str, github_token: str = None, session=None, logger_instance=None): # Added session and logger_instance
|
||||
"""
|
||||
Initializes the GitHubCIHelper.
|
||||
def __init__(self, repo_owner: str = None, repo_name: str = None, github_token: str = None, session=None, logger_instance=None):
|
||||
# Call BaseTool's init. BaseTool's __init__ expects 'logger' as the arg name.
|
||||
super().__init__(logger=logger_instance)
|
||||
|
||||
# Logger setup: Prefer logger_instance, then BaseTool's logger, then a default.
|
||||
if logger_instance:
|
||||
self.logger = logger_instance
|
||||
elif not hasattr(self, 'logger') or self.logger is None: # If BaseTool didn't set it or set to None
|
||||
self.logger = logging.getLogger(__name__ + '.' + self.__class__.__name__)
|
||||
# Ensure logger has handlers to prevent "No handlers could be found"
|
||||
if not self.logger.handlers:
|
||||
self.logger.addHandler(logging.NullHandler())
|
||||
|
||||
# Repo owner and name handling
|
||||
if repo_owner and repo_name:
|
||||
self.repo_owner = repo_owner
|
||||
self.repo_name = repo_name
|
||||
else:
|
||||
github_repository = os.environ.get("GITHUB_REPOSITORY")
|
||||
if not github_repository or '/' not in github_repository:
|
||||
self.logger.error("GITHUB_REPOSITORY environment variable not set or in incorrect format (expected 'owner/repo') and repo_owner/repo_name not provided during __init__.")
|
||||
raise ValueError("GITHUB_REPOSITORY environment variable not set or in incorrect format (expected 'owner/repo') and repo_owner/repo_name not provided.")
|
||||
self.repo_owner, self.repo_name = github_repository.split('/', 1)
|
||||
self.logger.info(f"Initialized repo_owner/repo_name from GITHUB_REPOSITORY: {self.repo_owner}/{self.repo_name}")
|
||||
|
||||
Args:
|
||||
repo_owner (str): The owner of the GitHub repository (e.g., '''bucolucas''').
|
||||
repo_name (str): The name of the GitHub repository (e.g., '''cyclop''').
|
||||
github_token (str, optional): A GitHub Personal Access Token (PAT)
|
||||
for API authentication. Recommended for
|
||||
private repos or higher rate limits.
|
||||
Can also be set via GITHUB_TOKEN env var.
|
||||
session (requests.Session, optional): An external requests session to use.
|
||||
logger_instance (logging.Logger, optional): An external logger instance.
|
||||
"""
|
||||
self.repo_owner = repo_owner
|
||||
self.repo_name = repo_name
|
||||
self.base_url = f"https://api.github.com/repos/{self.repo_owner}/{self.repo_name}"
|
||||
self._token = github_token or os.environ.get("GITHUB_TOKEN") # Renamed to _token for consistency
|
||||
self._token = github_token or os.environ.get("GITHUB_TOKEN")
|
||||
|
||||
if not self._token:
|
||||
self.logger.warning("GitHub token not provided directly or via GITHUB_TOKEN. API requests may be rate-limited or fail for private resources.")
|
||||
|
||||
self.headers = {
|
||||
"Accept": "application/vnd.github.v3+json"
|
||||
}
|
||||
if self._token: # Use self._token
|
||||
if self._token:
|
||||
self.headers["Authorization"] = f"token {self._token}"
|
||||
|
||||
if session:
|
||||
self.session = session
|
||||
else:
|
||||
self.session = requests.Session()
|
||||
# Headers are applied per-request in _make_request or directly where self.session is used if needed globally for session
|
||||
|
||||
self.logger = logger_instance if logger_instance else logging.getLogger(__name__)
|
||||
if not self.logger.handlers:
|
||||
self.logger.addHandler(logging.NullHandler())
|
||||
self.logger.info(f"GitHubCIHelper initialized for {self.repo_owner}/{self.repo_name}.")
|
||||
|
||||
def get_functions(self):
|
||||
return [
|
||||
@@ -400,4 +409,3 @@ if __name__ == "__main__":
|
||||
|
||||
else:
|
||||
example_logger.info(f"No failed 'Python CI' workflow run found for PR #{pr_number} or the PR doesn't exist/no runs yet.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user