Instalacija¶
Opcija instalacije zavisi od vašeg slučaja upotrebe i ciljeva.
1. CI/CD — Automatizovana revizija¶
Najčešći scenario: AI Code Reviewer se pokreće automatski kada se kreira ili ažurira PR/MR.
Podesite za 5 minuta:
Za fino podešavanje pogledajte Konfiguracija →
2. Samostalno postavljanje: CLI/Docker¶
CLI i Docker image omogućavaju pokretanje AI Code Reviewer-a van standardnog CI pipeline-a.
Scenariji upotrebe¶
| Scenario | Kako realizovati |
|---|---|
| Ručno pokretanje | Lokalni terminal — debugging, demo, evaluacija |
| Scheduled review | GitLab Scheduled Pipeline / GitHub Actions schedule / cron |
| Batch review | Skripta koja iterira kroz otvorene PR/MR |
| Vlastiti server | Docker na serveru sa pristupom Git API-ju |
| On-demand review | Webhook → pokretanje kontejnera |
Obavezne varijable okruženja¶
| Varijabla | Opis | Kada je potrebna | Kako dobiti |
|---|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
API ključ za Gemini | Uvijek | Google AI Studio |
AI_REVIEWER_GITHUB_TOKEN |
GitHub Personal Access Token | Za GitHub | Instrukcije |
AI_REVIEWER_GITLAB_TOKEN |
GitLab Personal Access Token | Za GitLab | Instrukcije |
Fallback
Stara imena bez prefiksa (npr. GOOGLE_API_KEY) i dalje rade kao fallback.
Ručno pokretanje¶
Za debugging, demo, evaluaciju prije implementacije, retrospektivnu analizu PR/MR.
Docker (preporučeno)¶
Nije potrebna instalacija Python-a — sve je u kontejneru.
Korak 1: Preuzmite image
Korak 2: Pokrenite reviziju
Docker images
Dostupni iz dva registra:
ghcr.io/konstziv/ai-code-reviewer:1— GitHub Container Registrykoszivdocker/ai-reviewbot:1— DockerHub
pip / uv¶
Instalacija kao Python paket.
Korak 1: Instalirajte
Python verzija
Zahtijeva Python 3.13+
Korak 2: Podesite varijable
export AI_REVIEWER_GOOGLE_API_KEY=your_api_key
export AI_REVIEWER_GITHUB_TOKEN=your_token # ili AI_REVIEWER_GITLAB_TOKEN za GitLab
Korak 3: Pokrenite
Opcione varijable¶
Dodatne varijable su dostupne za fino podešavanje:
| Varijabla | Podrazumijevano | Efekat |
|---|---|---|
AI_REVIEWER_LANGUAGE |
en |
Jezik odgovora (ISO 639) |
AI_REVIEWER_LANGUAGE_MODE |
adaptive |
Režim detekcije jezika |
AI_REVIEWER_GEMINI_MODEL |
gemini-2.5-flash |
Gemini model |
AI_REVIEWER_LOG_LEVEL |
INFO |
Nivo logovanja |
Scheduled reviews¶
Pokretanje revizije po rasporedu — za uštedu resursa ili kada nije potreban trenutni feedback.
# .gitlab-ci.yml
ai-review-scheduled:
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- |
# Dobij listu otvorenih MR
MR_LIST=$(curl -s --header "PRIVATE-TOKEN: $AI_REVIEWER_GITLAB_TOKEN" \
"$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/merge_requests?state=opened" \
| jq -r '.[].iid')
# Pokreni reviziju za svaki MR
for MR_IID in $MR_LIST; do
echo "Reviewing MR !$MR_IID"
ai-review --provider gitlab --repo $CI_PROJECT_PATH --pr $MR_IID || true
done
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
Podešavanje rasporeda: Project → Build → Pipeline schedules → New schedule
# .github/workflows/scheduled-review.yml
name: Scheduled AI Review
on:
schedule:
- cron: '0 9 * * *' # Svaki dan u 9:00 UTC
jobs:
review-open-prs:
runs-on: ubuntu-latest
steps:
- name: Get open PRs and review
env:
AI_REVIEWER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AI_REVIEWER_GOOGLE_API_KEY: ${{ secrets.AI_REVIEWER_GOOGLE_API_KEY }}
run: |
# Dobij listu otvorenih PR
PRS=$(gh pr list --repo ${{ github.repository }} --state open --json number -q '.[].number')
for PR in $PRS; do
echo "Reviewing PR #$PR"
docker run --rm \
-e AI_REVIEWER_GOOGLE_API_KEY -e AI_REVIEWER_GITHUB_TOKEN \
ghcr.io/konstziv/ai-code-reviewer:1 \
--repo ${{ github.repository }} --pr $PR || true
done
Vlastiti server / privatno okruženje¶
Za deployovanje na vlastitoj infrastrukturi sa pristupom Git API-ju.
Opcije:
- Docker na serveru — pokretanje putem cron, systemd timer, ili kao servis
- Kubernetes — CronJob za scheduled reviews
- Self-hosted GitLab — dodajte varijablu
GITLAB_URL(pogledajte primjer ispod)
Primjer cron job-a:
# /etc/cron.d/ai-review
# Svaki dan u 10:00 pokreni reviziju za sve otvorene MR
0 10 * * * reviewer /usr/local/bin/review-all-mrs.sh
#!/bin/bash
# /usr/local/bin/review-all-mrs.sh
export AI_REVIEWER_GOOGLE_API_KEY="your_key"
export AI_REVIEWER_GITLAB_TOKEN="your_token"
MR_LIST=$(curl -s --header "PRIVATE-TOKEN: $AI_REVIEWER_GITLAB_TOKEN" \
"https://gitlab.company.com/api/v4/projects/123/merge_requests?state=opened" \
| jq -r '.[].iid')
for MR_IID in $MR_LIST; do
docker run --rm \
-e AI_REVIEWER_GOOGLE_API_KEY -e AI_REVIEWER_GITLAB_TOKEN \
ghcr.io/konstziv/ai-code-reviewer:1 \
--provider gitlab --repo group/repo --pr $MR_IID
done
Self-hosted GitLab
Za self-hosted GitLab dodajte varijablu AI_REVIEWER_GITLAB_URL:
3. Kontributori / Razvoj¶
Ako imate vremena i inspiracije da pomognete u razvoju paketa, ili želite da ga koristite kao osnovu za sopstveni razvoj — iskreno pozdravljamo i ohrabrujemo takve akcije!
Razvojna instalacija¶
# Klonirajte repozitorijum
git clone https://github.com/KonstZiv/ai-code-reviewer.git
cd ai-code-reviewer
# Instalirajte zavisnosti (koristimo uv)
uv sync
# Verifikujte
uv run ai-review --help
# Pokrenite testove
uv run pytest
# Pokrenite provjere kvaliteta
uv run ruff check .
uv run mypy .
uv
Koristimo uv za upravljanje zavisnostima.
Instalirajte: curl -LsSf https://astral.sh/uv/install.sh | sh
Struktura projekta¶
ai-code-reviewer/
├── src/ai_reviewer/ # Izvorni kod
│ ├── core/ # Modeli, konfiguracija, formatiranje
│ ├── integrations/ # GitHub, GitLab, Gemini
│ └── utils/ # Pomoćne funkcije
├── tests/ # Testovi
├── docs/ # Dokumentacija
└── examples/ # Primjeri CI konfiguracija
Zahtjevi¶
Sistemski zahtjevi¶
| Komponenta | Zahtjev |
|---|---|
| Python | 3.13+ (za pip instalaciju) |
| Docker | 20.10+ (za Docker) |
| OS | Linux, macOS, Windows |
| RAM | 256MB+ |
| Mreža | Pristup generativelanguage.googleapis.com |
API ključevi¶
| Ključ | Potreban | Kako dobiti |
|---|---|---|
| Google Gemini API | Da | Google AI Studio |
| GitHub PAT | Za GitHub | Instrukcije |
| GitLab PAT | Za GitLab | Instrukcije |
Ograničenja Gemini API-ja¶
Besplatni nivo
Google Gemini ima besplatni nivo:
| Ograničenje | Vrijednost |
|---|---|
| Zahtjevi po minuti | 15 RPM |
| Tokeni po danu | 1M |
| Zahtjevi po danu | 1500 |
Ovo je dovoljno za većinu projekata.