Skip to content

Commit

Permalink
Refactor LTP release procedure documentation
Browse files Browse the repository at this point in the history
The LTP release procedure documentation has been rewritten using the RST
format and some typo errors have been fixed.
  • Loading branch information
acerv committed Mar 19, 2024
1 parent 54b189e commit b1bf886
Showing 1 changed file with 169 additions and 0 deletions.
169 changes: 169 additions & 0 deletions doc_new/maintainers/ltp_release_procedure.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,172 @@
Release process
===============

Preparations
------------

The release procedure generally takes a few weeks. In the first week or two,
patches that should go into the release are reviewed and possibly merged. These
patches are either fixes or patches pointed out by the community.

Patch review, when finished, is followed by a git freeze, which is a period
where only fixes are pushed to the git. During that period community is
expected to run a LTP pre-release tests, reports problems, and/or send fixes to
the mailing list. In this period we are especially making sure that there are
no regressions in the test results on a wide range of distributions and
architectures.

Once the stabilization period has ended the time has finally come to proceed
with the release.

Prepare the release notes
-------------------------

Part of the preparation is also to write the release notes, which are then
added to the GitHub release and also sent as announcement to various mailing
lists (see below).

Have a look at `this release letter <https://lore.kernel.org/ltp/ZGNiQ1sMGvPU_ETp@yuki/>`_
to get the idea how it should look.

Tag the git and push changes to github
--------------------------------------

.. code-block:: bash
cd ltp
echo YYYYMMDD > VERSION
git commit -S -s -m 'LTP YYYYMMDD' VERSION
git tag -s -a YYYYMMDD -m 'LTP YYYYMMDD'
git push origin master:master
git push origin YYYYMMDD
The string ``YYYYMMDD`` should be substituted to the current date.

You can use `tools/tag-release.sh <https://github.com/linux-test-project/ltp/blob/master/tools/tag-release.sh>`_
script to have the above automated process.
It allows you to verify the tag before pushing it and does other checks.

.. code-block:: bash
$ ./tools/tag-release.sh
===== git push =====
new tag: 'YYYYMMDD', previous tag: '20230127'
tag YYYYMMDD
Tagger: Person-who-released LTP <[email protected]>
Date: ...
LTP YYYYMMDD
-----BEGIN PGP SIGNATURE-----
...
-----END PGP SIGNATURE-----
commit 3ebc2dfa85c2445bb68d8c0d66e33c4da1e1b3a7
gpg: using RSA key ...
...
Primary key fingerprint: ...
Author: Person-who-released LTP <[email protected]>
Date: ...
LTP YYYYMMDD
Signed-off-by: Person-who-released LTP <[email protected]>
diff --git a/VERSION b/VERSION
index af4c41fec..ae488c0e7 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-20230127
+YYYYMMDD
Please check tag and signature. Proceed? [N/y]: y
Pushing changes to upstream git. Proceed? [N/y]: y
...
To github.com:linux-test-project/ltp.git
* [new tag] YYYYMMDD -> YYYYMMDD
Prepare tarballs and metadata documentation
-------------------------------------------

The following procedure will show how to create the release archives and the
metadata documentation:

.. code-block:: bash
# clone already clonned git repository to new folder
cd ..
git clone ltp ltp-full-YYYYMMDD
cd ltp-full-YYYYMMDD
# update all submodules
git submodule update --init
# Generate configure script
make autotools
# Generate tarballs
cd ..
tar -cjf ltp-full-YYYYMMDD.tar.bz2 ltp-full-YYYYMMDD --exclude .git
tar -cJf ltp-full-YYYYMMDD.tar.xz ltp-full-YYYYMMDD --exclude .git
# Generate checksums
md5 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.md5
sha1 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha1
sha256sum ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha256
# Generate metadata documentation
./configure --with-metadata-generator=asciidoctor
make -C metadata
cp -v docparse/metadata.html ../metadata.YYYYMMDD.html
You can use `tools/create-tarballs-metadata.sh <https://github.com/linux-test-project/ltp/blob/master/tools/create-tarballs-metadata.sh>`_
script to have the above procedure automated. All generated files are placed
in the ``ltp-release-YYYYMMDD`` directory.

.. code-block:: bash
$ ./tools/create-tarballs-metadata.sh
===== git clone =====
Cloning into 'ltp-full-YYYYMMDD'...
done.
===== Update submodules =====
Submodule 'tools/kirk' (https://github.com/linux-test-project/kirk.git) registered for path 'tools/kirk'
...
===== Generate configure script =====
sed -n '1{s:LTP-:m4_define([LTP_VERSION],[:;s:$:]):;p;q}' VERSION > m4/ltp-version.m4
aclocal -I m4
...
===== Generate tarballs =====
===== Generate checksums =====
===== Generate metadata documentation =====
checking for a BSD-compatible install... /usr/bin/install -c
...
'docparse/metadata.html' -> '/home/foo/ltp-release-YYYYMMDD/metadata.YYYYMMDD.html'
Generated files are in '/home/foo/ltp-release-YYYYMMDD', upload them to github
Upload the generated files to GitHub
------------------------------------

Click on `Releases <https://github.com/linux-test-project/ltp/releases>`_, then
switch to `Tags <https://github.com/linux-test-project/ltp/tags>`_. Click on
'Add release notes'. There should be 'Attach binaries ...' link at the
bottom of the page.

Don't forget to upload checksums for the tarballs and metadata documentation
as well.

Send release announcement
-------------------------

The announcement is sent to:

* ltp at lists.linux.it
* linux-kernel at vger.kernel.org
* libc-alpha at sourceware.org

CCed to:

* lwn at lwn.net
* akpm at linux-foundation.org
* torvalds at linux-foundation.org

0 comments on commit b1bf886

Please sign in to comment.