Skip to content

rubensflinco/gemini-code-review-action

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace
 
 

Repository files navigation

gemini-code-review-action

A container GitHub Action to review a pull request by Gemini AI.

If the size of a pull request is over the maximum chunk size of the Gemini API, the Action will split the pull request into multiple chunks and generate review comments for each chunk. And then the Action summarizes the review comments and posts a review comment to the pull request.

Pre-requisites

We have to set a GitHub Actions secret GEMINI_API_KEY to use the Gemini API so that we securely pass it to the Action.

Inputs

  • gemini_api_key: The Gemini API key to access the Gemini API (GET MY API KEY).
  • github_token: The GitHub token to access the GitHub API (You do not need to generate this Token!).
  • github_repository: The GitHub repository to post a review comment.
  • github_pull_request_number: The GitHub pull request number to post a review comment.
  • git_commit_hash: The git commit hash to post a review comment.
  • pull_request_diff: The diff of the pull request to generate a review comment.
  • pull_request_diff_chunk_size: The chunk size of the diff of the pull request to generate a review comment.
  • extra_prompt: The extra prompt to generate a review comment.
  • model: The model to generate a review comment. We can use a model which is available.
  • log_level: The log level to print logs.

As you might know, a model of Gemini has limitation of the maximum number of input tokens. So we have to split the diff of a pull request into multiple chunks, if the size of the diff is over the limitation. We can tune the chunk size based on the model we use.

Example usage

Here is an example to use the Action to review a pull request of the repository. The actual file is located at .github/workflows/ai-code-review.yml. We set extra_prompt to Sempre responda em português brasileiro!. We aim to make GPT review a pull request from a point of view of a Python developer.

As a result of an execution of the Action, the Action posts a review comment to the pull request like the following image. An example comment of the code review

name: "Code Review by Gemini AI"

on:
  pull_request:

jobs:
  review:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
    steps:
      - uses: actions/checkout@v3
      - name: "Get diff of the pull request"
        id: get_diff
        shell: bash
        env:
          PULL_REQUEST_HEAD_REF: "${{ github.event.pull_request.head.ref }}"
          PULL_REQUEST_BASE_REF: "${{ github.event.pull_request.base.ref }}"
        run: |-
          git fetch origin "${{ env.PULL_REQUEST_HEAD_REF }}"
          git fetch origin "${{ env.PULL_REQUEST_BASE_REF }}"
          git checkout "${{ env.PULL_REQUEST_HEAD_REF }}"
          git diff "origin/${{ env.PULL_REQUEST_BASE_REF }}" > "diff.txt"
          {
            echo "pull_request_diff<<EOF";
            cat "diff.txt";
            echo 'EOF';
          } >> $GITHUB_OUTPUT
      - uses: rubensflinco/[email protected]
        name: "Code Review by Gemini AI"
        id: review
        with:
          gemini_api_key: ${{ secrets.GEMINI_API_KEY }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          github_repository: ${{ github.repository }}
          github_pull_request_number: ${{ github.event.pull_request.number }}
          git_commit_hash: ${{ github.event.pull_request.head.sha }}
          model: "gemini-1.5-pro-latest"
          pull_request_diff: |-
            ${{ steps.get_diff.outputs.pull_request_diff }}
          pull_request_chunk_size: "3500"
          extra_prompt: |-
            Sempre responda em português brasileiro!
          log_level: "DEBUG"

About

A GitHub Action for Gemini AI to review a pull request

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 80.5%
  • Makefile 11.5%
  • Dockerfile 8.0%