Матрица совместимости
Go и Bun — требования для контрибьюторов, а не для операторов. Установка
запускает образы, опубликованные в
ghcr.io/kewldan/omniflow/*, и никогда
не нуждается в тулчейне Go или Bun на хосте.main.
Будущий релиз 1.x, меняющий поддерживаемую версию, обновляет эту строку, а
версия, прекращающая поддержку чего-то из этой таблицы, называется в
CHANGELOG.md, а не убирается молча — см. раздел
Политика устаревания.
Версионирование и артефакты релиза
Релизы следуют Semantic Versioning и собираются Release Please из Conventional Commits, который также формируетCHANGELOG.md — ничего не пишется вручную постфактум.
Каждый помеченный релиз публикует четыре мультиархитектурных
(linux/amd64, linux/arm64) образа контейнеров в GitHub Container
Registry:
X.Y, чтобы развёртывание могло следовать
минорной линии, не плавая на latest.
SBOM, происхождение сборки и подписи
К каждой сборке образа прикладываются SBOM и происхождение сборки в стиле SLSA (sbom: true и provenance: mode=max у docker/build-push-action),
после чего образ подписывается бесключевым способом через
cosign, используя собственную
OIDC-идентичность релизного workflow в GitHub Actions — ключа подписи для
хранения, ротации или утечки не существует. Подпись записывается в
публичный журнал прозрачности Rekor.
Проверьте образ перед развёртыванием:
docker buildx imagetools inspect --format '{{ json .SBOM }}' ghcr.io/kewldan/omniflow/api:vX.Y.Z
(и .Provenance для происхождения сборки).
Тестирование обновлений
Джобmigrations в CI доказывает каждый поддерживаемый путь обновления до
мержа: он применяет схему от пустой базы через каждый префикс истории
миграций до головной версии и подтверждает, что повторное применение
головной версии — это отсутствие изменений. Именно это на практике означают
«автоматические тесты обновления» — миграция, которая только компилируется,
не проверена, поэтому это выполняется на реальном PostgreSQL при каждом
изменении, а не только во время релиза.
Пошаговые процедуры обновления, отката и обновления мажорной версии
PostgreSQL живут на странице
Резервные копии, восстановление и аварийное восстановление,
а не дублируются здесь.
Политика миграций и окно поддерживаемых обновлений
- Миграции применяются только вперёд. Omniflow не поставляет обратные миграции; откат схемы — это восстановление из резервной копии, снятой непосредственно перед обновлением, как описано в разделе Откат.
- Миграция никогда не редактируется после того, как вышла в релизе.
Изменение схемы всегда выходит новой миграцией, а её контрольная сумма в
database/migrations/atlas.sumформируется командойatlas migrate hashи никогда не редактируется вручную. - Обновления применяются последовательно через выпущенные версии — окно
поддерживаемых обновлений это именно то, что джоб
migrationsв CI проверяет как базовую линию: каждый префикс истории миграций до головной версии. Не существует поддерживаемого пути, пропускающего применение миграций промежуточного релиза; сервисmigrateпри каждом запуске стека применяет всё, что ещё не выполнено, по порядку. - Повторное применение миграций всегда безопасно: Atlas помнит, что уже выполнено, и повторное применение — это отсутствие изменений.
Политика устаревания
Об устаревании объявляется до удаления, а удаление всегда оформляется записью вCHANGELOG.md — никогда молчаливым изменением поведения.
- API. Устаревшая операция или поле OpenAPI помечается
deprecated: trueвapi/openapi.yamlи продолжает работать как минимум ещё один минорный релиз перед удалением. - Переменные окружения. Устаревшая переменная продолжает работать, её
замена документируется рядом с ней как минимум один минорный релиз, а её
итоговое удаление называется в
CHANGELOG.md, а не вызывает молчаливое изменение поведения при старте. - Поведение базы данных. Изменение поведения сначала выходит аддитивно — новый столбец или таблица рядом со старыми — а не переписывает существующее поведение в том же релизе, который вводит замену. Сам переход, а не только конечная точка, — это отрецензированная миграция.
- Интеграции. Адаптер Remnawave или платёжного провайдера поддерживает
версии, действительно покрытые его контрактными тестами, опубликованные
в матрице совместимости выше. Прекращение
поддержки версии — это запись в
CHANGELOG.md, а не молчаливое изменение контрактного теста.
Связанные страницы
Развёртывание
Топология Compose, тома и образы, которые описывает эта матрица.
Резервные копии, восстановление и аварийное восстановление
Пошаговые процедуры обновления, отката и обновления мажорной версии PostgreSQL.