Skip to content
Apothem
Управление

Политика инженерии выпусков

Пять канонических политик для версионирования, тегирования выпусков, циклов устаревания, несовместимых изменений и процедур отката.

Пять политик определяют, как выпускается apothem.

1. Семантическое версионирование

Проект поставляется в соответствии с семантическим версионированием 2.0. Номера версий имеют вид MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD].

ПовышениеТриггеры
MAJORНесовместимые изменения схем артефактов, идентификаторов мандатов (CM-N / TM-N / CP-N) или контрактов хуков
MINORНовые правила, делегированные исполнители, команды, навыки, события хуков или несовместимости-не-вносящие расширения схем
PATCHУточнения, добавления антипаттернов, исправления документации и правки, не меняющие поведение

Теги кандидатов используют формат vX.Y.Z-rc.N (кандидат на выпуск) или vX.Y.Z-alpha.N / vX.Y.Z-beta.N (ранний доступ).

2. Теги выпусков

Каждый выпуск размещает в main подписанный git-тег вида vMAJOR.MINOR.PATCH. Тег запускает .github/workflows/release.yml, который собирает, подписывает, генерирует SBOM и происхождение SLSA-3, и публикует страницу GitHub Release.

Соглашения по тегам:

  • Формат — ровно vMAJOR.MINOR.PATCH. Без префикса release-, без суффикса -final.
  • Аннотация — каждый тег является аннотированным тегом (git tag -a -s), несущим сводку примечаний к выпуску в сообщении тега.
  • Подпись — каждый тег подписан GPG. Рабочий процесс выпуска дополнительно создаёт бесключевую подпись Sigstore cosign для каждого артефакта и доказательство происхождения выпуска SLSA-3, оба прикрепляются к странице GitHub Release.

3. Политика устаревания

Текущая линия публичной поддержки — последняя выпущенная минорная версия. Когда у проекта несколько публичных минорных версий, матрица поддерживаемых версий в SECURITY.md является источником истины для любых дополнительных окон поддержки только критических исправлений.

Ритм устаревания:

  • Объявление — устаревший символ или поведение объявляется в разделе ### Deprecated файла CHANGELOG.md того выпуска, в котором появляется устаревание. Примечания к выпуску отражают объявление об устаревании.
  • Окно отсрочки — устаревшие символы остаются доступными в течение как минимум одного полного минорного цикла до удаления.
  • Удаление — удаление происходит при повышении MAJOR. Каждый удалённый символ несёт строку ### Removed в CHANGELOG.md и запись в руководстве по миграции под Практическими руководствами.

4. Политика несовместимых изменений

Несовместимые изменения требуют:

  1. Тикета RFC — открытого с меткой тикета rfcs, описывающего несовместимое изменение, путь миграции и стратегию отката.
  2. 30-дневного окна для комментариев — RFC остаётся открытым не менее 30 дней до слияния. Сопровождающие могут продлить окно, когда это оправдано обратной связью.
  3. Повышения MAJOR — выпуск, вносящий несовместимое изменение, повышает компонент MAJOR.
  4. Руководства по миграции — изменение поставляется с записью Практических руководств, которая проводит оператора через миграцию.

5. Политика отката

Если выпуск демонстрирует регрессию, блокирующую внедрение:

  1. Откат — проблемные коммиты откатываются в main.
  2. Повторное тегирование выпуск-плюс-один — последующий выпуск выходит как vMAJOR.MINOR.PATCH+1, неся откат плюс любые инкрементальные исправления. Предыдущий дефектный выпуск не удаляется из GitHub Releases — аннотация ### Yanked в CHANGELOG.md документирует ситуацию, чтобы воспроизводимые сборки оставались привязанными.
  3. Коммуникация — откат сопровождается уведомлением security-advisories (когда это относится к безопасности) или публикацией в Discussions (когда это относится к надёжности).

См. также

  • CHANGELOG.md — канонический реестр выпусков.
  • SECURITY.md — матрица поддерживаемых версий и каналы сообщений.
  • cicd-pipeline.md — классы CI-проверок, которые контролируют каждый выпуск.
  • deployment-checklist.md — проверка готовности к производству для каждого выпуска.

On this page