diff --git a/pr_agent/servers/github_action_runner.py b/pr_agent/servers/github_action_runner.py index 65643772..2aa424d7 100644 --- a/pr_agent/servers/github_action_runner.py +++ b/pr_agent/servers/github_action_runner.py @@ -8,50 +8,61 @@ from pr_agent.tools.pr_reviewer import PRReviewer async def run_action(): - GITHUB_EVENT_NAME = os.environ.get('GITHUB_EVENT_NAME', None) + # Get environment variables + GITHUB_EVENT_NAME = os.environ.get('GITHUB_EVENT_NAME') + GITHUB_EVENT_PATH = os.environ.get('GITHUB_EVENT_PATH') + OPENAI_KEY = os.environ.get('OPENAI_KEY') + OPENAI_ORG = os.environ.get('OPENAI_ORG') + GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN') + + # Check if required environment variables are set if not GITHUB_EVENT_NAME: print("GITHUB_EVENT_NAME not set") return - GITHUB_EVENT_PATH = os.environ.get('GITHUB_EVENT_PATH', None) if not GITHUB_EVENT_PATH: print("GITHUB_EVENT_PATH not set") return - try: - event_payload = json.load(open(GITHUB_EVENT_PATH, 'r')) - except json.decoder.JSONDecodeError as e: - print(f"Failed to parse JSON: {e}") - return - OPENAI_KEY = os.environ.get('OPENAI_KEY', None) if not OPENAI_KEY: print("OPENAI_KEY not set") return - OPENAI_ORG = os.environ.get('OPENAI_ORG', None) - GITHUB_TOKEN = os.environ.get('GITHUB_TOKEN', None) if not GITHUB_TOKEN: print("GITHUB_TOKEN not set") return + + # Set the environment variables in the settings settings.set("OPENAI.KEY", OPENAI_KEY) if OPENAI_ORG: settings.set("OPENAI.ORG", OPENAI_ORG) settings.set("GITHUB.USER_TOKEN", GITHUB_TOKEN) settings.set("GITHUB.DEPLOYMENT_TYPE", "user") + + # Load the event payload + try: + with open(GITHUB_EVENT_PATH, 'r') as f: + event_payload = json.load(f) + except json.decoder.JSONDecodeError as e: + print(f"Failed to parse JSON: {e}") + return + + # Handle pull request event if GITHUB_EVENT_NAME == "pull_request": - action = event_payload.get("action", None) + action = event_payload.get("action") if action in ["opened", "reopened"]: - pr_url = event_payload.get("pull_request", {}).get("url", None) + pr_url = event_payload.get("pull_request", {}).get("url") if pr_url: await PRReviewer(pr_url).review() + # Handle issue comment event elif GITHUB_EVENT_NAME == "issue_comment": - action = event_payload.get("action", None) + action = event_payload.get("action") if action in ["created", "edited"]: - comment_body = event_payload.get("comment", {}).get("body", None) + comment_body = event_payload.get("comment", {}).get("body") if comment_body: - pr_url = event_payload.get("issue", {}).get("pull_request", {}).get("url", None) + pr_url = event_payload.get("issue", {}).get("pull_request", {}).get("url") if pr_url: body = comment_body.strip().lower() await PRAgent().handle_request(pr_url, body) if __name__ == '__main__': - asyncio.run(run_action()) + asyncio.run(run_action()) \ No newline at end of file