diff --git a/docker/Dockerfile b/docker/Dockerfile index 4336cacc..951f846c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -18,6 +18,10 @@ FROM base as github_polling ADD pr_agent pr_agent CMD ["python", "pr_agent/servers/github_polling.py"] +FROM base as gitlab_webhook +ADD pr_agent pr_agent +CMD ["python", "pr_agent/servers/gitlab_webhook.py"] + FROM base as test ADD requirements-dev.txt . RUN pip install -r requirements-dev.txt && rm requirements-dev.txt diff --git a/pr_agent/servers/github_app.py b/pr_agent/servers/github_app.py index 10584e54..c9f25124 100644 --- a/pr_agent/servers/github_app.py +++ b/pr_agent/servers/github_app.py @@ -98,6 +98,7 @@ async def handle_request(body: Dict[str, Any], event: str): api_url = body["comment"]["pull_request_url"] else: return {} + logging.info(body) logging.info(f"Handling comment because of event={event} and action={action}") comment_id = body.get("comment", {}).get("id") provider = get_git_provider()(pr_url=api_url) @@ -129,6 +130,7 @@ async def handle_request(body: Dict[str, Any], event: str): args = split_command[1:] other_args = update_settings_from_args(args) new_command = ' '.join([command] + other_args) + logging.info(body) logging.info(f"Performing command: {new_command}") await agent.handle_request(api_url, new_command) diff --git a/pr_agent/servers/gitlab_webhook.py b/pr_agent/servers/gitlab_webhook.py index 565405b4..8321cd60 100644 --- a/pr_agent/servers/gitlab_webhook.py +++ b/pr_agent/servers/gitlab_webhook.py @@ -1,6 +1,7 @@ import copy import json import logging +import sys import uvicorn from fastapi import APIRouter, FastAPI, Request, status @@ -15,6 +16,7 @@ from pr_agent.agent.pr_agent import PRAgent from pr_agent.config_loader import get_settings, global_settings from pr_agent.secret_providers import get_secret_provider +logging.basicConfig(stream=sys.stdout, level=logging.INFO) router = APIRouter() secret_provider = get_secret_provider() if get_settings().get("CONFIG.SECRET_PROVIDER") else None @@ -43,6 +45,7 @@ async def gitlab_webhook(background_tasks: BackgroundTasks, request: Request): if not gitlab_token: return JSONResponse(status_code=status.HTTP_401_UNAUTHORIZED, content=jsonable_encoder({"message": "unauthorized"})) data = await request.json() + logging.info(json.dumps(data)) if data.get('object_kind') == 'merge_request' and data['object_attributes'].get('action') in ['open', 'reopen']: logging.info(f"A merge request has been opened: {data['object_attributes'].get('title')}") url = data['object_attributes'].get('url') @@ -55,6 +58,11 @@ async def gitlab_webhook(background_tasks: BackgroundTasks, request: Request): background_tasks.add_task(PRAgent().handle_request, url, body) return JSONResponse(status_code=status.HTTP_200_OK, content=jsonable_encoder({"message": "success"})) + +@router.get("/") +async def root(): + return {"status": "ok"} + def start(): gitlab_url = get_settings().get("GITLAB.URL", None) if not gitlab_url: