Spec-Zone.ru › Wagtail

Процесс выпуска Wagtail

Официальные выпуски

Нумерация версий работает следующим образом:

  • Версии нумеруются в формате A.B или A.B.C.
  • A.B — это номер версии релиза функций. Каждая версия будет в основном совместима с предыдущим релизом. Исключение из этого правила будет указано в примечаниях к релизу.
  • C — это номер версии исправительного релиза, который увеличивается для исправлений ошибок и обновлений безопасности. Эти релизы будут на 100% совместимы с предыдущим исправительным релизом. Исключением является случай, когда ошибку безопасности или потерю данных невозможно исправить без нарушения обратной совместимости. Если это произойдёт, примечания к релизу предоставят подробные инструкции по обновлению.
  • Перед новым релизом с новыми функциями мы создадим по крайней мере один релиз-кандидат. Эти релизы имеют формат A.BrcN, что означает кандидатский релиз Nth версии A.B.

В git каждый релиз Wagtail будет иметь тег, указывающий его номер версии. Кроме того, каждый ряд релизов имеет свою ветвь, называемую stable/A.B.x, и исправительные/безопасность релизы будут выпущены из этих веток.

Релиз с новыми функциями

Релизы с новыми функциями (A.B, A.B+1 и т. д.) происходят каждые три месяца — см. график выпуска для подробностей. Эти релизы будут содержать новые функции и улучшения существующих функций.

Исправительный релиз

Исправительные релизы (A.B.C, A.B.C+1 и т. д.) будут выпускаться по мере необходимости для исправления ошибок и/или проблем безопасности.

Эти релизы будут на 100% совместимы с соответствующим релизом с новыми функциями, если это невозможно по соображениям безопасности или для предотвращения потери данных. Поэтому ответ на вопрос «следует ли мне обновить до последнего исправительного релиза?» всегда будет «да».

Релиз с долгосрочной поддержкой

Некоторые релизы с новыми функциями будут обозначены как релизы с долгосрочной поддержкой (LTS). Эти релизы получат исправления безопасности и проблем с потерей данных в течение гарантированного периода времени, обычно в течение шести месяцев.

График выпуска

Wagtail использует свободную форму семантического векторирования. SemVer упрощает наглядное представление совместимости релизов друг с другом. Это также помогает предвидеть, когда будут удалены плагины совместимости. Это не чистая форма SemVer, поскольку каждый релиз с новыми функциями будет по-прежнему содержать несколько документированных обратных несовместимостей, где путь устаревания невозможен или не стоит затрат.

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

Релиз с новыми функциями может устаревать некоторые функции предыдущих релизов. Если функция устаревает в релизе A.B, она будет продолжать работать в следующей версии, но вызовет предупреждение. Функции, устаревшие в релизе A.B, будут удалены в релизе A.B+2, чтобы обеспечить выполнение устаревания не менее чем за 2 релиза с новыми функциями.

Например, если мы решили начать устаревание функции в Wagtail 1.4:

  • Wagtail 1.4 будет содержать обратную совместимую копию функции, которая будет вызывать RemovedInWagtail16Warning.
  • Wagtail 1.5 будет по-прежнему содержать обратную совместимую копию.
  • Wagtail 1.6 удалит функцию полностью.

Предупреждения по умолчанию не отображаются. Вы можете включить отображение этих предупреждений с помощью параметра python -Wd.

Поддерживаемые версии

В любой момент времени команда разработчиков Wagtail будет поддерживать набор релизов на разных уровнях.

  • Текущая разрабатываемая ветвь main получит новые функции и исправления ошибок, требующие нетривиальной рефакторизации.
  • Исправления, примененные к ветке main, также должны быть применены к последней ветке релиза с новыми функциями, чтобы быть выпущенными в следующем исправительном релизе этого ряда, когда они исправляют критические проблемы:

    • Проблемы безопасности.
    • Ошибки потери данных.
    • Ошибки сбоя.
    • Серьезные ошибки функциональности в новых функциях.
    • Регрессии из более ранних версий Wagtail.

    Правило большого пальца состоит в том, что исправления будут перенесены обратно в последний релиз с новыми функциями для ошибок, которые предотвратили выпуск в первую очередь (блокаторы выпуска).

  • Исправления безопасности и ошибки потери данных будут применяться к текущей ветви main, последней ветке релиза с новыми функциями и любым другим поддерживаемым веткам релизов с долгосрочной поддержкой.
  • Исправления документации, как правило, будут более свободно перенесены обратно в последнюю ветку релиза. Это связано с тем, что очень важно, чтобы документация последнего релиза была актуальной и правильной, а риск внесения регрессий является гораздо меньшим беспокойством.

