Files
pr-agent/INSTALL.md
2023-07-18 17:46:42 +03:00

6.2 KiB

Installation


Method 1: Use Docker image (no installation required)

To request a review for a PR, or ask a question about a PR, you can run directly from the Docker image. Here's how:

  1. To request a review for a PR, run the following command:
docker run --rm -it -e OPENAI.KEY=<your key> -e GITHUB.USER_TOKEN=<your token> codiumai/pr-agent --pr_url <pr_url> review
  1. To ask a question about a PR, run the following command:
docker run --rm -it -e OPENAI.KEY=<your key> -e GITHUB.USER_TOKEN=<your token> codiumai/pr-agent --pr_url <pr_url> ask "<your question>"

Possible questions you can ask include:

  • What is the main theme of this PR?
  • Is the PR ready for merge?
  • What are the main changes in this PR?
  • Should this PR be split into smaller parts?
  • Can you compose a rhymed song about this PR?

Method 2: Run as a GitHub Action

You can use our pre-built Github Action Docker image to run PR-Agent as a Github Action.

  1. Add the following file to your repository under .github/workflows/pr_agent.yml:
on:
  pull_request:
  issue_comment:
jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: Codium-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  1. Add the following secret to your repository under Settings > Secrets:
OPENAI_KEY: <your key>

The GITHUB_TOKEN secret is automatically created by GitHub.

  1. Merge this change to your main branch. When you open your next PR, you should see a comment from github-actions bot with a review of your PR, and instructions on how to use the rest of the tools.

  2. You may configure PR-Agent by adding environment variables under the env section corresponding to any configurable property in the configuration file. Some examples:

      env:
        # ... previous environment values
        OPENAI.ORG: "<Your organization name under your OpenAI account>"
        PR_REVIEWER.REQUIRE_TESTS_REVIEW: "false" # Disable tests review
        PR_CODE_SUGGESTIONS.NUM_CODE_SUGGESTIONS: 6 # Increase number of code suggestions

Method 3: Run from source

  1. Clone this repository:
git clone https://github.com/Codium-ai/pr-agent.git
  1. Install the requirements in your favorite virtual environment:
pip install -r requirements.txt
  1. Copy the secrets template file and fill in your OpenAI key and your GitHub user token:
cp pr_agent/settings/.secrets_template.toml pr_agent/settings/.secrets.toml
# Edit .secrets.toml file
  1. Run the appropriate Python scripts from the scripts folder:
python pr_agent/cli.py --pr_url <pr_url> review
python pr_agent/cli.py --pr_url <pr_url> ask <your question>
python pr_agent/cli.py --pr_url <pr_url> describe
python pr_agent/cli.py --pr_url <pr_url> improve

Method 4: Run as a polling server

Request reviews by tagging your Github user on a PR

Follow steps 1-3 of method 2. Run the following command to start the server:

python pr_agent/servers/github_polling.py

Method 5: Run as a GitHub App

Allowing you to automate the review process on your private or public repositories.

  1. Create a GitHub App from the Github Developer Portal.

    • Set the following permissions:
      • Pull requests: Read & write
      • Issue comment: Read & write
      • Metadata: Read-only
    • Set the following events:
      • Issue comment
      • Pull request
  2. Generate a random secret for your app, and save it for later. For example, you can use:

WEBHOOK_SECRET=$(python -c "import secrets; print(secrets.token_hex(10))")
  1. Acquire the following pieces of information from your app's settings page:

    • App private key (click "Generate a private key" and save the file)
    • App ID
  2. Clone this repository:

git clone https://github.com/Codium-ai/pr-agent.git
  1. Copy the secrets template file and fill in the following:

    cp pr_agent/settings/.secrets_template.toml pr_agent/settings/.secrets.toml
    # Edit .secrets.toml file
    
    • Your OpenAI key.
    • Copy your app's private key to the private_key field.
    • Copy your app's ID to the app_id field.
    • Copy your app's webhook secret to the webhook_secret field.
    • Set deployment_type to 'app' in configuration.toml
  2. Build a Docker image for the app and optionally push it to a Docker repository. We'll use Dockerhub as an example:

docker build . -t codiumai/pr-agent:github_app --target github_app -f docker/Dockerfile
docker push codiumai/pr-agent:github_app  # Push to your Docker repository
  1. Host the app using a server, serverless function, or container environment. Alternatively, for development and debugging, you may use tools like smee.io to forward webhooks to your local machine. You can check Deploy as a Lambda Function

  2. Go back to your app's settings, and set the following:

    • Webhook URL: The URL of your app's server or the URL of the smee.io channel.
    • Webhook secret: The secret you generated earlier.
  3. Install the app by navigating to the "Install App" tab and selecting your desired repositories.


Deploy as a Lambda Function

  1. Follow steps 1-5 of Method 5.
  2. Build a docker image that can be used as a lambda function
    docker buildx build --platform=linux/amd64 . -t codiumai/pr-agent:serverless -f docker/Dockerfile.lambda
    
  3. Push image to ECR
    docker tag codiumai/pr-agent:serverless <AWS_ACCOUNT>.dkr.ecr.<AWS_REGION>.amazonaws.com/codiumai/pr-agent:serverless
    docker push <AWS_ACCOUNT>.dkr.ecr.<AWS_REGION>.amazonaws.com/codiumai/pr-agent:serverless
    
  4. Create a lambda function that uses the uploaded image. Set the lambda timeout to be at least 3m.
  5. Configure the lambda function to have a Function URL.
  6. Go back to steps 8-9 of Method 5 with the function url as your Webhook URL. The Webhook URL would look like https://<LAMBDA_FUNCTION_URL>/api/v1/github_webhooks