Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

  • a Java JDK in according with target JDK (java 5 Java 8 for JMeter 25.80+)
  • a recent Gradle release (but if you use gradlew utility, the good gradle version will be installed during the build)
  • subversion (svn) client installed (version 1.9+); the command-line utility svnmucc is needed (it should be included in the svn client installation (svn-tools dir), but please check)
  • a git client installed (2.+) ant binary (1.8+)subversion (svn) installed
  • a text editor
  • hostname must resolve to ip address (not loopback)
  • Internet access

Preparation

For GPG signing, the Release Manager need to have his GPG key on his machine.

To check the key (for example):

No Format
$ gpg --list-secret-keys --keyid-format LONG
[...]
sec   rsa4096/AC214CAA0612B399 2010-08-14 [SC]
      C4923F9ABFB2F1A06F08E88BAC214CAA0612B399
uid                 [ultimate] Milamber (ASF) <milamber@a.o>
uid                 [ultimate] Milamber (Milamberspace) <milamberspace@xxxxx.com>
ssb#  rsa4096/88A342BB4B10546A 2010-08-14 [E]

Optionally, you can add the user signing key in Git configuration for the JMeter repository, this allow to sign each commit.

Go to the Git clone directory of JMeter project:
$ cd ~/GitRepos/JMeter/jmeter 

Execute this git command to configure the user signing key, please change the key ID with your own key id:
$ git config user.signingkey AC214CAA0612B399 
  • 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 master branch should remain a SNAPSHOT
  • check out SVN trunk Git master branch into a clean workspace , for example (assuming current trunk is 2.8-SNAPSHOT in preparation for releasing 2.8):
No Format

svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_8_RC1
  • Move to new workspace:
  • (or run a git clone if jmeter git tree is not on your machine)
No Format
$ cd ~/GitRepos/JMeter/jmeter 

$ git pull
Already up to date.
  • Update version to targeted version in gradle.properties
No Format
 vi gradle.properties 
No Format

cd jmeter_v2_8_RC1
  • update the version / year in the new workspace: JMeterVersion.java (version and year) and for NOTICE (year)
    • ./src/core/org/apache/jmeter/util/JMeterVersion.java:
      • section: private static final String VERSION = "2.8";
      • section: private static final String COPYRIGHT = "Copyright (c) 1998-2012 The Apache Software Foundation";
      ./NOTICE:
      • section: Copyright 1998-2012 2019 The Apache Software Foundation
  • update xdocs/download_jmeter.xml to the new version
    • section: <!ENTITY release '25.80'>
  • Download external jars
No Format

ant download_jars 
  • build site documents, having first cleaned out existing files (so obsolete files will be removed):
    • TODO should this be done on trunk, before creating the clean checkout? Are there any references to the current version in the docs?
No Format

ant clean-docs
ant docs-site
ant docs-api -Djmeter.version=2.8
  • commit docs changes
  • Add modifications, commit and push to remote location
No Format
git add NOTICE xdocs/download_jmeter.xml
git
No Format

svn commit -m "Prepareprepare nextnew releaseversion 2.8: update docs tree and overview (RC1)"
  • make a last SVN update to update revision number for your workspace
No Format

svn update
  • edit now the version for build.xml (remove -SNAPSHOT)
    • ./build.xml:
      • section: <property name="jmeter.version" value="2.8"/>
  • create the new RC tag, e.g. v2_8_RC1 from the workspace
No Format

svn copy -m "Tag for pre-release" . https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1
  • 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_8_RC1
      • 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.
  • Switch to the new tag
No Format

svn switch https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1
  • build code to make a testing binary with this ant task:
No Format

ant -Djmeter.version=2.8 -Duser.name=milamber@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

Generate Release

  • If tests are ok, from the workspace jmeter_v2_8_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.8
ant sign_dist -Dgpg.keyname=0612B399 -Dgpg.secretKeyring=~/.gnupg/secring.gpg
  • Upload to Maven repository:
No Format

