mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-05-30 08:59:43 +00:00
ci: add GitHub issue templates and PR template with Russian localization
This commit is contained in:
210
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
210
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal 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
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal 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 их не чинит.
|
||||
76
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
76
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal 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
73
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal 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
78
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal 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
|
||||
|
||||
<!-- 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. -->
|
||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user