mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-06-02 06:23:37 +02:00
ci: add GitHub issue templates and PR template with Russian localization
This commit is contained in:
@@ -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
|
||||||
@@ -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 их не чинит.
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|
||||||
|
<!-- 1–3 предложения по сути изменений. -->
|
||||||
|
|
||||||
|
## Связанные 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. -->
|
||||||
@@ -5,7 +5,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches: ["main", "master"]
|
branches: ["main", "master"]
|
||||||
schedule:
|
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.
|
# contention with the GitHub Actions hourly stampede.
|
||||||
- cron: "17 3 * * *"
|
- cron: "17 3 * * *"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|||||||
Reference in New Issue
Block a user