diff --git a/Dockerfile.bitbucket_pipeline b/Dockerfile.bitbucket_pipeline deleted file mode 100644 index 889ee120..00000000 --- a/Dockerfile.bitbucket_pipeline +++ /dev/null @@ -1,18 +0,0 @@ -FROM python:3.10 as base - -ENV OPENAI_API_KEY=${OPENAI_API_KEY} \ - BITBUCKET_BEARER_TOKEN=${BITBUCKET_BEARER_TOKEN} \ - BITBUCKET_PR_ID=${BITBUCKET_PR_ID} \ - BITBUCKET_REPO_SLUG=${BITBUCKET_REPO_SLUG} \ - BITBUCKET_WORKSPACE=${BITBUCKET_WORKSPACE} - - -WORKDIR /app -ADD pyproject.toml . -ADD requirements.txt . -RUN pip install . && rm pyproject.toml requirements.txt -ENV PYTHONPATH=/app -ADD pr_agent pr_agent -ADD bitbucket_pipeline/entrypoint.sh / -RUN chmod +x /entrypoint.sh -ENTRYPOINT ["/entrypoint.sh"] diff --git a/INSTALL.md b/INSTALL.md index 492dc25c..b1e2c486 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -375,59 +375,28 @@ In the "Trigger" section, check the ‘comments’ and ‘merge request events ### Method 9: Run as a Bitbucket Pipeline -You can use our pre-build Bitbucket-Pipeline docker image to run as Bitbucket-Pipeline. +You can use the Bitbucket Pipeline system to run PR-Agent on every pull request open or update. 1. Add the following file in your repository bitbucket_pipelines.yml ```yaml - pipelines: +pipelines: pull-requests: '**': - step: - name: PR Agent Pipeline - caches: - - pip - image: python:3.8 + name: PR Agent Review + image: python:3.10 services: - docker script: - - git clone https://github.com/Codium-ai/pr-agent.git - - cd pr-agent - - docker build -t bitbucket_runner:latest -f Dockerfile.bitbucket_pipeline . - - docker run -e OPENAI_API_KEY=$OPENAI_API_KEY -e BITBUCKET_BEARER_TOKEN=$BITBUCKET_BEARER_TOKEN -e BITBUCKET_PR_ID=$BITBUCKET_PR_ID -e BITBUCKET_REPO_SLUG=$BITBUCKET_REPO_SLUG -e BITBUCKET_WORKSPACE=$BITBUCKET_WORKSPACE bitbucket_runner:latest + - docker run -e CONFIG.GIT_PROVIDER=bitbucket -e OPENAI.KEY=$OPENAI_API_KEY -e BITBUCKET.BEARER_TOKEN=$BITBUCKET_BEARER_TOKEN codiumai/pr-agent:latest --pr_url=https://bitbucket.org/$BITBUCKET_WORKSPACE/$BITBUCKET_REPO_SLUG/pull-requests/$BITBUCKET_PR_ID review ``` -2. Add the following secret to your repository under Repository settings > Pipelines > Repository variables. +2. Add the following secure variables to your repository under Repository settings > Pipelines > Repository variables. OPENAI_API_KEY: BITBUCKET_BEARER_TOKEN: -3. To get BITBUCKET_BEARER_TOKEN follow these steps - So here is my step by step tutorial - i) Insert your workspace name instead of {workspace_name} and go to the following link in order to create an OAuth consumer. - - https://bitbucket.org/{workspace_name}/workspace/settings/api - - set callback URL to http://localhost:8976 (doesn't need to be a real server there) - select permissions: repository -> read - - ii) use consumer's Key as a {client_id} and open the following URL in the browser - - https://bitbucket.org/site/oauth2/authorize?client_id={client_id}&response_type=code - - iii) - after you press "Grant access" in the browser it will redirect you to - - http://localhost:8976?code= - - iv) use the code from the previous step and consumer's Key as a {client_id}, and consumer's Secret as {client_secret} - - curl -X POST -u "{client_id}:{client_secret}" \ - https://bitbucket.org/site/oauth2/access_token \ - -d grant_type=authorization_code \ - -d code={code} \ - - -After completing this steps, you just to place this access token in the repository varibles. +You can get a Bitbucket token for your repository by following Repository Settings -> Security -> Access Tokens ======= diff --git a/bitbucket_pipeline/entrypoint.sh b/bitbucket_pipeline/entrypoint.sh deleted file mode 100644 index cbea4b87..00000000 --- a/bitbucket_pipeline/entrypoint.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -python /app/pr_agent/servers/bitbucket_pipeline_runner.py \ No newline at end of file diff --git a/pr_agent/servers/bitbucket_pipeline_runner.py b/pr_agent/servers/bitbucket_pipeline_runner.py deleted file mode 100644 index 3c04e9ce..00000000 --- a/pr_agent/servers/bitbucket_pipeline_runner.py +++ /dev/null @@ -1,34 +0,0 @@ -import os -from pr_agent.agent.pr_agent import PRAgent -from pr_agent.config_loader import get_settings -from pr_agent.tools.pr_reviewer import PRReviewer -import asyncio - -async def run_action(): - try: - pull_request_id = os.environ.get("BITBUCKET_PR_ID", '') - slug = os.environ.get("BITBUCKET_REPO_SLUG", '') - workspace = os.environ.get("BITBUCKET_WORKSPACE", '') - bearer_token = os.environ.get('BITBUCKET_BEARER_TOKEN', None) - OPENAI_KEY = os.environ.get('OPENAI_API_KEY') or os.environ.get('OPENAI.KEY') - OPENAI_ORG = os.environ.get('OPENAI_ORG') or os.environ.get('OPENAI.ORG') - # Check if required environment variables are set - if not bearer_token: - print("BITBUCKET_BEARER_TOKEN not set") - return - - if not OPENAI_KEY: - print("OPENAI_KEY not set") - return - # Set the environment variables in the settings - get_settings().set("BITBUCKET.BEARER_TOKEN", bearer_token) - get_settings().set("OPENAI.KEY", OPENAI_KEY) - if OPENAI_ORG: - get_settings().set("OPENAI.ORG", OPENAI_ORG) - if pull_request_id and slug and workspace: - pr_url = f"https://bitbucket.org/{workspace}/{slug}/pull-requests/{pull_request_id}" - await PRReviewer(pr_url).run() - except Exception as e: - print(f"An error occurred: {e}") -if __name__ == "__main__": - asyncio.run(run_action())