Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: [Original edit by Milamber]

...

  • 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
  • Move to new workspace:
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
  • commit docs changes
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
  • Install the site docs:
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
    • Example:
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

...

  • 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
    • Go to dist dir:

...

No Format
svn update

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
    • Example:
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

      ...