7.8 KiB
🔑 Мастер токены для Git платформ
📋 Описание
Теперь можно настроить мастер токены в .env файле. Эти токены будут использоваться для всех репозиториев, где не указан собственный API токен.
⚙️ Как настроить
1. Добавьте в .env
# Master Git Tokens (optional)
MASTER_GITEA_TOKEN=your_gitea_token_here
MASTER_GITHUB_TOKEN=your_github_token_here
MASTER_BITBUCKET_TOKEN=your_bitbucket_token_here
2. Перезапустите backend
cd backend
./start.bat # или ./start.sh на Linux/Mac
🎯 Как работает
Логика выбора токена:
- Если у репозитория ЕСТЬ свой токен → используется токен репозитория
- Если у репозитория НЕТ токена → используется мастер токен из
.env - Если и мастер токен не настроен → ошибка
Приоритет:
Токен репозитория > Мастер токен > Ошибка
🔍 Примеры использования
Вариант 1: Один токен для всех
Сценарий: Все ваши проекты находятся в одной Gitea инстанции
.env:
MASTER_GITEA_TOKEN=abc123xyz789
Создание репозитория (без токена):
POST /api/repositories
{
"name": "my-project",
"platform": "GITEA",
"url": "https://git.example.com/user/my-project"
// api_token НЕ указан
}
✅ Будет использован MASTER_GITEA_TOKEN
Вариант 2: Разные токены для разных проектов
Сценарий: У некоторых проектов особые требования к доступу
.env:
MASTER_GITEA_TOKEN=default_token_123
Репозиторий 1 (использует мастер токен):
{
"name": "project-a",
"platform": "GITEA",
"url": "https://git.example.com/user/project-a"
// api_token НЕ указан → использует MASTER_GITEA_TOKEN
}
Репозиторий 2 (свой токен):
{
"name": "project-b",
"platform": "GITEA",
"url": "https://git.example.com/user/project-b",
"api_token": "special_token_456" // Указан свой токен
}
✅ project-a использует мастер токен
✅ project-b использует свой токен
Вариант 3: Несколько платформ
.env:
MASTER_GITEA_TOKEN=gitea_token_123
MASTER_GITHUB_TOKEN=github_token_456
MASTER_BITBUCKET_TOKEN=bitbucket_token_789
Репозитории:
// Gitea - использует MASTER_GITEA_TOKEN
{
"platform": "GITEA",
"url": "https://git.example.com/user/repo1"
}
// GitHub - использует MASTER_GITHUB_TOKEN
{
"platform": "GITHUB",
"url": "https://github.com/user/repo2"
}
// Bitbucket - использует MASTER_BITBUCKET_TOKEN
{
"platform": "BITBUCKET",
"url": "https://bitbucket.org/user/repo3"
}
🔒 Безопасность
⚠️ Важно:
- Мастер токены НЕ шифруются в
.env(они должны быть читаемыми для приложения) - Токены репозиториев шифруются перед сохранением в БД
- НЕ коммитьте
.envфайл в Git! - Используйте
.env.exampleкак шаблон
Права токенов:
Убедитесь что токены имеют необходимые права:
Для Gitea/GitHub/Bitbucket:
- ✅ Чтение репозитория
- ✅ Чтение PR
- ✅ Создание комментариев
📊 Логирование
При запуске ревью вы увидите какой токен используется:
📋 ИНФОРМАЦИЯ О PR
...
🔑 Используется мастер gitea токен
или
🔑 Используется проектный токен
🎨 Изменения в UI
Форма создания репозитория:
Было:
API Token: [обязательное поле]
Стало:
API Token: [необязательное поле]
Подсказка: Оставьте пустым чтобы использовать мастер токен
📝 Примеры из логов
С мастер токеном:
📤 Публикация ревью в Gitea PR #5
Комментариев: 4
🔑 Используется мастер gitea токен
✅ Комментарий опубликован!
С проектным токеном:
📤 Публикация ревью в Gitea PR #5
Комментариев: 4
🔑 Используется проектный токен
✅ Комментарий опубликован!
Ошибка (токен не настроен):
❌ ERROR: API токен не указан для репозитория my-project
и мастер токен для gitea не настроен в .env (MASTER_GITEA_TOKEN)
🔧 Миграция базы данных
Поле api_token в таблице repositories теперь nullable:
Старая схема:
api_token VARCHAR NOT NULL
Новая схема:
api_token VARCHAR NULL
⚠️ Если у вас уже есть репозитории:
- Они продолжат работать со своими токенами
- Новые репозитории можно создавать без токена
🧪 Как протестировать
1. Настройте мастер токен в .env
MASTER_GITEA_TOKEN=your_token_here
2. Создайте репозиторий БЕЗ токена
curl -X POST http://localhost:8000/api/repositories \
-H "Content-Type: application/json" \
-d '{
"name": "test-repo",
"platform": "GITEA",
"url": "https://git.example.com/user/test-repo"
}'
3. Запустите ревью
Кнопка "🔍 Проверить сейчас"
4. Проверьте логи
Должно быть: 🔑 Используется мастер gitea токен
✅ Преимущества
- Удобство - не нужно указывать токен для каждого репозитория
- Гибкость - можно переопределить токен для конкретного репозитория
- Безопасность - проектные токены все еще шифруются
- Масштабируемость - легко добавлять много репозиториев
📁 Измененные файлы
backend/app/config.py- добавлены настройки мастер токеновbackend/app/models/repository.py-api_tokenтеперь nullablebackend/app/schemas/repository.py-api_tokenопциональныйbackend/app/api/repositories.py- логика выбора токенаbackend/app/agents/reviewer.py- логика выбора токенаbackend/.env.example- пример конфигурации
🎉 Готово!
Теперь вы можете:
- ✅ Использовать один токен для всех репозиториев
- ✅ Переопределять токен для конкретных репозиториев
- ✅ Легко масштабировать систему
Попробуйте! 🚀