Spec-Zone.ru › Wagtail 3

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

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

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

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

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

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

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

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

Релиз с новыми функциями может устаревать определённые функции предыдущих релизов. Если функция устарела в релизе A.B, она будет продолжать работать в следующей версии, но будет выводить предупреждения. Функции, устаревшие в релизе A.B, будут удалены в релизе A.B+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/v3.0.3/contributing/release_process.html

Spec-Zone.ru

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