ci: add GitHub issue templates and PR template with Russian localization

This commit is contained in:
zarazaex69
2026-05-24 05:47:01 +03:00
parent 98c6dec4a0
commit bea018af67
6 changed files with 449 additions and 1 deletions

210
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,210 @@
name: Bug report / Баг
description: Сообщить о неработающем сценарии, отвале туннеля, таймауте, краше и т.п.
title: "[bug]: "
labels: ["bug"]
type: Bug
body:
- type: markdown
attributes:
value: |
Спасибо за репорт.
**Перед заполнением:**
- Проверь, что используешь актуальную версию (`main` или последний релиз).
- Если воспроизводишь на форке/старой ветке - обнови и проверь снова.
- Не сообщай о багах GUI-клиентов (olcbox, мобильные приложения) сюда - это баги ядра, GUI живёт в своих репозиториях.
- Если описание будет без логов и конфига, issue будет закрыт без разбора.
- type: checkboxes
id: prerequisites
attributes:
label: Pre-flight checklist
options:
- label: Я искал похожие issue (открытые и закрытые) и не нашёл дубликата.
required: true
- label: Я проверил баг на актуальной версии (`main` или последний релиз).
required: true
- label: Это баг ядра `olcrtc`, а не GUI-клиента (olcbox/мобильное приложение).
required: true
- type: input
id: version
attributes:
label: Версия olcrtc
description: Тег релиза, имя ветки и git commit (`git rev-parse --short HEAD`). Если собирал из docker - пиши тег образа.
placeholder: "main @ a1b2c3d / v0.x.y / refactor/universal-carrier @ ef01234"
validations:
required: true
- type: dropdown
id: build
attributes:
label: Способ сборки/запуска
options:
- Native
- Docker / docker compose
- Podman / script
- Other
validations:
required: true
- type: dropdown
id: os
attributes:
label: ОС / платформа
multiple: true
options:
- Linux
- Windows
- MacOS
- Android
- FreeBsd
- OpenBSD
- Haiku
- SeL4
validations:
required: true
- type: input
id: os_version
attributes:
label: Версия ОС / архитектура
placeholder: "Ubuntu 24.04 x86_64 / Windows 11 24H2 / Android 14 arm64"
validations:
required: true
- type: dropdown
id: provider
attributes:
label: auth.provider
options:
- jitsi
- telemost
- wbstream
- other
validations:
required: true
- type: dropdown
id: transport
attributes:
label: net.transport
options:
- datachannel
- vp8channel
- seichannel
- videochannel
validations:
required: true
- type: dropdown
id: side
attributes:
label: На какой стороне проявляется
multiple: true
options:
- srv (сервер)
- cnc (клиент)
- gen (генератор комнат)
validations:
required: true
- type: textarea
id: description
attributes:
label: Описание проблемы
description: Что происходит, что ожидалось, как часто воспроизводится.
placeholder: |
После N минут работы туннель отваливается, перезапуск клиента не помогает, лечится только перезапуском сервера.
validations:
required: true
- type: textarea
id: steps
attributes:
label: Шаги воспроизведения
placeholder: |
1. Запустить сервер с конфигом из вложения
2. Подключить клиент
3. Подождать ~15 минут / усыпить телефон
4. Попробовать открыть страницу через SOCKS - таймаут
validations:
required: true
- type: textarea
id: server_config
attributes:
label: Конфиг сервера (server.yaml)
description: |
**Обязательно вычисти `crypto.key`, `room.id`, `engine.token`, креды SOCKS, токены и любые другие секреты.**
Формат - code block YAML.
render: yaml
placeholder: |
mode: srv
auth:
provider: telemost
room:
id: "<REDACTED>"
crypto:
key: "<REDACTED>"
net:
transport: vp8channel
dns: "1.1.1.1:53"
data: data
validations:
required: true
- type: textarea
id: client_config
attributes:
label: Конфиг клиента (client.yaml)
description: Тот же конфиг с вычищенными секретами. Если воспроизводится только на одной стороне - допустимо вписать "не используется".
render: yaml
validations:
required: true
- type: textarea
id: server_logs
attributes:
label: Логи сервера
description: |
Полные логи с момента запуска до момента ошибки.
Если запуск через systemd - `journalctl -u olcrtc -n 500 --no-pager`.
Если docker - `docker logs <container>`.
Если запуск через podman - `podman logs -f <container> `.
render: shell
validations:
required: true
- type: textarea
id: client_logs
attributes:
label: Логи клиента
description: Полные логи клиента (включая `rtc:` строки) до момента ошибки.
render: shell
validations:
required: true
- type: textarea
id: network
attributes:
label: Сетевое окружение
description: |
Что между клиентом и сервером?
placeholder: |
- Провайдер клиента: <название, страна/город>
- Провайдер/хостинг сервера: <Aeza / Play2Go / Дома>
- DPI/блокировки на клиенте: да/нет, что именно блокируется
- NAT/CGNAT: да/нет
- IPv6 на клиенте/сервере: да/нет
- Используется ли upstream SOCKS (`socks.proxy_addr`): да/нет
validations:
required: true
- type: textarea
id: extra
attributes:
label: Дополнительно
description: Что ещё может быть полезно - версия podman/docker, нестандартный конфиг (failover, traffic shaping, lifecycle), временные паттерны (бьёт раз в сутки, после сна и т.п.), известные обходы.
validations:
required: false

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: Чат сообщества (Telegram)
url: https://t.me/openlibrecommunity
about: Общие вопросы, помощь по запуску, обсуждения. Перед созданием issue загляни сюда.
- name: Документация
url: https://github.com/openlibrecommunity/olcrtc/tree/main/docs
about: Конфигурация, быстрый старт, формат URI, примеры YAML.
- name: olcbox (UI клиент)
url: https://github.com/alananisimov/olcbox/issues
about: Баги интерфейса/мобильного клиента сообщай туда, ядро olcrtc их не чинит.

