Devex — приложение для GitHub которое может открыть репозиторий, отредактировать текстовый файл, закоммитить изменения в отдельную ветку и сразу создать PR.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python backend/app.pyПосле запуска приложение будет доступно по адресу http://localhost:5000.
Мин. конфигурация уже показана в .env.example.
FLASK_SECRET_KEY— секрет Flask-сессийGITHUB_TOKEN— необязательный Personal Access Token для fallback-сценариевGITHUB_APP_ID,GITHUB_APP_CLIENT_ID,GITHUB_APP_CLIENT_SECRET,GITHUB_APP_SLUG— настройки GitHub AppGITHUB_APP_PRIVATE_KEY_PATHилиGITHUB_APP_PRIVATE_KEY— приватный ключ GitHub AppPORT— порт локального сервера
Для чтения публичных репозиториев токен не обязателен. Для коммитов и PR нужен либо GITHUB_TOKEN с доступом на запись, либо корректно настроенный GitHub App с правами на запись в репозиторий.
При создании GitHub App укажите следующие значения:
- GitHub App name — любое имя приложения
- Homepage URL —
http://localhost:5000(или другой адрес, по которому будет доступно приложение) - Callback URL —
http://localhost:5000/auth/github/callback - Setup URL —
http://localhost:5000/auth/github/setup
Callback URL должен совпадать с OAuth callback-роутом приложения, а Setup URL — с роутом, который обрабатывает установку GitHub App после выбора репозитория.
Metadata — Read-only
Contents — Read and write
Pull requests — Read and write
Issues — Read and write
Commit statuses — Read and write
Checks — Read and write
Actions — Read-only
Workflows — Read and write
Pages — Read-only
Deployments — Read-only
Code scanning alerts — Read-only
Dependabot alerts — Read-only
Secret scanning alerts — Read-only
Discussions — Read-only или выключить.
Packages — Read-only
Webhooks — выключить.
Administration — не давать.
Secrets — не давать.
Variables — выключить или Read-only.
Environments — выключить или Read-only. Organization permissions: ничего не давай.
Account permissions: Email addresses — Read-only, только если нужен email пользователя. Profile — Read-only, если нужен username/avatar/name.
Subscribe to events:
Installation Installation repositories Pull request Push Issues — если используешь issues Issue comment — если хочешь команды типа /devex fix в issue/PR comments Check run / Check suite — если работаешь с checks Workflow run — если хочешь ловить результат CI Repository — опционально
Чем меньше прав выдано приложению, тем безопаснее установка.
Для локальной разработки и первых тестов лучше выбрать:
- Only on this account
Так GitHub App сможет устанавливаться только в пределах нужного аккаунта, без лишнего доступа к другим пользователям или организациям.
Если permissions уже были изменены, но приложение всё ещё не может пушить изменения, проверьте следующее:
- GitHub App переустановлена после изменения permissions
- App установлена именно на нужный репозиторий
- У выбранной установки есть доступ к нужному репозиторию
- Текущая сессия в приложении использует правильную installation
Если приложение умеет читать репозиторий, но не может создать коммит или PR, чаще всего причина именно в том, что GitHub App установлена без Contents: Read and write и Pull requests: Read and write.
- Подключите GitHub или вставьте токен.
- Укажите ссылку на репозиторий и базовую ветку.
- Откройте нужный файл и внесите изменения.
- Задайте суффикс ветки и сообщение коммита.
- Создайте коммит, затем откройте PR.