A Gemini-based tool to review GitLab Merge Requests.
Project description
GitLab Gemini Reviewer
An automated code review assistant powered by Google's Gemini AI. This tool analyzes GitLab Merge Requests, provides feedback as comments, creates Jira tickets, and generates QA test plans, streamlining your development workflow.
✨ Features
- Automated Code Analysis: Leverages the Gemini API to perform detailed code reviews.
- Inline MR Commenting: Posts suggestions and issues as discussions directly on the relevant code lines in the merge request.
- Overall Summary: Adds a general summary comment to the MR with a quality score.
- Automatic Approval: Can automatically approve merge requests that meet a configurable quality threshold.
- Seamless Jira Integration:
- Creates a specific sub-task for the code review under the main story.
- Generates and posts a detailed QA test plan as a comment on the parent ticket.
- Multi-language Support: Can provide feedback in English or Brazilian Portuguese.
- Highly Configurable: All parameters are controlled via environment variables, making it perfect for CI/CD environments.
🚀 How It Works
- Trigger: The tool is designed to be run in a CI/CD pipeline when a merge request is created or updated.
- Fetch Diffs: It fetches the code changes (diffs) from the specified GitLab merge request.
- Analyze: It sends the code, along with contextual information from the MR title and description, to the Gemini API for analysis.
- Post Feedback: It parses the AI's response and posts feedback to GitLab:
- A general summary note.
- Discussions attached to specific lines of code for each identified issue.
- Integrate with Jira:
- It extracts the Jira ticket key from the MR title (e.g.,
PROJ-123). - Creates a "Code Review" sub-task.
- Generates a complete QA test plan and posts it as a comment on the main Jira ticket.
- It extracts the Jira ticket key from the MR title (e.g.,
📦 Installation
You can install the package directly from the source code.
# Clone the repository first
git clone https://github.com/alairjt/gitlab-gemini-reviewer.git
cd gitlab-gemini-reviewer
# Install using pip
pip install .
⚙️ Configuration
The tool is configured entirely through environment variables.
| Variable | Description | Default | Required |
|---|---|---|---|
GITLAB_TOKEN |
Your GitLab personal access token with api scope. |
- | Yes |
GEMINI_API_KEY |
Your Google AI Studio API key for Gemini. | - | Yes |
CI_PROJECT_ID |
The ID of your GitLab project. Provided by GitLab CI. | - | Yes |
CI_MERGE_REQUEST_IID |
The IID (internal ID) of the merge request. Provided by GitLab CI. | - | Yes |
CI_SERVER_URL |
The base URL of your GitLab instance (e.g., https://gitlab.com). |
- | Yes |
JIRA_URL |
The base URL of your Jira instance. | - | No |
JIRA_USER |
The email or username for the Jira service account. | - | No |
JIRA_TOKEN |
The API token for the Jira service account. | - | No |
REVIEW_LANGUAGE |
The language for the AI's response (en or pt-BR). |
pt-BR |
No |
GEMINI_MODEL |
The Gemini model to use for the review. | gemini-1.5-flash |
No |
DEBUG |
Set to 1 or true for verbose error logging. |
- | No |
Note: The Jira variables are only required if you want to enable Jira integration.
▶️ Usage
After installation, the tool can be run from the command line.
gemini-reviewer
If you encounter a command not found error, it means the installation directory is not in your shell's PATH. You can either add it or run the tool as a module:
python -m gitlab_gemini_reviewer.gemini_mr_review
GitLab CI/CD Example
It's intended to be used as a step in your CI/CD pipeline.
# .gitlab-ci.yml
review_job:
stage: test
image: python:3.11-slim
before_script:
- pip install gitlab-gemini-reviewer # Or install from your private registry
script:
- gemini-reviewer
variables:
# It's highly recommended to store these as protected CI/CD variables in GitLab
GITLAB_TOKEN: $GITLAB_TOKEN
GEMINI_API_KEY: $GEMINI_API_KEY
JIRA_URL: $JIRA_URL
JIRA_USER: $JIRA_USER
JIRA_TOKEN: $JIRA_TOKEN
rules:
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
📄 License
This project is licensed under the MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitlab_gemini_reviewer-0.1.4.tar.gz.
File metadata
- Download URL: gitlab_gemini_reviewer-0.1.4.tar.gz
- Upload date:
- Size: 14.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e454c1afc10b7b791ba1f12bc6e692f8f5d0e1570555230aa91f153b8776dae
|
|
| MD5 |
4a2164f82d2b21059e2966e8795cf758
|
|
| BLAKE2b-256 |
f2a366d51563557ed24c523cbe13c62ab1cfb43306410eef173b79dbd6a11d5b
|
File details
Details for the file gitlab_gemini_reviewer-0.1.4-py3-none-any.whl.
File metadata
- Download URL: gitlab_gemini_reviewer-0.1.4-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1289b1a52703701900fd96d9b5e74025936f9c06cdf98528ba3e163dfc97a475
|
|
| MD5 |
8d761ccc156854097d1dfc904a3ee752
|
|
| BLAKE2b-256 |
103e3efaf8cc4c6e1e54d9fc49682630e2fb4f5e23f97d93aa988443ac087609
|