В качестве конкретного примера рассмотрим момент времени, находящийся посредине между выпуском Wagtail 1.6 и 1.7. На данный момент:

  • Функции будут добавлены в main, чтобы быть выпущенными как Wagtail 1.7.
  • Критические исправления ошибок будут применены к ветке stable/1.6.x, и выпущены как 1.6.1, 1.6.2 и т. д.
  • Исправления безопасности и исправления ошибок потери данных будут применены к main и к веткам stable/1.6.x и stable/1.4.x (LTS). Они будут вызывать выпуск 1.6.1, 1.4.8 и т. д.
  • Исправления документации будут применены к main, и, если легко перенести обратно, к последней стабильной ветке, 1.6.x.

Поддерживаемые версии Django

Каждый релиз Wagtail объявляет, какие версии Django он поддерживает.

Как правило, новый релиз Wagtail с новыми функциями поддерживает последнюю версию с долгосрочной поддержкой и все последующие версии Django.

Например, рассмотрим момент времени до выпуска Wagtail 1.5 и после следующих релизов:

  • Django 1.8 (LTS)
  • Django 1.9
  • Wagtail 1.4 (LTS) — Выпущен до Django 1.10 и поддерживает Django 1.8 и 1.9
  • Django 1.10

Wagtail 1.5 будет поддерживать Django 1.8 (LTS), 1.9, 1.10. Wagtail 1.4 по-прежнему будет поддерживать только Django 1.8 (LTS) и 1.9.

График выпуска

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

После каждого выпуска с новыми функциями менеджер выпуска объявит график для следующего выпуска с новыми функциями.

Цикл выпуска

Каждый цикл выпуска состоит из трех частей:

Фаза один: предложение функций

Первая фаза процесса выпуска будет включать в себя определение основных функций, которые следует включить в следующую версию. Это должно включать в себя значительную предварительную работу над этими функциями — рабочий код лучше, чем большое проектирование.

Фаза два: разработка

Вторая часть графика выпуска — это период работы «с головой в проекте». Используя дорожную карту, созданную в конце фазы один, мы все очень усердно будем работать, чтобы завершить все запланированные задачи.

В конце фазы два все незавершенные функции будут отложены до следующего выпуска.

На этом этапе ветвь stable/A.B.x будет ответвлена от ветви main.

Фаза три: исправление ошибок

Последняя часть цикла выпуска посвящена исправлению ошибок — новые функции не будут приниматься в течение этого времени.

После того, как все известные блокирующие ошибки будут устранены, будет доступен релиз-кандидат для тестирования. Обычно окончательный выпуск следует через две недели, хотя этот период может быть продлён, если будут обнаружены новые блокирующие ошибки.

В течение этой фазы коммитеры будут всё более консервативны с обратными переносами, чтобы избежать введения регрессий. После кандидата релиза, будут перенесены только блокирующие ошибки выпуска и исправления документации.

Разработчики должны избегать добавления новых переводимых строк после кандидата релиза — это гарантирует, что у переводчиков есть весь период между кандидатом релиза и окончательным релизом, чтобы обновить переводы. Переводы будут повторно импортированы непосредственно перед окончательным выпуском.

Параллельно с этой фазой main может получать новые функции, которые будут выпущены в цикле A.B+1.

Выпуски с исправлениями ошибок

После релиза A.B с новыми функциями, предыдущий релиз переходит в режим исправления ошибок.

Ветка предыдущего релиза с новыми функциями stable/A.B-1.x будет содержать исправления ошибок. Критические ошибки, исправленные в main, должны быть также исправлены в ветке с исправлениями ошибок; это означает, что коммиты должны чётко разделять исправления ошибок от добавления функций. Разработчик, который внёс исправление в main, будет нести ответственность за его применение также и в текущей ветке с исправлениями ошибок.

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/stable/contributing/release_process.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API