...
- a Java JDK in according with target JDK (java 5 for JMeter 2.78)
- a recent ant binary (1.8+)
- subversion (svn) installed
- a text editor
- hostname must resolve to ip address (not loopback)
- Internet access
Preparation
- request Bugzilla version update (on INFRA or if you are JMeter committer, ask for sufficient Bugzilla karma to do this yourself)
- ensure changes.xml is up to date. If necessary, commit after update.
- ensure unit tests pass
- do not update the version in build.xml yet; trunk should remain a SNAPSHOT
- check out SVN trunk into a clean workspace, for example (assuming current trunk is 2.78-SNAPSHOT in preparation for releasing 2.78):
No Format |
---|
svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_78_RC3RC1
|
No Format |
---|
cd jmeter_v2_78_RC3RC1
|
- update the version / year in the new workspace: JMeterVersion.java (version and year) and NOTICE (year)
- ./src/core/org/apache/jmeter/util/JMeterVersion.java:
- section: private static final String VERSION = "2.78";
- section: private static final String COPYRIGHT = "Copyright (c) 1998-2012 The Apache Software Foundation";
- ./NOTICE:
- section: Copyright 1998-2012 The Apache Software Foundation
- update xdocs/download_jmeter.xml to the new version
- section: <!ENTITY release '2.78'>
- Download external jars
No Format |
---|
ant download_jars
|
...
No Format |
---|
ant clean-docs
ant docs-site
ant docs-api -Djmeter.version=2.78
|
No Format |
---|
svn commit -m "Prepare next release 2.78: update docs tree and overview (RC1)"
|
- make a last SVN update to update revision number for your workspace
...
- edit now the version for build.xml (remove -SNAPSHOT)
- ./build.xml:
- section: <property name="jmeter.version" value="2.78"/>
- create the new RC tag, e.g. v2_78_RC3 RC1 from the workspace
No Format |
---|
svn copy -m "Tag for pre-release" . https://svn.apache.org/repos/asf/jmeter/tags/v2_78_RC3RC1
|
- this will create the tag from the contents of the workspace. Only the updated files will be shown in the commit message; most files will be shown as being copied from trunk.
- N.B. Tags must be immutable, i.e. must not be changed once created. A tag can be deleted if it is no longer needed, but must not be recreated.
- If there is a problem with the contents of an RC tag, create a new tag, for example v2_78_RC3RC1
- If the tag is part of an ongoing release vote, do not delete it whilst the vote is ongoing, even if the vote is now using a later tag. It can be useful to be able to compare the contents of tags as part of the voting process.
- Once the release vote is over, intermediate tags are no longer needed, and can be deleted.
- If the tag has not been used in a release vote, it can be deleted immediately.
...
No Format |
---|
svn switch https://svn.apache.org/repos/asf/jmeter/tags/v2_78_RC3RC1
|
- build code to make a testing binary with this ant task:
No Format |
---|
ant -Djmeter.version=2.78 -Duser.name=username@apachemilamber@apache.org distribution
|
- test the new binaries (move/extract binaries in a temporary directory outside the workspace)
- GUI and non-GUI using host with graphic capability
- non-GUI only using host with no graphic capability
- ideally test on minimum supported Java and latest Java - especially for GUI
...
- If tests are ok, from the workspace jmeter_v2_78_RC3 RC1
- (no need to fetch the tag again, as we already have a clean workspace)
- sign distribution files and maven files via ant tasks:
No Format |
---|
ant _dist_maven -Djmeter.version=2.78
ant sign_dist -Dgpg.keyname=<YOUR_KEY_ID>0612B399 -Dgpg.secretKeyring=<path to secring.gpg i.e. ~/.gnupg/secring.gpg>gpg
|
- Upload to Maven repository:
No Format |
---|
ant maven_upload -Djmeter.version=2.78 -DrepoType=releases
|
- Go to Apache Repository
- Section Staging Repositories
- You will receive a email with JMeter Maven Repo URLs
- The main URL must be added to email vote.
- Generate RAT report (example on Linux with Java)
No Format |
---|
cd dist/
java -jar $RAT_HOME/apache-rat-0.8.jar ./apache-jmeter-2.78.tgz > rat-report-jmeter-2.7RC38RC1.txt
unix2dos rat-report-jmeter-2.7RC38RC1.txt
|
Checks to do before send vote email
- review RAT report
- to do: add some checks (zip/tgz binary files vs src files, SVN tree vs SRC files, etc.)
Check: JMeter SVN tree vs JMeter archive sources
For JMeter sources, need a Linux box, SVN (apache)
...
and GIT (local).
Export the RC tags to a temporay directory.
No Format |
---|
cd /tmp
svn export http://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1 jmeter_v2_8_RC1
|
Initialize a GIT local repository
No Format |
---|
cd jmeter_v2_8_RC1/
git init
|
Add and commit all files from the svn export
No Format |
---|
git add *
git commit -m "SVN export to initial import"
|
Untar the JMeter sources tgz file into a temporary directory, and copy the contents in the git repo.
No Format |
---|
tar xfz /tmp/releases/jmeter_2_8/jmeter_v2_8_RC1/dist/apache-jmeter-2.8_src.tgz -C /tmp
cp -a /tmp/apache-jmeter-2.8/* /tmp/jmeter_v2_8_RC1/
|
Check the differences with the git diff command:
No Format |
---|
cd /tmp/jmeter_v2_8_RC1/
git diff
|
Samples Results:
No Format |
---|
diff --git a/bin/jmeter b/bin/jmeter
old mode 100755
new mode 100644
diff --git a/bin/jmeter-server b/bin/jmeter-server
old mode 100755
new mode 100644
diff --git a/xdocs/download_jmeter.cgi b/xdocs/download_jmeter.cgi
old mode 100755
new mode 100644
|
Here, differences is only the permission on some files (not matter in this case)
After all checks, you can remove the temporary directories.
...
Vote on release
- Login to people.apache.org in SSH
- Create temporary location to receive dist files
No Format |
---|
mkdir -p ~/jmeter_v2_78_RC3RC1/dist/
|
- From your computer, upload dist files and RAT report to the temporary location (e.g. personal dir: ~/jmeter_v2_78_RC3RC1/dist/) in people.apache.org
cd ./dist/
scp apache-jmeter-2.8* minautor:/home/milamber/jmeter_v2_8_RC1/dist/
scp rat-report-jmeter-2.8RC1.txt minautor:/home/milamber/jmeter_v2_8_RC1/dist/
- Return to people.apache.org
- Preparation RC publishing
No Format |
---|
mkdir -p ~/public_html/jmeter-2.7RC38RC1/dist/
|
- copy archives, sigs and hashes to dist
No Format |
---|
cp ~/jmeter_v2_78_RC3RC1/dist/* ~/public_html/jmeter-2.7RC38RC1/dist/
|
- check hashes (before / after uploads)
MD5 checks (local)
Example, on local Linux box:
No Format |
---|
cd /release_dir/dist
find . -name "*.md5" -exec cat {} \; -exec echo "" \;
|
Results (copy/paste to email vote):
No Format |
---|
98838d5dc4f2b735b522abc8425aec0d *apache-jmeter-2.8_src.zip
9a1740e7828a4d25e439934974672b8b *apache-jmeter-2.8.tgz
b5283a2099fe4186f8978a3ccfb4e8d6 *apache-jmeter-2.8_src.tgz
ca70cf7fdf8b98ded1dc0494bdc9de14 *apache-jmeter-2.8.zip
|
After upload on people.apache.org
Check MD5 sums on people.apache.org, with bash shell, check the md5 files sum vs files .md5 hashes.
No Format |
---|
cd ~/public_html/jmeter-2.8RC1/dist/
|
Copy/paste all lines in one time
No Format |
---|
LIST=`find . -regex ".*\.zip" -or -regex ".*\.tgz"`
for ARCHIVE in ${LIST} ;
do
if test `awk '{ print $1 }' ${ARCHIVE}.md5` = `md5 -q ${ARCHIVE}`; then
echo MD5 OK;
else
echo MD5 checksum KO;
fi;
done
|
Good results are:
No Format |
---|
MD5 OK
MD5 OK
MD5 OK
MD5 OK
|
No Format |
---|
cd ~/public_html/jmeter-2.7RC38RC1/
svn coexport https://svn.apache.org/repos/asf/jmeter/tags/v2_78_RC3RC1/docs docs
|
- Extract Javadocs:
unzip -x jmeter-m.n.o.zip '*/docs/api/*'
and move to docs/api
No Format |
---|
cd $HOME
cp ~/public_html/jmeter-2.7RC38RC1/dist/apache-jmeter-2.78.tgz $HOME
tar xfz apache-jmeter-2.78.tgz
cd apache-jmeter-2.78/docs/
mv api ~/public_html/jmeter-2.7RC38RC1/docs/api
cd $HOME
rm -r $HOME/apache-jmeter-2.78
|
Wiki Markup |
---|
send round \[VOTE\] e-mail to dev |
- Wait for any feedback (at least 72 hours); address any issues raised, if necessary by creating another release tag
- If at least 3 PMC votes, then continue
...
No Format |
---|
svn copy https://svn.apache.org/repos/asf/jmeter/tags/v2_78_RC3RC1 https://svn.apache.org/repos/asf/jmeter/tags/v2_78 -m "Vote succeeded, create the 2.8 tag"
|
Move RC dist files to release
...
No Format |
---|
cd ~/public_html/jmeter-2.7RC38RC1/dist
|
- Make sure that file group is set to jmeter (chgrp jmeter apache-jmeter*)
...
No Format |
---|
cp apache-jmeter-2.78_src* /www/www.apache.org/dist/jmeter/source
cp apache-jmeter-2.78.zip* /www/www.apache.org/dist/jmeter/binaries
cp apache-jmeter-2.78.tgz* /www/www.apache.org/dist/jmeter/binaries
|
- check files are visible and downloadable from www.apache.org (2+ hours)
- wait a day or so for mirrors to catch up
...
- Edit HEADER.html to modifiy with new version number
- Optional, add your GPG public key to KEYS
- Commit with svn
No Format |
---|
svn commit -m "JMeter 2.8 release - Prepare update site"
|
- Login to people.apache.org in SSH
...
Update JMeter site
No Format |
---|
svn copy https://svn.apache.org/repos/asf/jmeter/tags/v2_8 https://svn.apache.org/repos/asf/jmeter/branches/docs-2.8 -m "Create branch docs 2.8"
|
- login to people.apache.org
- Go to:
...
No Format |
---|
svn switch http://svn.apache.org/repos/asf/jmeter/branches/docs-2.78/docs
|
- If the documentation needs to be updated between releases, create a branch docs-vm_n_o from the tag and switch to that
- for later updates, use "svn switch" or "svn update" as appropriate (use svn info to find current setting)
- The Javadocs are not in SVN so these need to be copied from the staging area
No Format |
---|
cd /www/jmeter.apache.org/
rm -r /www/jmeter.apache.org/api
cd ~/public_html/jmeter-2.7RC38RC1/docs
cp -R api /www/jmeter.apache.org
chmod -R g+w /www/jmeter.apache.org/api
|
...
- Go to Apache Repository
- Section Staging Repositories
- You will receive a email with JMeter Maven Repo URLs
- The main URL can be added to email announce
...
- update Wiki version details
- update doap_JMeter.rdf details in trunk and commit
No Format |
---|
svn commit -m "JMeter 2.8 release"
|
Wiki Markup |
---|
send \[ANNOUNCE\] e-mail to user@jmeter.a.o, dev@jmeter.a.o |
- Double check all URL in email announce!
- also copy to announce AT ao (has to be sent from an ao e-mail address)
- N.B. to track bounces and unsubscribes, it may be a good idea to use a separate mail to Announce
...