2. Processos de Release (Versão)

Novas versões do FreeBSD são liberadas a partir da branch -STABLE em intervalos de aproximadamente quatro meses. O processo de release do FreeBSD começa a se desenhar cerca de 70-80 dias antes da data de lançamento prevista, quando o engenheiro de versão envia um email para as listas de discussão de desenvolvimento para lembrar aos desenvolvedores que eles só têm 15 dias para integrar novas alterações antes do congelamento de código. Durante esse tempo, muitos desenvolvedores executam o que ficou conhecido como MFC sweeps.

MFC significa Merge From CURRENT e descreve o processo de fusão de uma alteração testada de nossa branch de desenvolvimento -CURRENT com a nossa branch -STABLE. A política do projeto requer que qualquer mudança seja aplicada pela primeira vez ao trunk, e aplicada às branches -STABLE após testes externos suficientes serem feitos pelos usuários no -CURRENT (espera-se que os desenvolvedores testem extensivamente a mudança antes de enviarem a mesma para o -CURRENT, mas é impossível para uma pessoa exercer todos os usos de um sistema operacional de propósito geral). O período mínimo de MFC é de 3 dias, que normalmente é usado apenas para correções de bugs triviais ou críticas.

2.1. Revisão de código

Sessenta dias antes do lançamento previsto, o repositório de código entra um congelamento de código. Durante esse tempo, todos os commits para a branch -STABLE devem ser aprovados pela equipe de engenharia de release (versão) . O processo de aprovação é tecnicamente aplicado por um "pre-commit hook". Os tipos de alterações permitidos durante esse período incluem:

  • Correções de bugs.

  • Atualizações de documentação.

  • Correções relacionadas à segurança de qualquer tipo.

  • Pequenas alterações nos drivers de dispositivos, como a adição de novos IDs de dispositivos.

  • Atualizações de driver dos fornecedores.

  • Qualquer mudança adicional que a equipe de engenharia de release julgue justificada, dado o risco potencial.

Logo após o início do congelamento de código, uma imagem BETA1 é criada e liberada para testes generalizados. Durante o congelamento de código, pelo menos uma imagem beta ou um candidato a versão é lançado a cada duas semanas até que a versão final esteja pronta. Durante os dias que antecedem a versão final, a equipe de engenharia de release está em constante comunicação com a equipe de segurança, os mantenedores de documentação e os mantenedores de ports para garantir que todos os diferentes componentes necessários para uma versão bem-sucedida estejam disponíveis.

Após a qualidade das imagens BETA ser satisfatória o suficiente, e nenhuma mudança grande e potencialmente arriscada estar planejada, a branch release é criada e as imagens Release Candidate (RC) são construídas a partir da branch release, ao invés das Imagens BETA serem construidas da branch STABLE. Além disso, o congelamento na branch STABLE é suspenso e a branch de release entra em um congelamento de código rígido, onde fica muito mais difícil justificar novas alterações no sistema, a menos que envolva uma correção séria de bug ou um problema de segurança.

2.2. Checklist Final para uma Release

Quando várias imagens BETA já tiverem sido disponibilizadas para testes generalizados e todos os principais problemas tiverem sido resolvidos, o polimento da versão final pode começar.

2.2.1. Criação da Branch (Ramificação) da Release (Versão)

Nota:

Em todos os exemplos abaixo, $FSVN refere-se ao local do repositório Subversion do FreeBSD, svn+ssh://svn.FreeBSD.org/base/.

O layout das branchs do FreeBSD no Subversion é descrito no Guia do Commiter. O primeiro passo na criação de uma branch é identificar a revisão do código fonte do stable/X, a partir do qual você deseja criar a nova branch.

# svn log -v $FSVN/stable/9

O próximo passo é criar a branch da release

# svn cp $FSVN/stable/9@REVISION $FSVN/releng/9.2

Esta branch pode ser obtida com:

# svn co $FSVN/releng/9.2 src

Nota:

A criação das tags da branch releng e de release é feita pela Equipe de Engenharia de Release.

Branch de Desenvolvimento do FreeBSD
Branch FreeBSD 3.x STABLE
Branch FreeBSD 4.x STABLE
Branch FreeBSD 5.x STABLE
Branch FreeBSD 6.x STABLE
Branch FreeBSD 7.x STABLE
Branch FreeBSD 8.x STABLE
Branch FreeBSD 9.x STABLE

2.2.2. Incrementando o número da versão

Antes que a versão final possa ser marcada, construída e lançada, os seguintes arquivos precisam ser modificados para refletir a versão correta do FreeBSD:

  • doc/en_US.ISO8859-1/books/handbook/mirrors/chapter.xml

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

  • doc/en_US.ISO8859-1/htdocs/cgi/ports.cgi

  • ports/Tools/scripts/release/config

  • 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/sys/conf/newvers.sh

  • src/sys/sys/param.h

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

  • doc/en_US.ISO8859-1/htdocs/search/opensearch/man.xml

As notas de versão e os arquivos de errata também precisam ser ajustados para a nova versão (na branch (ramificação) da release) e truncados apropriadamente (na branch stable/current):

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

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

O Sysinstall deve ser atualizado para exibir o número de ports disponíveis e a quantidade de espaço em disco necessária para a Coleção de Ports. [5] Esta informação é atualmente mantida em src/usr.sbin/bsdinstall/dist.c.

Após a release ter sido construida, vários arquivos devem ser atualizados para anunciar a versão para o mundo. Esses arquivos são relativos a head/ dentro da árvore doc/ do subversion.

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

  • head/share/xml/release.ent

  • en_US.ISO8859-1/htdocs/releases/*

  • en_US.ISO8859-1/htdocs/releng/index.xml

  • share/xml/news.xml

Além disso, atualize o arquivo da Árvore Genealógica do BSD:

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

2.2.3. Criando a Tag de Release

Quando a versão final estiver pronta, o seguinte comando criará a tag release/9.2.0.

# svn cp $FSVN/releng/9.2 $FSVN/release/9.2.0

Os gerentes de Documentação e do Ports são responsáveis por marcar suas respectivas árvores com a tag tags/RELEASE_9_2_0.



[5] Coleção de Ports do FreeBSD https://www.FreeBSD.org/port

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.