mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
HowToReleaseLLVM: Update document to match the current release process
Change Summary: * Clarify that release manager can commit without code owner approval (but are still highly encouraged to get approval). * Clarify that there is no official release criteria. * Document what types of changes are allowed in each release phase. This is update is based on the RFC submitted here: http://lists.llvm.org/pipermail/llvm-dev/2020-May/141730.html Reviewed By: hans Differential Revision: https://reviews.llvm.org/D93493
This commit is contained in:
parent
f1a54f61f5
commit
782aaa377e
@ -50,9 +50,16 @@ The release process is roughly as follows:
|
||||
|
||||
* Finally, release!
|
||||
|
||||
The release process will be accelerated for dot releases. If the first round
|
||||
of testing finds no critical bugs and no regressions since the last major release,
|
||||
then additional rounds of testing will not be required.
|
||||
* Announce bug fix release schedule to the LLVM community and update the website.
|
||||
|
||||
* Tag bug fix -rc1 after 4 weeks have passed.
|
||||
|
||||
* Tag bug fix -rc2 4 weeks after -rc1.
|
||||
|
||||
* Tag additional -rc candidates, if needed, to fix critical issues in
|
||||
previous -rc releases.
|
||||
|
||||
* Tag final release.
|
||||
|
||||
Release Process
|
||||
===============
|
||||
@ -119,7 +126,7 @@ Tag release candidates:
|
||||
|
||||
$ git tag -a llvmorg-X.Y.Z-rcN
|
||||
|
||||
The Release Manager may supply pre-packaged source tarballs for users. This can
|
||||
The Release Manager must supply pre-packaged source tarballs for users. This can
|
||||
be done with the export.sh script in utils/release.
|
||||
|
||||
Tarballs, release binaries, or any other release artifacts must be uploaded to
|
||||
@ -153,23 +160,16 @@ The minimum required version of the tools you'll need are :doc:`here <GettingSta
|
||||
Release Qualification Criteria
|
||||
------------------------------
|
||||
|
||||
A release is qualified when it has no regressions from the previous release (or
|
||||
baseline). Regressions are related to correctness first and performance second.
|
||||
(We may tolerate some minor performance regressions if they are deemed
|
||||
necessary for the general quality of the compiler.)
|
||||
There are no official release qualification criteria. It is up to the
|
||||
the release manager to determine when a release is ready. The release manager
|
||||
should pay attention to the results of community testing, the number of outstanding
|
||||
bugs, and then number of regressions when determining whether or not to make a
|
||||
release.
|
||||
|
||||
More specifically, Clang/LLVM is qualified when it has a clean test with all
|
||||
supported sub-projects included (``make check-all``), per target, and it has no
|
||||
regressions with the ``test-suite`` in relation to the previous release.
|
||||
|
||||
Regressions are new failures in the set of tests that are used to qualify
|
||||
each product and only include things on the list. Every release will have
|
||||
some bugs in it. It is the reality of developing a complex piece of
|
||||
software. We need a very concrete and definitive release criteria that
|
||||
ensures we have monotonically improving quality on some metric. The metric we
|
||||
use is described below. This doesn't mean that we don't care about other
|
||||
criteria, but these are the criteria which we found to be most important and
|
||||
which must be satisfied before a release can go out.
|
||||
The community values time based releases, so releases should not be delayed for
|
||||
too long unless there are critical issues remaining. In most cases, the only
|
||||
kind of bugs that are critical enough to block a release would be a major regression
|
||||
from a previous release.
|
||||
|
||||
Official Testing
|
||||
----------------
|
||||
@ -288,17 +288,26 @@ Below are the rules regarding patching the release branch:
|
||||
manager, the official release testers or the code owners with approval from
|
||||
the release manager.
|
||||
|
||||
#. During the first round of testing, patches that fix regressions or that are
|
||||
small and relatively risk free (verified by the appropriate code owner) are
|
||||
applied to the branch. Code owners are asked to be very conservative in
|
||||
approving patches for the branch. We reserve the right to reject any patch
|
||||
that does not fix a regression as previously defined.
|
||||
#. Release managers are encouraged, but not required, to get approval from code
|
||||
owners before approving patches. If there is no code owner or the code owner
|
||||
is unreachable then release managers can ask approval from patch reviewers or
|
||||
other developers active in that area.
|
||||
|
||||
#. During the remaining rounds of testing, only patches that fix critical
|
||||
regressions may be applied.
|
||||
#. *Before RC1* Patches should be limited to bug fixes, important optimization
|
||||
improvements, or completion of features that were started before the branch
|
||||
was created. As with all phases, release managers and code owners can reject
|
||||
patches that are deemed too invasive.
|
||||
|
||||
#. *Before RC2* Patches should be limited to bug fixes or backend specific
|
||||
improvements that are determined to be very safe.
|
||||
|
||||
#. *Before RC3/Final Major Release* Patches should be limited to critical
|
||||
bugs or regressions.
|
||||
|
||||
#. *Bug fix releases* Patches should be limited to bug fixes or very safe
|
||||
and critical performance improvements. Patches must maintain both API and
|
||||
ABI compatibility with the previous major release.
|
||||
|
||||
#. For dot releases all patches must maintain both API and ABI compatibility with
|
||||
the previous major release. Only bug-fixes will be accepted.
|
||||
|
||||
Merging Patches
|
||||
^^^^^^^^^^^^^^^
|
||||
|
Loading…
Reference in New Issue
Block a user