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