GitLab: Розширений приклад¶
Production-ready конфігурація з усіма best practices.
Крок 1: Створіть Personal Access Token (PAT)¶
User Settings → Access Tokens → Add new token
| Поле | Значення |
|---|---|
| Name | ai-code-reviewer |
| Scopes | api |
| Expiration | За потреби |
Free план
Personal Access Token працює на всіх планах GitLab, включаючи Free.
Project Access Token доступний лише на GitLab Premium/Ultimate.
Крок 2: Додайте змінні¶
Settings → CI/CD → Variables
| Назва | Значення | Опції |
|---|---|---|
AI_REVIEWER_GOOGLE_API_KEY |
Gemini API ключ | Masked |
AI_REVIEWER_GITLAB_TOKEN |
PAT з Кроку 1 | Masked |
Крок 3: Додайте job¶
.gitlab-ci.yml:
stages:
- test
- review
# ... інші jobs ...
ai-review:
stage: review
image: ghcr.io/konstziv/ai-code-reviewer:1
script:
- ai-review
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
# Не блокувати MR якщо review failed
allow_failure: true
# Timeout захист
timeout: 10m
# Можна скасувати при новому коміті
interruptible: true
# Не чекати на інші stages
needs: []
variables:
AI_REVIEWER_LANGUAGE: uk
AI_REVIEWER_LANGUAGE_MODE: adaptive
Що включено¶
| Функція | Статус | Опис |
|---|---|---|
| Inline discussions | З PAT токеном | |
| Non-blocking | allow_failure: true |
|
| Timeout | 10 хвилин | |
| Interruptible | Скасовується при новому коміті | |
| Паралельний запуск | needs: [] |
|
| Українська мова | LANGUAGE: uk |
Варіації¶
Self-hosted GitLab¶
З кастомним Docker registry¶
З DEBUG логами¶
Тільки для певних гілок¶
ai-review:
# ...
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: always
- if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"
when: always
Токен для GitLab¶
CI_JOB_TOKEN не працює
Автоматичний CI_JOB_TOKEN від GitLab не може постити коментарі до Merge Requests
(Notes API потребує scope api, якого CI_JOB_TOKEN не має).
Ви повинні використовувати Personal Access Token або Project Access Token.
Рекомендація: Використовуйте Personal Access Token для повної функціональності. Він працює на всіх планах GitLab, включаючи Free.
Troubleshooting¶
Review не постить коментарі¶
- Перевірте логи job
- Перевірте що
AI_REVIEWER_GITLAB_TOKENмає scopeapi - Перевірте що pipeline запущено для MR
"401 Unauthorized"¶
Токен невалідний або expired. Створіть новий PAT.
"403 Forbidden"¶
Токен не має доступу до проєкту. Перевірте права.
Повний приклад .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"