GitLab: Napredni primjer¶
Konfiguracija spremna za produkciju sa svim najboljim praksama.
Korak 1: Kreirajte PAT¶
User Settings → Access Tokens → Add new token
| Polje | Vrijednost |
|---|---|
| Name | ai-code-reviewer |
| Scopes | api |
| Expiration | Po potrebi |
Korak 2: Dodajte varijable¶
Settings → CI/CD → Variables
| Ime | Vrijednost | Opcije |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
Gemini API ključ | Masked |
AI_REVIEWER_GITLAB_TOKEN |
PAT iz Koraka 1 | Masked |
Korak 3: Dodajte job¶
.gitlab-ci.yml:
stages:
- test
- review
# ... ostali job-ovi ...
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Ne blokiraj MR ako revizija ne uspije
allow_failure: true
# Zaštita timeout-om
timeout: 10m
# Može se otkazati na novi commit
interruptible: true
# Ne čekaj druge faze
needs: []
variables:
AI_REVIEWER_LANGUAGE: uk
AI_REVIEWER_LANGUAGE_MODE: adaptive
Šta je uključeno¶
| Funkcionalnost | Status | Opis |
|---|---|---|
| Inline diskusije | Sa PAT tokenom | |
| Neblokirajući | allow_failure: true |
|
| Timeout | 10 minuta | |
| Prekidiv | Otkazuje se na novi commit | |
| Paralelno pokretanje | needs: [] |
|
| Prilagođeni jezik | LANGUAGE: uk |
Varijacije¶
Self-hosted GitLab¶
Sa prilagođenim Docker registrom¶
Sa DEBUG logovima¶
Samo za određene grane¶
ai-review:
# ...
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
when: always
Rješavanje problema¶
Revizija ne objavljuje komentare¶
- Provjerite logove job-a
- Provjerite da
AI_REVIEWER_GITLAB_TOKENima scopeapi - Provjerite da se pipeline pokreće za MR
"401 Unauthorized"¶
Token je nevažeći ili je istekao. Kreirajte novi PAT.
"403 Forbidden"¶
Token nema pristup projektu. Provjerite dozvole.
Puni primjer .gitlab-ci.yml¶
stages:
- lint
- test
- review
- deploy
lint:
stage: lint
image: python:3.13
script:
- pip install ruff
- ruff check .
test:
stage: test
image: python:3.13
script:
- pip install pytest
- pytest
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
allow_failure: true
timeout: 10m
interruptible: true
needs: []
variables:
AI_REVIEWER_LANGUAGE: uk
deploy:
stage: deploy
script:
- echo "Deploying..."
rules:
- if: $CI_COMMIT_BRANCH == "main"