ant maven_upload -Djmeter.version=2.8 -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.8.tgz > rat-report-jmeter-2.8RC1.txt
unix2dos rat-report-jmeter-2.8RC1.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_8_RC1/dist/
  • From your computer, upload dist files and RAT report to the temporary location (e.g. personal dir: ~/jmeter_v2_8_RC1/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.8RC1/dist/
  • copy archives, sigs and hashes to dist
No Format

cp ~/jmeter_v2_8_RC1/dist/* ~/public_html/jmeter-2.8RC1/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

5.X.X" 
git push

Generate Release

  • Clean the working space before
No Format
 $ ./gradlew :src:dist:clean 
  • To do a new release candidate, run theses commands:
No Format
 $ ./gradlew prepareVote -Prc=1 -Pasf -PuseGpgCmd --info --stacktrace
  • Change -Prc=X with according the RC number
  • Use -Pasf to use the ASF GitBox repository (indeed of GitHub)
  • use -PuseGpgCmd to allow the signing of archives
  • (if you work on a Linux machine, during the build, the GPG agent will ask your passphras for you GPG key.)

On success, a template for VOTE email are display with relevant informations

Checks to do before sending vote email

  • review RAT report
  • See ReleaseChecking for information on what to check
  • Test ALL links in the vote message (use browser in incognito mode)

Vote on release

  • send round [VOTE] e-mail to dev

    Subject: [VOTE] Release JMeter X.X.X RCx


  • Wait for any feedback (at least 72 hours); address any issues raised, if necessary by creating another release tag (rc)
  • If at least 3 PMC votes, then continue

After VOTE success

  • send round [VOTE] [RESULT] e-mail to same mailing lists

  • Publish the RC tag to the release tag
No Format
$ ./gradlew publishDist -Prc=1 -Pasf -PuseGpgCmd 

Update main distribution files

  • Checkout the top-level of the live dist project on your computer:
No Format
mkdir ~/JMETER_releases/jmeter_5_4_2
cd ~JMETER_releases/jmeter_5_4_2
svn co --depth files  https://dist.apache.org/repos/dist/release/jmeter/ dist-jmeter
  • Edit HEADER.html to modify with new version number
  • If necessary, add your GPG public key to KEYS
  • If necessary, update the META file with your GPG key id (if you act as the release manager for the first time. Please visit https://checker.apache.org/doc/README.html )
    • The META file needs to be signed by the PMC Chair of project with this command:
No Format

gpg -u emailOfPmcChairJMeter@apache.org --armor --output META.asc --detach-sig META
  • To verify the good signature, use this command:
No Format

$ gpg --verify META.asc META

gpg: Signature made mar. 12 sept. 2017 18:05:19 WEST
gpg:                using RSA key C4923F9ABFB2F1A06F08E88BAC214CAA0612B399
gpg:    
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 
issuer "milamber@apache.org"
gpg: Good signature from "Milamber (ASF) <milamber@apache.org>" [ultimate]
gpg:          echo MD5 checksum KO; 
   aka "Milamber  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.8RC1/
svn export https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1/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.8RC1/dist/apache-jmeter-2.8.tgz $HOME
tar xfz apache-jmeter-2.8.tgz
cd apache-jmeter-2.8/docs/
mv api ~/public_html/jmeter-2.8RC1/docs/api
cd $HOME
rm -r $HOME/apache-jmeter-2.8
  • 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

After VOTE success

  • Wiki Markup
    send round \[VOTE\] \[RESULT\] e-mail to same mailing lists
  • Copy the RC tag to the release tag
No Format

svn copy https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1 https://svn.apache.org/repos/asf/jmeter/tags/v2_8 -m "Vote succeeded, create the 2.8 tag"

Move RC dist files to release

  • Connect to people.apache.org in SSH
  • Go to RC dist repository (e.g. personal dir)
No Format

cd ~/public_html/jmeter-2.8RC1/dist
  • Make sure that file group is set to jmeter (chgrp jmeter apache-jmeter*)
No Format

chgrp jmeter apache-jmeter*
chmod g+w apache-jmeter*
  • copy archives to /www/www.apache.org/dist/jmeter/binaries and /www/www.apache.org/dist/jmeter/source as appropriate
No Format

cp apache-jmeter-2.8_src* /www/www.apache.org/dist/jmeter/source
cp apache-jmeter-2.8.zip* /www/www.apache.org/dist/jmeter/binaries
cp apache-jmeter-2.8.tgz* /www/www.apache.org/dist/jmeter/binaries

...

...

Update Site dist

  • Checkout dist project on your computer
No Format

svn co  https://svn.apache.org/repos/asf/jmeter/dist dist-jmeter
  • 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

cd /www/www.apache.org/dist/jmeter
  • Execute a svn update
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

cd /www/jmeter.apache.org/
No Format

svn switch http://svn.apache.org/repos/asf/jmeter/branches/docs-2.8/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.8RC1/docs
cp -R api /www/jmeter.apache.org
chmod -R g+w /www/jmeter.apache.org/api
  • N.B. wait for few hours so site updates catch up

Maven Release

...

(Milamberspace) <milamberspace@gmail.com>" [ultimate]
  • Commit with svn
No Format

svn commit -m "JMeter 5.4.2 release - Prepare update site" dist-jmeter

Maven Release

Wait for the update of central maven

  • wait a day or so Maven Central update. 

Update Doap file

  • Get latest Doap file from Git master branch
No Format

$ cd ~/GitRepos/JMeter/jmeter 
$ git pull
$ vi doap_JMeter.rdf
  • update doap_JMeter.rdf to add the new release
  • and commit
No Format
$ git add doap_JMeter.rdf 
$ git commit -m "Add the 5.4.2 release" 

Update the JMeter web site

Clone (or pull) the git repo for JMeter web site:

No Format
Optionally: 
cd ~/GitRepos/JMeter
$ git clone https://gitbox.apache.org/repos/asf/jmeter-site.git
Or
$ cd ~/GitRepos/JMeter/jmeter-site/ 
$ git pull

Copy new web site files from jmeter git source directory to the site directory

Change the path segment above as appropriate!

No Format
$ cp -a site/* ~/GitRepos/JMeter/jmeter-site/ 

Add changes in stage git

No Format
$ git add .

Get lastest version Doap file and add to git too:

No Format
$ wget "https://gitbox.apache.org/repos/asf?p=jmeter.git;a=blob_plain;f=doap_JMeter.rdf;hb=HEAD" -O doap_JMeter.rdf
$ git add doap_JMeter.rdf  

Commit and push:

No Format
$ git commit -m "Update website for the new release Apache JMeter 5.4.2"
$ git push

The !GitPubSub system will update the live site within a few seconds.

...

Announce

Make sure: JMeter website is update AND download mirrors too.

  • update Wiki version detailsupdate doap_JMeter.rdf details in trunk and commit

      ...


      • Wiki Markup
        send \[ANNOUNCE\] e-mail to user@jmeter.a.o, dev@jmeter.a.o


      • 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

      Update reporter.apache.org

      Add release data (version and date) to reporter.apache.org - https://reporter.apache.org/addrelease.html?jmeter

      Tidy up

      • remove old archives from /www/wwwa few days after the release has been announced, remove any superseded releases from the binaries and source directories under https://dist.apache.org/jmeter/dist/repos/dist/release/jmeter/ using the following command:
      No Format
      
      ant release_delete -Djmeter.old.version=4.0 -DrepoType=live [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ]