Index: head/en_US.ISO8859-1/articles/freebsd-releng/article.xml
===================================================================
--- head/en_US.ISO8859-1/articles/freebsd-releng/article.xml (revision 50562)
+++ head/en_US.ISO8859-1/articles/freebsd-releng/article.xml (revision 50563)
@@ -1,462 +1,472 @@
head/">
stable/">
stable/11/">
releng/">
releng/11.0/">
release/11.0.0/">
11.0">
+
]>
&os; Release EngineeringGlenBarber The
&os; Foundationgjb@FreeBSD.org
&tm-attrib.freebsd;
&tm-attrib.intel;
&tm-attrib.general;
$FreeBSD$This article describes the release engineering process of
the &os; Project.Introduction to the &os; Release Engineering
ProcessDevelopment of &os; has a very specific workflow. In
general, all changes to the &os; base system are committed to
the &branch.head; branch, which reflects the top of the source
tree.After a reasonable testing period, changes can then be
merged to the &branch.stable; branches. The default minimum
timeframe before merging to &branch.stable; branches is three
(3) days.Although a general rule to wait a minimum of three days
before merging from &branch.head;, there are a few special
circumstances where an immediate merge may be necessary, such as
a critical security fix, or a bug fix that directly inhibits the
release build process.After several months, and the number of changes in the
&branch.stable; branch have grown significantly, it is time to
release the next version of &os;. These releases have been
historically referred to as point
releases.In between releases from the &branch.stable; branches,
approximately every two (2) years, a release will be cut
directly from &branch.head;. These releases have been
historically referred to as dot-zero
releases.This article will highlight the workflow and
responsibilities of the &team.re; for both
dot-zero and point'
releases.The following sections of this article describe:General information and preparation before
starting the release cycle.
+
+
+
+ Website Changes During the Release Cycle
+
+
+
+ Terminology and general information, such as the
code slush and code
freeze, used throughout this document.The Release Engineering process for a
dot-zero release.The Release Engineering process for a
point release.Information related to the specific procedures to
build installation medium.Procedures to publish installation medium.Wrapping up the release cycle.General Information and PreparationApproximately two months before the start of the release
cycle, the &team.re; decides on a schedule for the release.
The schedule includes the various milestone points of the
release cycle, such as freeze dates, branch dates, and build
dates. For example:MilestoneAnticipated Date&branch.head; slush:May 27, 2016&branch.head; freeze:June 10, 2016&branch.head; KBI freeze:June 24, 2016doc/ tree slush [1]:June 24, 2016Ports quarterly branch [2]:July 1, 2016&branch.stablex; branch:July 8, 2016doc/ tree tag [3]:July 8, 2016BETA1 build starts:July 8, 2016&branch.head; thaw:July 9, 2016BETA2 build starts:July 15, 2016BETA3 build starts [*]:July 22, 2016&branch.relengx; branch:July 29, 2016RC1 build starts:July 29, 2016&branch.stablex; thaw:July 30, 2016RC2 build starts:August 5, 2016Final Ports package builds [4]:August 6, 2016Ports release tag:August 12, 2016RC3 build starts [*]:August 12, 2016RELEASE build starts:August 19, 2016RELEASE announcement:September 2, 2016Items marked with "[*]" are "as
needed".The doc/ tree slush is coordinated by
the &team.doceng;.The Ports quarterly branch used is determined by when
the final RC build is planned. A new
quarterly branch is created on the first day of the quarter,
so this metric should be used when taking the release cycle
milestones into account. The quarterly branch is created by
the &team.portmgr;.The doc/ tree is tagged by the
&team.doceng;.The final Ports package build is done by the
&team.portmgr; after the final (or what is expected to be
final) RC build.If the release is being created from an existing
&branch.stable; branch, the KBI
freeze date can be excluded, since the KBI
is already considered frozen on established
&branch.stable; branches.When writing the release cycle schedule, a number of things
need to be taken into consideration, in particular milestones
where the target date depends on predefined milestones upon
which there is a dependency. For example, the Ports Collection
release tag originates from the active quarterly branch at the
time of the last RC. This in part defines
which quarterly branch is used, when the release tag can happen,
and what revision of the ports tree is used for the final
RELEASE build.After general agreement on the schedule, the &team.re;
emails the schedule to the &os; Developers.It is somewhat typical that many developers will inform
the &team.re; about various works-in-progress. In some cases,
an extension for the in-progress work will be requested, and
in other cases, a request for blanket approval
to a particular subset of the tree will be made.When such requests are made, it is important to make sure
timelines (even if estimated) are discussed. For blanket
approvals, the length of time for the blanket approval should
be made clear. For example, a &os; developer may request
blanket approvals from the start of the code slush until the
start of the RC builds.In order to keep track of blanket approvals, the &team.re;
uses an internal repository to keep a running log of such
requests, which defines the area upon which a blanket approval
was granted, the author(s), when the blanket approval expires,
and the reason the approval was granted. One example of this
is granting blanket approval to release/doc/ to all &team.re;
members until the final RC to update the
release notes and other release-related documentation.The &team.re; also uses this repository to track pending
approval requests that are received just prior to starting
various builds during the release cycle, which the Release
Engineer specifies the cutoff period with an email to the &os;
developers.Depending on the underlying set of code in question, and
the overall impact the set of code has on &os; as a whole, such
requests may be approved or denied by the &team.re;.The same applies to work-in-progress extensions. For
example, in-progress work for a new device driver that is
otherwise isolated from the rest of the tree may be granted
an extension. A new scheduler, however, may not be feasible,
especially if such dramatic changes do not exist in another
branch.The schedule is also added to the Project website, in the
doc/ repository, in
head/en_US.ISO8859-1/htdocs/releases/&branch.revision;R/schedule.xml.
This file is continuously updated as the release cycle
progresses.In most cases, the schedule.xml can
be copied from a prior release and updated accordingly.In addition to adding schedule.xml to
the website, head/share/xml/navibar.ent and
head/share/xml/release.ent are also updated
to add the link to the schedule to various subpages, as well as
enabling the link to the schedule on the Project website index
page.The schedule is also linked from
head/en_US.ISO8859-1/htdocs/releng/index.xml.Approximately one month prior to the scheduled code
slush, the &team.re; sends a reminder email to the
&os; Developers.Once the first builds of the release cycle are available,
update the beta.local.where entity in
head/en_US.ISO8859-1/htdocs/releases/&branch.revision;R/schedule.xml.
replacing IGNORE with
INCLUDE.If two parallel release cycles are happening at once, the
beta2.local.where entity may be used
instead.
&release.terminology;
+ &release.website;
&release.major.version;
&release.minor.version;
&release.building;
&release.mirrors;
Wrapping up the Release CycleThis section describes general post-release tasks.Post-Release Errata NoticesAs the release cycle approaches conclusion, it is common
to have several EN (Errata Notice)
candidates to address issues that were discovered late in the
cycle. Following the release, the &team.re; and the
&team.secteam; revisit changes that were not approved prior to
the final release, and depending on the scope of the change in
question, may issue an EN.The actual process of issuing ENs is
handled by the &team.secteam;.Handoff to the &team.secteam;Roughly two weeks following the release, the Release
Engineer updates svnadmin/conf/approvers
changing the approver column from re to
(so|security-officer) for the
&branch.relengx; branch.
Index: head/en_US.ISO8859-1/articles/freebsd-releng/releng-website.xml
===================================================================
--- head/en_US.ISO8859-1/articles/freebsd-releng/releng-website.xml (nonexistent)
+++ head/en_US.ISO8859-1/articles/freebsd-releng/releng-website.xml (revision 50563)
@@ -0,0 +1,108 @@
+
+
+
+ Website Changes During the Release Cycle
+
+ This section describes the changes to the website that should
+ occur as the release cycle progresses.
+
+
+ The files specified throughout this section are relative to
+ the head/ branch of the
+ doc repository in
+ Subversion.
+
+
+
+ Website Changes Before the Release Cycle Begins
+
+ When the release cycle schedule is available, these files
+ need to be updated to enable various different functionalities
+ on the &os; Project website:
+
+
+
+
+
+ File to Edit
+ What to Change
+
+
+
+
+
+ share/xml/release.ent
+ Change beta.upcoming
+ from IGNORE to INCLUDE
+
+
+
+ share/xml/release.ent
+ Change % beta.upcoming
+ from IGNORE to INCLUDE
+
+
+
+ share/xml/release.ent
+ Change beta.testing
+ from IGNORE to INCLUDE
+
+
+
+ share/xml/release.ent
+ Change % beta.testing
+ from IGNORE to INCLUDE
+
+
+
+
+
+
+
+ Website Changes During BETA or
+ RC
+
+ When transitioning from PRERELEASE to
+ BETA, these files need to be updated to
+ enable the "Help Test" block on the download page.
+ All files are relative to head/ in the
+ doc repository:
+
+
+
+
+
+ File to Edit
+ What to Change
+
+
+
+
+
+ en_US.ISO8859-1/htdocs/releases/11.0R/schedule.xml
+ Change % beta.local.where
+ IGNORE to
+ INCLUDE
+
+
+
+ share/xml/release.ent
+ Update % betarel.vers to
+ BETA1
+
+
+
+ share/xml/news.xml
+ Add an entry announcing the
+ BETA
+
+
+
+
+
+
Property changes on: head/en_US.ISO8859-1/articles/freebsd-releng/releng-website.xml
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+FreeBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/xml
\ No newline at end of property