Files
rust-xmpp/docs/GITHUB-ACTIONS.md
T
wt e9329ccbb2
Test, build and publish / All tests and Linux binary (push) Failing after 23s
Test, build and publish / Container smoke test and Gitea publish (push) Skipped
- Исправлена задержка доставки MUC с растущим архивом: после каждого
сообщения
  больше не выполняется полный scan/rewrite архива для expiry. Очистка
  остаётся
  в maintenance и перед MAM-запросами; append и crash checkpoint до
  fanout сохранены.
- Неизменённые native config/persistent index не перезаписываются при
  каждом
  сообщении. Удалённые файлы восстанавливаются, ошибки экспорта
  повторяются.
- CSI больше не сохраняет SM snapshot при отсутствии изменения durable
  очереди.
  Изменённая очередь сохраняется до отправки; при ошибке записи очередь
  откатывается.
- Личные сообщения, IQ и входящая федерация к аккаунтам больше не
  захватывают
  общий MUC mutex, ожидая несвязанную работу с комнатными архивами.
- Добавлены регрессии native exports/archive scanning/CSI rollback и
  реальный
  TLS latency check в verify-local.sh, автоматически включённый и в CI.

Измерения и границы подтверждения:
[docs/MESSAGE-LATENCY.md](docs/MESSAGE-LATENCY.md).
Результаты итогового прогона:
[docs/VALIDATION-0.8.1.md](docs/VALIDATION-0.8.1.md).

- Личные сообщения и SM ACK больше не ждут сетевую отправку push.
  Уведомления
  отправляются через очередь1024 с максимум8параллельных маршрутов;
  worker
  и его задачи отменяются при завершении serve. Ошибки очереди/маршрута
  логируются.
- Offline сообщение сохраняется до публикации push, чтобы проснувшийся
  клиент
  мог сразу получить его. Подтверждена очередь при первом TLS stream
  push gateway.
- По умолчанию CSI считает важными bodyless OMEMO legacy/2, delivery
  receipts
  и chat markers. Явный список `csi_important_payloads` заменяет
  расширенные defaults.
  Низкоприоритетный headline по-прежнему буферизуется. Policy
  обновляется и при SM resume.
- Выбор адресатов и carbons фильтрует владельцев до захвата session
  mutex;
  зависшая сессия чужого аккаунта не задерживает этот путь. Duplicate SM
  ACK
  без изменения durable counters/queue не переписывает snapshot.
- Bind2 и MAM metadata IQ читают только первый/последний native record
  вместо
  сканирования всей истории. Индекс не требуется; recovery/лимиты записи
  сохранены.
- Добавлен `message-processing-slow`: обработка message дольше250мс,
  поля
  duration_ms/route, без payload/токенов. Это время обработки сервером,
  не peer receipt.
- Новые сетевые регрессии включены в verify-local.sh/GitHub CI.

Причины, изменение CSI policy, измерения и ограничения:
[docs/PERSONAL-MESSAGE-LATENCY.md](docs/PERSONAL-MESSAGE-LATENCY.md).
2026-10-21 11:20:09 +07:00

67 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GitHub Actions → private Gitea Registry
Workflow: `.github/workflows/ci.yml`. Push, pull request и ручной запуск выполняют
проверки; публикация разрешена только для основной ветки репозитория и тегов
`v<версия Cargo.toml>`. PR, включая PR из forks, не получает registry credentials.
## Настройка GitHub
Settings → Secrets and variables → Actions:
| Тип | Имя | Значение |
|---|---|---|
| Variable | `GITEA_REGISTRY` | `gitea.example.org` или `gitea.example.org:5000`, без `https://` и пути |
| Variable | `GITEA_IMAGE` | `owner/rust-xmpp`, lowercase, без registry и тега |
| Secret | `GITEA_REGISTRY_USERNAME` | Имя пользователя Gitea с правом публикации пакетов owner |
| Secret | `GITEA_REGISTRY_TOKEN` | Personal access token с правом записи packages |
Создайте private owner/organization и проверьте права чтения пакета в Gitea:
аутентифицированный push сам по себе не меняет публичность owner/package.
Registry должен быть доступен GitHub-hosted runner по HTTPS с доверенным CA.
Для registry только в LAN потребуется runner с доступом к этой сети; настройки
runs-on для image job можно заменить на labels доверенного self-hosted runner.
Не запускайте PR-код на привилегированном self-hosted runner без изоляции.
## Проверки и результат
Job `verify` на Ubuntu24.04 ставит Rust из `rust-toolchain.toml`, Python3.12,
Lua5.4, OpenSSL/ICU и собирает оригинальную bundled Prosody cafd74b9c5ea.
MinIO собирается из unmodified upstream RELEASE.2025-04-22T22-12-26Z,
Go1.24.3, с проверкой SHA-256 исходного архива. Sandbox adapter не применяется.
`scripts/ci/verify-all.sh` запускает:
- fmt, все обычные Rust tests, Clippy и release build;
- все сетевые проверки из verify-local.sh, native module/storage и federation;
- обе нагрузки500TLS, в том числе MUC+SM SIGKILL/resume;
- оставшиеся ignored tests: AF_UNIX admin socket и archive>128MiB;
- реальные10GiB PUT/GET через MinIO и через local HTTPS backend, последовательно.
Таким образом отсутствие native reference или MinIO является ошибкой, а не skip.
Нужно не менее20GiB свободного диска перед проверками. На одноразовом hosted runner
удаляются неиспользуемые Android/.NET/GHC SDK; Go caches очищаются после сборки MinIO.
Тесты могут занимать десятки минут. Timeout verify job —90минут.
Artifact `rust-xmpp-linux-amd64`: проверенный release executable и SHA256SUMS.
Artifact `test-results`: полный лог и JSON-отчёты, также при ошибке теста.
Job `image` скачивает именно этот executable, проверяет checksum и собирает
Docker target `ci-runtime`. В образе выполняются `rust-xmpp --version` и
`prosodyctl --version`, затем извлечённый executable сравнивается побайтно с artifact.
Image smoke проходит и на PR. Только после успеха выполняются login/push.
Теги:
- `sha-<полный40символьныйcommit>` — каждый публикуемый commit;
- `latest` — только основная ветка;
- `v0.8.2` — пример version tag; он должен совпадать с Cargo.toml.
Version tag не меняет latest; prerelease также не перезаписывает latest.
Собирается Linux amd64, не multiarch. Локальный `docker build .` по-прежнему
собирает source target `runtime`; CI target использует уже проверенный binary.
Workflow добавлен и проверен локально как конфигурация. Реальный GitHub-run,
Docker daemon и push в ваш Gitea здесь не выполнялись; для этого нужны репозиторий
и перечисленные настройки. CI намеренно останавливает публикацию при любой ошибке.
Документация registry: https://docs.gitea.com/usage/packages/container/