[llvm][docs] Release process improvements (#175759)

Some improvements from working through this getting LLVM 22 off the
ground. Most of the changes are pretty straightforward, but one worth
mentioning is the change to push the trunk version bump and tag before
creating the release branch.

This avoids a scenario that was hit for 22 where the release/22.x branch
was pushed first and more commits landed in trunk before the 23.0.0git
version bump was rebased and committed. The commits landed on trunk
during this brief window had the wrong version. This was resolved by
cherry-picking the commits to the release branch.

It's not entirely clear how big of an issue this really is, but if we
can avoid it and make the process less stressful in the process I think
it makes sense to do so.
This commit is contained in:
Cullen Rhodes 2026-01-14 15:31:55 +00:00 committed by GitHub
parent 1899a01f01
commit e2d069cf2a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -106,32 +106,48 @@ Create Release Branch and Update LLVM Version
Branch the Git trunk using the following procedure:
#. Remind developers that the release branching is imminent and to refrain from
committing patches that might break the build, e.g., new features, large
patches for works in progress, an overhaul of the type system, an exciting
new TableGen feature, etc.
#. Verify the current git trunk is in decent shape by examining the status
checks on the `most recent commits <https://github.com/llvm/llvm-project/commits/main>`_
#. Verify that the current git trunk is in decent shape by
examining nightly tester and buildbot results.
#. Bump the version in trunk to ``N.0.0git`` and clear the release notes: ::
#. Bump the version in trunk to ``N.0.0git`` with the script in
``llvm/utils/release/bump-version.py``, and tag the commit with ``llvmorg-N-init``.
If ``X`` is the version to be released, then ``N`` is ``X + 1``. ::
$ llvm/utils/release/bump-version.py --git N.0.0
$ llvm/utils/release/clear-release-notes.py
$ git commit -am "Bump version to N.0.0git"
$ git push origin main
$ git tag -sa llvmorg-N-init
If the push fails, rebase if necessary and try again.
#. Clear the release notes in trunk with the script in
``llvm/utils/release/clear-release-notes.py``.
#. Tag the commit bumping the version on trunk with ``llvmorg-N-init``. If
``X`` is the version to be released, then ``N`` is ``X + 1``. ::
#. Create the release branch from the last known good revision from before the
version bump. The branch's name is ``release/X.x`` where ``X`` is the major version
number and ``x`` is just the letter ``x``.
$ GPG_TTY=$(tty) git tag -sa llvmorg-N-init -m "llvmorg-N-init"
$ git push origin llvmorg-N-init
#. On the newly-created release branch, immediately bump the version
to ``X.1.0git`` (where ``X`` is the major version of the branch.)
#. Create the release branch from the last known good revision before the
version bump. The branch name is ``release/X.x`` where ``X`` is the major
version number and ``x`` is just the letter ``x``. Assuming the revision
before the version bump is ok, this would be: ::
#. All tags and branches need to be created in both the ``llvm/llvm-project`` and
``llvm/llvm-test-suite`` repos.
$ git checkout -b release/X.x llvmorg-N-init^
#. On the newly-created release branch, immediately bump the version to
``X.1.0git`` (where ``X`` is the major version number): ::
$ llvm/utils/release/bump-version.py --git X.1.0
$ git commit -am "Bump version to X.1.0git"
#. Push release branch: ::
$ git push -u origin release/X.x
#. And finally, create the release branch in ``llvm-test-suite`` repo: ::
$ cd <llvm-test-suite>
$ git checkout main
$ git pull
$ git checkout -b release/X.x
$ git push -u origin release/X.x
Tagging the LLVM Release Candidates
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^