Files
rust-xmpp/docs/GITHUB-ACTIONS.md
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

4.7 KiB
Raw Permalink Blame History

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/