View File

@@ -0,0 +1,76 @@
name: Feature request / Фича
description: Предложить новую функциональность, провайдер, транспорт, интеграцию.
title: "[feat]: "
labels: ["enhancement"]
type: Feature
body:
- type: markdown
attributes:
value: |
Перед заполнением:
- Проверь, что фичи ещё нет в `main` и в pinned issue.
- Не предлагай бред вида "сделайте клиент под iOS / встройте в openwrt люси-плагин".
- Кастомные/нишевые интеграции можно и нужно предлагать .
- type: checkboxes
id: prerequisites
attributes:
label: Pre-flight
options:
- label: Я искал похожие issue (открытые и закрытые) и не нашёл дубликата.
required: true
- label: Это относится к ядру `olcrtc`, а не к GUI-клиенту.
required: true
- type: textarea
id: problem
attributes:
label: Проблема / use-case
description: Что не работает или работает неудобно сейчас.
placeholder: |
Сейчас приходится запускать отдельный процесс на каждую room - это неудобно когда...
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Предлагаемое решение
description: Конкретно, что добавить/изменить. Желательно с уровнем деталей "какой пакет/конфиг/API".
placeholder: |
Перенести `internal/app/session` в `pkg/session` и сделать стабильным API для встраивания.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Альтернативы
description: Что ты пробовал/рассматривал и почему оно не подходит.
validations:
required: false
- type: dropdown
id: scope
attributes:
label: Область
multiple: true
options:
- auth provider (jitsi/telemost/wbstream/новый)
- net transport (datachannel/vp8/sei/video/новый)
- mux / control / liveness
- конфиг / CLI / URI / sub
- сборка / CI / пакетирование
- документация
- библиотечный API (`pkg/`)
- другое
validations:
required: true
- type: textarea
id: contribution
attributes:
label: Готов ли сделать PR
placeholder: "Да / Нет / Могу помочь с тестами"
validations:
required: true

73
.github/ISSUE_TEMPLATE/question.yml vendored Normal file
View File

