xref: /aosp_15_r20/external/ltp/doc/maintainers/ltp_release_procedure.rst (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
1.. SPDX-License-Identifier: GPL-2.0-or-later
2
3Release process
4===============
5
6Preparations
7------------
8
9The release procedure generally takes a few weeks. In the first week or two,
10patches that should go into the release are reviewed and possibly merged. These
11patches are either fixes or patches pointed out by the community.
12
13Patch review, when finished, is followed by a git freeze, which is a period
14where only fixes are pushed to the git. During that period community is
15expected to run a LTP pre-release tests, reports problems, and/or send fixes to
16the mailing list. In this period we are especially making sure that there are
17no regressions in the test results on a wide range of distributions and
18architectures.
19
20Once the stabilization period has ended the time has finally come to proceed
21with the release.
22
23Prepare the release notes
24-------------------------
25
26Part of the preparation is also to write the release notes, which are then
27added to the GitHub release and also sent as announcement to various mailing
28lists (see below).
29
30Have a look at `this release letter <https://lore.kernel.org/ltp/ZGNiQ1sMGvPU_ETp@yuki/>`_
31to get the idea how it should look.
32
33Tag the git and push changes to github
34--------------------------------------
35
36.. code-block:: bash
37
38    cd ltp
39    echo YYYYMMDD > VERSION
40    git commit -S -s -m 'LTP YYYYMMDD' VERSION
41    git tag -s -a YYYYMMDD -m 'LTP YYYYMMDD'
42    git push origin master:master
43    git push origin YYYYMMDD
44
45The string ``YYYYMMDD`` should be substituted to the current date.
46
47You can use :master:`tools/tag-release.sh` script to have the above automated
48process. It allows you to verify the tag before pushing it and does other
49checks.
50
51.. code-block:: bash
52
53    $ ./tools/tag-release.sh
54    ===== git push =====
55    new tag: 'YYYYMMDD', previous tag: '20230127'
56    tag YYYYMMDD
57    Tagger: Person-who-released LTP <[email protected]>
58    Date:   ...
59
60    LTP YYYYMMDD
61    -----BEGIN PGP SIGNATURE-----
62    ...
63    -----END PGP SIGNATURE-----
64
65    commit 3ebc2dfa85c2445bb68d8c0d66e33c4da1e1b3a7
66    gpg:                using RSA key ...
67    ...
68    Primary key fingerprint: ...
69    Author: Person-who-released LTP <[email protected]>
70    Date:   ...
71
72        LTP YYYYMMDD
73
74        Signed-off-by: Person-who-released LTP <[email protected]>
75
76    diff --git a/VERSION b/VERSION
77    index af4c41fec..ae488c0e7 100644
78    --- a/VERSION
79    +++ b/VERSION
80    @@ -1 +1 @@
81    -20230127
82    +YYYYMMDD
83
84    Please check tag and signature. Proceed? [N/y]: y
85    Pushing changes to upstream git. Proceed? [N/y]: y
86    ...
87    To github.com:linux-test-project/ltp.git
88     * [new tag]             YYYYMMDD -> YYYYMMDD
89
90Prepare tarballs and metadata documentation
91-------------------------------------------
92
93The following procedure will show how to create the release archives and the
94metadata documentation:
95
96.. code-block:: bash
97
98    # clone already clonned git repository to new folder
99    cd ..
100    git clone ltp ltp-full-YYYYMMDD
101    cd ltp-full-YYYYMMDD
102
103    # update all submodules
104    git submodule update --init
105
106    # Generate configure script
107    make autotools
108
109    # Generate tarballs
110    cd ..
111    tar -cjf ltp-full-YYYYMMDD.tar.bz2 ltp-full-YYYYMMDD --exclude .git
112    tar -cJf ltp-full-YYYYMMDD.tar.xz ltp-full-YYYYMMDD --exclude .git
113
114    # Generate checksums
115    md5 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.md5
116    sha1 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha1
117    sha256sum ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha256
118
119    # Generate metadata documentation
120    ./configure --with-metadata-generator=asciidoctor
121    make -C metadata
122    cp -v docparse/metadata.html ../metadata.YYYYMMDD.html
123
124You can use :master:`tools/create-tarballs-metadata.sh` script to have the above
125procedure automated. All generated files are placed in the
126``ltp-release-YYYYMMDD`` directory.
127
128.. code-block:: bash
129
130    $ ./tools/create-tarballs-metadata.sh
131    ===== git clone =====
132    Cloning into 'ltp-full-YYYYMMDD'...
133    done.
134    ===== Update submodules =====
135    Submodule 'tools/kirk' (https://github.com/linux-test-project/kirk.git) registered for path 'tools/kirk'
136    ...
137    ===== Generate configure script =====
138    sed -n '1{s:LTP-:m4_define([LTP_VERSION],[:;s:$:]):;p;q}' VERSION > m4/ltp-version.m4
139    aclocal -I m4
140    ...
141    ===== Generate tarballs =====
142    ===== Generate checksums =====
143    ===== Generate metadata documentation =====
144    checking for a BSD-compatible install... /usr/bin/install -c
145    ...
146    'docparse/metadata.html' -> '/home/foo/ltp-release-YYYYMMDD/metadata.YYYYMMDD.html'
147    Generated files are in '/home/foo/ltp-release-YYYYMMDD', upload them to github
148
149Upload the generated files to GitHub
150------------------------------------
151
152Go to :repo:`tags`. Click on ``Add release notes``.
153There should be ``Attach binaries ...`` link at the bottom of the page.
154
155Don't forget to upload checksums for the tarballs and metadata documentation
156as well.
157
158Send release announcement
159-------------------------
160
161The announcement is sent to:
162
163* ltp at lists.linux.it
164* linux-kernel at vger.kernel.org
165* libc-alpha at sourceware.org
166
167CCed to:
168
169* lwn at lwn.net
170* akpm at linux-foundation.org
171* torvalds at linux-foundation.org
172