1f08c3bdfSopenharmony_ciLTP Release Procedure
2f08c3bdfSopenharmony_ci=====================
3f08c3bdfSopenharmony_ci
4f08c3bdfSopenharmony_ci1. Release preparations
5f08c3bdfSopenharmony_ci-----------------------
6f08c3bdfSopenharmony_ci
7f08c3bdfSopenharmony_ciThe release procedure generally takes a few weeks. In the first week or two,
8f08c3bdfSopenharmony_cipatches that should go into the release are reviewed and possibly merged. These
9f08c3bdfSopenharmony_cipatches are either fixes or patches pointed out by the community.
10f08c3bdfSopenharmony_ci
11f08c3bdfSopenharmony_ciPatch review, when finished, is followed by a git freeze, which is a period
12f08c3bdfSopenharmony_ciwhere only fixes are pushed to the git. During that period community is
13f08c3bdfSopenharmony_ciexpected to run a LTP pre-release tests, reports problems, and/or send fixes to
14f08c3bdfSopenharmony_cithe mailing list. In this period we are especially making sure that there are
15f08c3bdfSopenharmony_cino regressions in the test results on a wide range of distributions and
16f08c3bdfSopenharmony_ciarchitectures.
17f08c3bdfSopenharmony_ci
18f08c3bdfSopenharmony_ciOnce the stabilization period has ended the time has finally come to proceed
19f08c3bdfSopenharmony_ciwith the release.
20f08c3bdfSopenharmony_ci
21f08c3bdfSopenharmony_ci2. Prepare the release notes
22f08c3bdfSopenharmony_ci----------------------------
23f08c3bdfSopenharmony_ci
24f08c3bdfSopenharmony_ciPart of the preparation is also to write the release notes, which are then
25f08c3bdfSopenharmony_ciadded to the GitHub release and also sent as announcement to various mailing
26f08c3bdfSopenharmony_cilists (see below).
27f08c3bdfSopenharmony_ci
28f08c3bdfSopenharmony_ciHave a look at https://lore.kernel.org/ltp/ZGNiQ1sMGvPU_ETp@yuki/ to get the
29f08c3bdfSopenharmony_ciidea how it should look.
30f08c3bdfSopenharmony_ci
31f08c3bdfSopenharmony_ci3. Tag the git and push changes to github
32f08c3bdfSopenharmony_ci-----------------------------------------
33f08c3bdfSopenharmony_ci
34f08c3bdfSopenharmony_ci[source,sh]
35f08c3bdfSopenharmony_ci--------------------------------------------------------------------
36f08c3bdfSopenharmony_cicd ltp
37f08c3bdfSopenharmony_ciecho YYYYMMDD > VERSION
38f08c3bdfSopenharmony_cigit commit -S -s -m 'LTP YYYYMMDD' VERSION
39f08c3bdfSopenharmony_cigit tag -s -a YYYYMMDD -m 'LTP YYYYMMDD'
40f08c3bdfSopenharmony_cigit push origin master:master
41f08c3bdfSopenharmony_cigit push origin YYYYMMDD
42f08c3bdfSopenharmony_ci--------------------------------------------------------------------
43f08c3bdfSopenharmony_ci
44f08c3bdfSopenharmony_ciNOTE: The string YYYYMMDD should be substituted to the current date.
45f08c3bdfSopenharmony_ci
46f08c3bdfSopenharmony_ciNOTE: You can use './tools/tag-release.sh' script to have the above automated.
47f08c3bdfSopenharmony_ci      It allows you to verify the tag before pushing it and does other checks.
48f08c3bdfSopenharmony_ci
49f08c3bdfSopenharmony_ci[source,sh]
50f08c3bdfSopenharmony_ci--------------------------------------------------------------------
51f08c3bdfSopenharmony_ci$ ./tools/tag-release.sh
52f08c3bdfSopenharmony_ci===== git push =====
53f08c3bdfSopenharmony_cinew tag: 'YYYYMMDD', previous tag: '20230127'
54f08c3bdfSopenharmony_citag YYYYMMDD
55f08c3bdfSopenharmony_ciTagger: Person-who-released LTP <foo@example.com>
56f08c3bdfSopenharmony_ciDate:   ...
57f08c3bdfSopenharmony_ci
58f08c3bdfSopenharmony_ciLTP YYYYMMDD
59f08c3bdfSopenharmony_ci-----BEGIN PGP SIGNATURE-----
60f08c3bdfSopenharmony_ci...
61f08c3bdfSopenharmony_ci-----END PGP SIGNATURE-----
62f08c3bdfSopenharmony_ci
63f08c3bdfSopenharmony_cicommit 3ebc2dfa85c2445bb68d8c0d66e33c4da1e1b3a7
64f08c3bdfSopenharmony_cigpg:                using RSA key ...
65f08c3bdfSopenharmony_ci...
66f08c3bdfSopenharmony_ciPrimary key fingerprint: ...
67f08c3bdfSopenharmony_ciAuthor: Person-who-released LTP <foo@example.com>
68f08c3bdfSopenharmony_ciDate:   ...
69f08c3bdfSopenharmony_ci
70f08c3bdfSopenharmony_ci    LTP YYYYMMDD
71f08c3bdfSopenharmony_ci
72f08c3bdfSopenharmony_ci    Signed-off-by: Person-who-released LTP <foo@example.com>
73f08c3bdfSopenharmony_ci
74f08c3bdfSopenharmony_cidiff --git a/VERSION b/VERSION
75f08c3bdfSopenharmony_ciindex af4c41fec..ae488c0e7 100644
76f08c3bdfSopenharmony_ci--- a/VERSION
77f08c3bdfSopenharmony_ci+++ b/VERSION
78f08c3bdfSopenharmony_ci@@ -1 +1 @@
79f08c3bdfSopenharmony_ci-20230127
80f08c3bdfSopenharmony_ci+YYYYMMDD
81f08c3bdfSopenharmony_ci
82f08c3bdfSopenharmony_ciPlease check tag and signature. Proceed? [N/y]: y
83f08c3bdfSopenharmony_ciPushing changes to upstream git. Proceed? [N/y]: y
84f08c3bdfSopenharmony_ci...
85f08c3bdfSopenharmony_ciTo github.com:linux-test-project/ltp.git
86f08c3bdfSopenharmony_ci * [new tag]             YYYYMMDD -> YYYYMMDD
87f08c3bdfSopenharmony_ci--------------------------------------------------------------------
88f08c3bdfSopenharmony_ci
89f08c3bdfSopenharmony_ci4. Prepare tarballs and metadata documentation
90f08c3bdfSopenharmony_ci----------------------------------------------
91f08c3bdfSopenharmony_ci
92f08c3bdfSopenharmony_ci[source,sh]
93f08c3bdfSopenharmony_ci--------------------------------------------------------------------
94f08c3bdfSopenharmony_ci# clone already clonned git repository to new folder
95f08c3bdfSopenharmony_cicd ..
96f08c3bdfSopenharmony_cigit clone ltp ltp-full-YYYYMMDD
97f08c3bdfSopenharmony_cicd ltp-full-YYYYMMDD
98f08c3bdfSopenharmony_ci
99f08c3bdfSopenharmony_ci# update all submodules
100f08c3bdfSopenharmony_cigit submodule update --init
101f08c3bdfSopenharmony_ci
102f08c3bdfSopenharmony_ci# Generate configure script
103f08c3bdfSopenharmony_cimake autotools
104f08c3bdfSopenharmony_ci
105f08c3bdfSopenharmony_ci# Generate tarballs
106f08c3bdfSopenharmony_cicd ..
107f08c3bdfSopenharmony_citar -cjf ltp-full-YYYYMMDD.tar.bz2 ltp-full-YYYYMMDD --exclude .git
108f08c3bdfSopenharmony_citar -cJf ltp-full-YYYYMMDD.tar.xz ltp-full-YYYYMMDD --exclude .git
109f08c3bdfSopenharmony_ci
110f08c3bdfSopenharmony_ci# Generate checksums
111f08c3bdfSopenharmony_cimd5 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.md5
112f08c3bdfSopenharmony_cisha1 ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha1
113f08c3bdfSopenharmony_cisha256sum ltp-full-YYYYMMDD.tar.xz > ltp-full-YYYYMMDD.tar.xz.sha256
114f08c3bdfSopenharmony_ci
115f08c3bdfSopenharmony_ci# Generate metadata documentation
116f08c3bdfSopenharmony_ci./configure --with-metadata-generator=asciidoctor
117f08c3bdfSopenharmony_cimake -C metadata
118f08c3bdfSopenharmony_cicp -v docparse/metadata.html ../metadata.YYYYMMDD.html
119f08c3bdfSopenharmony_ci--------------------------------------------------------------------
120f08c3bdfSopenharmony_ci
121f08c3bdfSopenharmony_ciNOTE: You can use './tools/create-tarballs-metadata.sh' script to have the
122f08c3bdfSopenharmony_ci	  above automated. All generated files are placed in ltp-release-YYYYMMDD
123f08c3bdfSopenharmony_ci	  directory.
124f08c3bdfSopenharmony_ci
125f08c3bdfSopenharmony_ci[source,sh]
126f08c3bdfSopenharmony_ci--------------------------------------------------------------------
127f08c3bdfSopenharmony_ci$ ./tools/create-tarballs-metadata.sh
128f08c3bdfSopenharmony_ci===== git clone =====
129f08c3bdfSopenharmony_ciCloning into 'ltp-full-YYYYMMDD'...
130f08c3bdfSopenharmony_cidone.
131f08c3bdfSopenharmony_ci===== Update submodules =====
132f08c3bdfSopenharmony_ciSubmodule 'tools/kirk' (https://github.com/linux-test-project/kirk.git) registered for path 'tools/kirk'
133f08c3bdfSopenharmony_ci...
134f08c3bdfSopenharmony_ci===== Generate configure script =====
135f08c3bdfSopenharmony_cised -n '1{s:LTP-:m4_define([LTP_VERSION],[:;s:$:]):;p;q}' VERSION > m4/ltp-version.m4
136f08c3bdfSopenharmony_ciaclocal -I m4
137f08c3bdfSopenharmony_ci...
138f08c3bdfSopenharmony_ci===== Generate tarballs =====
139f08c3bdfSopenharmony_ci===== Generate checksums =====
140f08c3bdfSopenharmony_ci===== Generate metadata documentation =====
141f08c3bdfSopenharmony_cichecking for a BSD-compatible install... /usr/bin/install -c
142f08c3bdfSopenharmony_ci...
143f08c3bdfSopenharmony_ci'docparse/metadata.html' -> '/home/foo/ltp-release-YYYYMMDD/metadata.YYYYMMDD.html'
144f08c3bdfSopenharmony_ciGenerated files are in '/home/foo/ltp-release-YYYYMMDD', upload them to github
145f08c3bdfSopenharmony_ci--------------------------------------------------------------------
146f08c3bdfSopenharmony_ci
147f08c3bdfSopenharmony_ci5. Upload the generated files to GitHub
148f08c3bdfSopenharmony_ci---------------------------------------
149f08c3bdfSopenharmony_ci
150f08c3bdfSopenharmony_ciClick on https://github.com/linux-test-project/ltp/releases['Releases'] then
151f08c3bdfSopenharmony_ciswitch to https://github.com/linux-test-project/ltp/tags['Tags'], then click on
152f08c3bdfSopenharmony_ci'Add release notes'.  There should be 'Attach binaries ...' link at the
153f08c3bdfSopenharmony_cibottom of the page.
154f08c3bdfSopenharmony_ci
155f08c3bdfSopenharmony_ciDon't forget to upload checksums for the tarballs and metadata documentation as well.
156f08c3bdfSopenharmony_ci
157f08c3bdfSopenharmony_ci5. Send release announcement
158f08c3bdfSopenharmony_ci----------------------------
159f08c3bdfSopenharmony_ci
160f08c3bdfSopenharmony_ciThe announcement is sent to:
161f08c3bdfSopenharmony_ci
162f08c3bdfSopenharmony_ci* ltp at lists.linux.it
163f08c3bdfSopenharmony_ci* linux-kernel at vger.kernel.org
164f08c3bdfSopenharmony_ci* libc-alpha at sourceware.org
165f08c3bdfSopenharmony_ci
166f08c3bdfSopenharmony_ciCCed to:
167f08c3bdfSopenharmony_ci
168f08c3bdfSopenharmony_ci* lwn at lwn.net
169f08c3bdfSopenharmony_ci* akpm at linux-foundation.org
170f08c3bdfSopenharmony_ci* torvalds at linux-foundation.org
171