2. Процесс выпуска релиза

Новые релизы FreeBSD выпускаются из ветки -STABLE с интервалом примерно в четыре месяца. Процесс выпуска релизов FreeBSD начинается за 45 дней до предполагаемой даты релиза с того, что ответственный за релиз посылает сообщение по электронной почте в адрес списков рассылки для разработчиков, чтобы напомнить последним о наличии всего лишь 15 дней на внесение новых изменений до момента заморозки кода. В этот период многие разработчики выполняют действия, известные как <<MFC-переносы>>. MFC означает <<Merge From CURRENT>> (перенос из CURRENT) и описывает процесс переноса протестированных изменений из нашего дерева разработки -CURRENT в наше дерево -STABLE.

2.1. Просмотр кода

За тридцать дней до предполагаемого релиза хранилище исходных текстов переводится в режим <<стабилизации кода>>. В этот период все изменения в дереве -STABLE должны подтверждаться Группа Выпуска Релизов FreeBSD . В первый 15-дневный период разрешены следующие типы изменений:

  • Исправления ошибок.

  • Обновление документации.

  • Исправления любого характера, касающиеся безопасности.

  • Незначительные исправления в драйверах устройств, такие, как, например, добавление новых ID устройств.

  • Любые другие изменения, которые одобряет группа подготовки релиза, с учётом потенциального риска.

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

2.2. Контрольный список для проверки окончательного релиза

После того, как для широкого тестирования было выпущено несколько предварительных релизов и все основные проблемы были решены, может начаться процесс <<шлифовки>> окончательного релиза.

2.2.1. Создание ветки релиза

Как сказано во вводной части, ветка RELENG_X_Y является сравнительно новым добавлением в нашей методологии подготовки релизов. Первым шагом в создании этой ветки является проверка того, что вы работаете с самой последней версией исходных текстов RELENG_X, из которой вы хотите создать новую ветку.

/usr/src# cvs update -rRELENG_4 -P -d

Следующим шагом является создание тэга точки ответвления, чтобы диффы облегчили работу с началом ветки в CVS:

/usr/src# cvs rtag -rRELENG_4 RELENG_4_8_BP src

После этого создаётся тэг новой ветки по команде:

/usr/src# cvs rtag -b -rRELENG_4_8_BP RELENG_4_8 src

Примечание:

Использование тэгов RELENG_* разрешено только менеджерам CVS и участникам группы по выпуску релизов.

Ветви разработки FreeBSD
Ветка FreeBSD 3.x STABLE
Ветка FreeBSD 4.x STABLE
Ветка FreeBSD 5.x STABLE
Ветка FreeBSD 6.x STABLE
Ветка FreeBSD 7.x STABLE
Ветка FreeBSD 8.x STABLE
Ветка FreeBSD 9.x STABLE

2.2.2. Увеличение номера версии

Перед тем, как окончательный релиз будет помечен, построен и выпущен, необходимо модифицировать следующие файлы, отразив в них корректную версию FreeBSD:

  • doc/ru_RU.KOI8-R/books/handbook/mirrors/chapter.xml

  • doc/en_US.ISO8859-1/books/porters-handbook/book.xml

  • doc/share/xml/freebsd.ent

  • src/Makefile.inc1

  • src/UPDATING

  • src/gnu/usr.bin/groff/tmac/mdoc.local

  • src/release/Makefile

  • src/release/doc/en_US.ISO8859-1/share/xml/release.dsl

  • src/release/doc/share/examples/Makefile.relnotesng

  • src/release/doc/share/xml/release.ent

  • src/share/examples/cvsup/standard-supfile

  • src/sys/conf/newvers.sh

  • src/sys/sys/param.h

  • src/usr.sbin/pkg_install/add/main.c

  • www/en/docs/man.xml

  • www/en/cgi/ports.cgi

  • ports/Tools/scripts/release/config

Новый релиз должен быть также отражён в файлах замечаний к релизу и информации о замеченных ошибках (в ветке релиза), а файлы соответствующим образом обрезаны (в ветке stable/current):

  • src/release/doc/en_US.ISO8859-1/relnotes/common/new.xml

  • src/release/doc/en_US.ISO8859-1/errata/article.xml

Утилита sysinstall должна быть обновлена и указывать количество доступных портов и объём дискового пространства, требуемого для Коллекции Портов[4]. На данный момент эта информация хранится в файле src/usr.sbin/sysinstall/dist.c.

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

  • doc/share/images/articles/releng/branches-relengX.pic

  • www/share/xml/advisories.xml

  • www/share/xml/includes.release.xml

  • www/share/xml/includes.release.xsl

  • www/en/releases/*

  • www/en/releng/index.xml

  • www/en/news/news.xml

  • www/en/search/web.atoz

  • src/share/misc/bsd-family-tree

2.2.3. Подготовка новой старшей релиз ветки (RELENG_X)

Когда новая старшая релиз ветка, такая как RELENG_6 ответвляется из HEAD, некоторые дополнительные файлы должны быть обновлены перед тем, как релизы будут созданы из этой новой ветки.

  • src/share/examples/cvsup/stable-supfile - когда применимо, должен быть обновлен, чтобы указывать на новую -STABLE ветку.

2.2.4. Создание тэгов релиза

При готовности окончательного релиза следующая команда создаст тэг RELENG_4_8_0_RELEASE.

/usr/src# cvs rtag -rRELENG_4_8 RELENG_4_8_0_RELEASE src

Менеджеры документации и портов отвечают за внесение тэга в соответствующие ветки с тэгом RELEASE_4_8_0.

Иногда в последний момент, уже после создания последних тэгов может потребоваться внесение исправлений. На практике это не является проблемой, так как CVS позволяет выполнять манипуляции с тэгами по команде cvs tag -d tagname filename. Очень важно, чтобы все последние изменения были помечены соответствующим тэгом, как часть релиза. Релизы FreeBSD должны быть всегда повторяемыми. Локальные изменения в параметры окружения выпускающего релиз недопустимы.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.