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