@@ -0,0 +1,73 @@
name: Question / Вопрос
description: Вопрос по работе, конфигурации, поведению olcrtc.
title: "[question]: "
labels: ["question"]
body:
- type: markdown
attributes:
value: |
Перед заполнением:
- Прочти [docs/configuration.md](https://github.com/openlibrecommunity/olcrtc/blob/main/docs/configuration.md), [docs/fast.md](https://github.com/openlibrecommunity/olcrtc/blob/main/docs/fast.md), [docs/manual.md](https://github.com/openlibrecommunity/olcrtc/blob/main/docs/manual.md).
- Общие "как запустить" - [Telegram-чат](https://t.me/openlibrecommunitychat/91706), там быстрее ответят.
- Если поведение похоже на баг (отвалы, таймауты, краши) - заводи Bug report.
- type: checkboxes
id: prerequisites
attributes:
label: Pre-flight
options:
- label: Я прочитал документацию в `docs/` и не нашёл ответа.
required: true
- label: Я искал похожие issue (открытые и закрытые) и не нашёл дубликата.
required: true
- label: Это относится к ядру `olcrtc`, а не к GUI-клиенту.
required: true
- type: textarea
id: question
attributes:
label: Вопрос
description: Сформулируй конкретно, одним абзацем.
placeholder: |
Как корректно настроить failover между jitsi+datachannel и wbstream+vp8channel, если...
validations:
required: true
- type: dropdown
id: provider
attributes:
label: auth.provider
description: Если вопрос привязан к конкретному провайдеру.
options:
- jitsi
- telemost
- wbstream
- other
- не относится
validations:
required: false
- type: dropdown
id: transport
attributes:
label: net.transport
description: Если вопрос привязан к конкретному транспорту.
options:
- datachannel
- vp8channel
- seichannel
- videochannel
- не относится
validations:
required: false
- type: textarea
id: context
attributes:
label: Контекст
description: |
Что ты уже сделал, какая ОС, что ожидаешь увидеть.
Если есть конфиг - приложи (с вычищенными `crypto.key`, `room.id`, токенами и кредами).
render: yaml
validations:
required: false

78
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,78 @@
<!--
Спасибо за PR.
Перед отправкой убедись:
- Заголовок в формате Conventional Commits: feat(scope): ..., fix(scope): ..., refactor(scope): ..., docs(scope): ...
- PR делает одну вещь.
- Прогнаны линтер и тесты (mage lint, mage test, go vet, golangci-lint).
- Чувствительные значения (ключи, токены, room.id, креды) НЕ попали в код, тесты, конфиги, логи.
- Если меняешь публичный API в `pkg/` - это явно отмечено .
-->
## Что меняет PR
<!-- 13 предложения по сути изменений. -->
## Связанные issue
<!-- Closes #123, Refs #456. Если PR ничего не закрывает - напиши "нет". -->
## Тип изменения
- [ ] fix - исправление бага
- [ ] feat - новая функциональность
- [ ] refactor - рефакторинг без изменения поведения
- [ ] perf - улучшение производительности
- [ ] docs - только документация
- [ ] build / ci - сборка, CI, пакетирование
- [ ] chore - прочее (deps, форматирование и т.п.)
- [ ] BREAKING CHANGE - ломает совместимость (конфиг/wire/публичный API)
## Область
<!-- Отметь то, что затронуто. -->
- [ ] auth (`internal/auth/jitsi|telemost|wbstream`)
- [ ] transport / channel (`pkg/olcrtc/tunnel`, datachannel/vp8/sei/video)
- [ ] mux / control / liveness / lifecycle
- [ ] session / app (`internal/app/session`, `pkg/`)
- [ ] config / CLI / URI / sub
- [ ] mobile (`mobile/`)
- [ ] CI / Docker / mage
- [ ] docs / examples
- [ ] другое:
## Как тестировалось
<!--
Опиши: какой провайдер, транспорт, режим (srv/cnc), ОС, как воспроизводил before/after.
-->
- Provider: <!-- jitsi / telemost / wbstream / none -->
- Transport: <!-- datachannel / vp8channel / seichannel / videochannel -->
- ОС: <!-- linux/windows/macos/android/freebsd -->
- Сценарий:
```text
<команды / шаги / лог до и после>
```
## Совместимость
- [ ] Конфиг (`*.yaml`) совместим с предыдущей версией
- [ ] Wire-протокол совместим (клиент старой версии работает с новым сервером и наоборот)
- [ ] Публичный API в `pkg/` не сломан
<!-- Если что-то сломано - опиши миграцию явно. -->
## Чек-лист
- [ ] Локально прогнаны `mage lint` и `mage test`
- [ ] Добавлены/обновлены тесты, где это имеет смысл
- [ ] Обновлена документация (`docs/`, примеры в `docs/examples/`, README), если поведение/конфиг изменились
- [ ] В коде нет закомментированного мусора, отладочных `fmt.Println`, токенов и ключей
- [ ] Я согласен с лицензией репозитория и тем, что мой вклад выпускается под ней
## Дополнительно
<!-- Что ещё нужно знать ревьюеру: нерешённые TODO, известные ограничения, follow-up PR. -->

View File

@@ -5,7 +5,7 @@ on:
pull_request:
branches: ["main", "master"]
schedule:
# Nightly stress soak 03:17 UTC keeps it off the hour to avoid
# Nightly stress soak - 03:17 UTC keeps it off the hour to avoid
# contention with the GitHub Actions hourly stampede.
- cron: "17 3 * * *"
workflow_dispatch: