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 './tools/tag-release.sh' script to have the above automated. 47 It allows you to verify the tag before pushing it and does other checks. 48 49[source,sh] 50-------------------------------------------------------------------- 51$ ./tools/tag-release.sh 52===== git push ===== 53new tag: 'YYYYMMDD', previous tag: '20230127' 54tag YYYYMMDD 55Tagger: Person-who-released LTP <foo@example.com> 56Date: ... 57 58LTP YYYYMMDD 59-----BEGIN PGP SIGNATURE----- 60... 61-----END PGP SIGNATURE----- 62 63commit 3ebc2dfa85c2445bb68d8c0d66e33c4da1e1b3a7 64gpg: using RSA key ... 65... 66Primary key fingerprint: ... 67Author: Person-who-released LTP <foo@example.com> 68Date: ... 69 70 LTP YYYYMMDD 71 72 Signed-off-by: Person-who-released LTP <foo@example.com> 73 74diff --git a/VERSION b/VERSION 75index af4c41fec..ae488c0e7 100644 76--- a/VERSION 77+++ b/VERSION 78@@ -1 +1 @@ 79-20230127 80+YYYYMMDD 81 82Please check tag and signature. Proceed? [N/y]: y 83Pushing changes to upstream git. Proceed? [N/y]: y 84... 85To github.com:linux-test-project/ltp.git 86 * [new tag] YYYYMMDD -> YYYYMMDD 87-------------------------------------------------------------------- 88 894. Prepare tarballs and metadata documentation 90---------------------------------------------- 91 92[source,sh] 93-------------------------------------------------------------------- 94# clone already clonned git repository to new folder 95cd .. 96git clone ltp ltp-full-YYYYMMDD 97cd ltp-full-YYYYMMDD 98 99# update all submodules 100git submodule update --init 101 102# Generate configure script 103make autotools 104 105# Generate tarballs 106cd .. 107tar -cjf ltp-full-YYYYMMDD.tar.bz2 ltp-full-YYYYMMDD --exclude .git 108tar -cJf ltp-full-YYYYMMDD.tar.xz ltp-full-YYYYMMDD --exclude .git 109 110# Generate checksums 111md5 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.md5 112sha1 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha1 113sha256sum ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha256 114 115# Generate metadata documentation 116./configure --with-metadata-generator=asciidoctor 117make -C metadata 118cp -v docparse/metadata.html ../metadata.YYYYMMDD.html 119-------------------------------------------------------------------- 120 121NOTE: You can use './tools/create-tarballs-metadata.sh' script to have the 122 above automated. All generated files are placed in ltp-release-YYYYMMDD 123 directory. 124 125[source,sh] 126-------------------------------------------------------------------- 127$ ./tools/create-tarballs-metadata.sh 128===== git clone ===== 129Cloning into 'ltp-full-YYYYMMDD'... 130done. 131===== Update submodules ===== 132Submodule 'tools/kirk' (https://github.com/linux-test-project/kirk.git) registered for path 'tools/kirk' 133... 134===== Generate configure script ===== 135sed -n '1{s:LTP-:m4_define([LTP_VERSION],[:;s:$:]):;p;q}' VERSION > m4/ltp-version.m4 136aclocal -I m4 137... 138===== Generate tarballs ===== 139===== Generate checksums ===== 140===== Generate metadata documentation ===== 141checking for a BSD-compatible install... /usr/bin/install -c 142... 143'docparse/metadata.html' -> '/home/foo/ltp-release-YYYYMMDD/metadata.YYYYMMDD.html' 144Generated files are in '/home/foo/ltp-release-YYYYMMDD', upload them to github 145-------------------------------------------------------------------- 146 1475. Upload the generated files to GitHub 148--------------------------------------- 149 150Click on https://github.com/linux-test-project/ltp/releases['Releases'] then 151switch to https://github.com/linux-test-project/ltp/tags['Tags'], then click on 152'Add release notes'. There should be 'Attach binaries ...' link at the 153bottom of the page. 154 155Don't forget to upload checksums for the tarballs and metadata documentation as well. 156 1575. Send release announcement 158---------------------------- 159 160The announcement is sent to: 161 162* ltp at lists.linux.it 163* linux-kernel at vger.kernel.org 164* libc-alpha at sourceware.org 165 166CCed to: 167 168* lwn at lwn.net 169* akpm at linux-foundation.org 170* torvalds at linux-foundation.org 171