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.70+)
  • 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.7-SNAPSHOT in preparation for releasing 2.7):
No Format

svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_7_RC2
  • 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_7_RC2
  • update the version / year in the new workspace: JMeterVersion.java (version and year) and NOTICE (year) for NOTICE (year)
      ./src/core/org/apache/jmeter/util/JMeterVersion.java:
    • section: private static final String VERSION = "2.7";
    • 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.70'>
  • 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.7
  • 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.7: update docs tree and overview"
  • update now the version for build.xml (remove -SNAPSHOT)
    • ./build.xml:
      • section: <property name="jmeter.version" value="2.7"/>
  • create the new RC tag, e.g. v2_7_RC2 from the workspace
No Format

svn copy . https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC2
  • 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_7_RC2
      • 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.
  • build code to make a testing binary with this ant task:
No Format

ant -Djmeter.version=2.7 -Duser.name=username@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_7_RC2
    • (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.7
ant sign_dist -Dgpg.keyname=<YOUR_KEY_ID> -Dgpg.secretKeyring=<path to secring.gpg i.e. ~/.gnupg/secring.gpg>
  • Upload to Maven repository:
No Format

ant maven_upload -Djmeter.version=2.7 -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.7.tgz > rat-report-jmeter-2.7RC2.txt
unix2dos rat-report-jmeter-2.7RC2.txt

Checks to do before send vote email

  • to do: add some checks (zip/tgz binary files vs src files, etc.)
  • review RAT report

Vote on release

  • Login to people.apache.org in SSH
  • Create temporary location to receive dist files
No Format

mkdir -p ~/jmeter_v2_7_RC2/dist/
  • From your computer, upload dist files and RAT report to the temporary location (e.g. personal dir: ~/jmeter_v2_7_RC2/dist/) in people.apache.org
  • Return to people.apache.org
  • Preparation RC publishing
No Format

mkdir -p ~/public_html/jmeter-2.7RC2/dist/
  • copy archives, sigs and hashes to dist
No Format

cp ~/jmeter_v2_7_RC2/dist/* ~/public_html/jmeter-2.7RC2/dist/
  • check hashes (before / after uploads)
    • Install the site docs:
No Format

cd ~/public_html/jmeter-2.7RC2/
svn co https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC2/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.7RC2/dist/apache-jmeter-2.7.tgz $HOME
tar xfz apache-jmeter-2.7.tgz
cd apache-jmeter-2.7/docs/
mv api ~/public_html/jmeter-2.7RC2/docs/api
cd $HOME
rm -r $HOME/apache-jmeter-2.7
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


  • 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 (rc)
  • If at least 3 PMC votes, then continue

After VOTE success

...

  • send

    round

    \

    [VOTE

    \

    ]

    \

    [RESULT

    \

    ]

    e-mail

    to

    same

    mailing

    lists

  • Copy 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 
svn copy https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC2 https://svndist.apache.org/repos/asfdist/release/jmeter/tags/v2_7

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.7RC2/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.7_src* /www/www.apache.org/dist/jmeter/source
cp apache-jmeter-2.7.zip* /www/www.apache.org/dist/jmeter/binaries
cp apache-jmeter-2.7.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
  • 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

  • login to people.apache.org
  • Go to:
No Format

cd /www/jmeter.apache.org/

...

 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:                issuer "milamber@apache.org"
gpg: Good signature from "Milamber (ASF) <milamber@apache.org>" [ultimate]
gpg:                 aka "Milamber (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.

No Format

svn switch http://svn.apache.org/repos/asf/jmeter/branches/docs-2.7/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.7RC2/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

...

...

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] ]