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 8 for JMeter 5.0+)
  • a recent Ant binary (1.10.5+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.+)
  • 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 5.0-SNAPSHOT in preparation for releasing 5.0):
No Format

svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v5_0_RC1
  • Move to the 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_v5_0_RC1
  • 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 = "5.0";
    • section: private static final String COPYRIGHT = "Copyright (c) 1998-2019 The Apache Software Foundation";
    • ./NOTICE:
      • section: Copyright 1998-2019 The Apache Software Foundation
  • update xdocs/download_jmeter.xml to the new version
    • section: <!ENTITY release '5.0'>
  • 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=5.0
  • check if you need to add some new files or remove some deleted files from docs directory (using svn status command)
No Format

svn status
  • commit docs changes (CHECK IF THEY HAVE NEW PAGES/FILES : make a svn add before commit)
  • 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 5.0: 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="5.0"/>
  • create the new RC tag, e.g. v5_0_RC1 from the workspace
No Format

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

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

ant -Djmeter.version=5.0 -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_v3_2_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=5.0
ant sign_dist -Dgpg.keyname=0612B399 -Dgpg.secretKeyring=~/.gnupg/secring.gpg
  • Upload Maven files to Maven repository:
No Format

ant maven_upload -Djmeter.version=5.0 -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.12.jar ./apache-jmeter-5.0.tgz > rat-report-jmeter-5.0RC1.txt
unix2dos rat-report-jmeter-5.0RC1.txt

Upload release artifacts to staging directory

JMeter releases are now published using svnpubsub.

For release votes, the files are uploaded to the dev/jmeter tree at https://dist.apache.org/repos/dist/dev/jmeter/

If the vote succeeds, they are renamed to the release directory at https://dist.apache.org/repos/dist/release/jmeter/ which is automatically published to the ASF mirror system.

No Format

ant RC_upload -DRC=RCn -DrepoType=live [-Dasf.ldap.password=secret [-Dasf.ldap.username=user] ]

The files should now be available under https://dist.apache.org/repos/dist/dev/jmeter/

Create docs branch

Wiki Markup
The site documentation now needs to be copied to the appropriate branch directory from the tag.
\[Note: if the vote fails, the branch will need to be removed and recreated\]

No Format

svn cp -m"Create docs branch" https://svn.apache.org/repos/asf/jmeter/tags/v3_2_RC1 https://svn.apache.org/repos/asf/jmeter/branches/docs-5.0/

The Javadocs are not yet part of SVN at this point. For simplicity when reviewing the release candidate, they should be added to the docs branch here:

No Format

svn import -m "Add Javadocs" docs/api https://svn.apache.org/repos/asf/jmeter/branches/docs-5.0/docs/api
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 informationsIt would be possible to add them directly to the live SVN directory later, but they need to be available for review, so it's easiest to create the branches/docs-m.n/docs tree as an exact copy of what will be released.

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

  • Wiki Markup

    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

  • Copy Publish the RC tag to the release tag
No Format

svn copy https://svn.apache.org/repos/asf/jmeter/tags/v5_0_RC1 https://svn.apache.org/repos/asf/jmeter/tags/v5_0 -m "Vote succeeded, create the 5.0 tag"

Move RC dist files to release

This is done using svnmnucc. It moves the files from the staging director https://dist.apache.org/repos/dist/dev/jmeter/ to the live are at https://dist.apache.org/repos/dist/release/jmeter/

No Format

ant RC_publish -DRC=RCn -DrepoType=live [-Dasf.ldap.password=secret [-Dasf.ldap.username=user] ]
$ ./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

...

No Format
svn commit -m "JMeter 5.04.2 release - Prepare update site" dist-jmeter

...

Wait for the update

...

of central maven

  • wait a day or so for mirrors to catch up distribution files and Maven Central update. Note: the mirrors list can be checked Here  

Update Doap file

  • Get latest Doap file from SVN.Git master branch
No Format
svn$ cocd https:~/GitRepos/svn.apache.org/repos/asf/jmeter/doap
JMeter/jmeter 
$ git pull
$ vi doap_JMeter.rdf
  • update doap_JMeter.rdf to add the new release
  • and commit
No Format

svn$ git add doap_JMeter.rdf 
$ git commit -m "JMeterAdd the 5.04.2 release"
 

...

Update the JMeter

...

web site

Clone (or pull) the git repo for JMeter web siteThis is now done using svnmucc. Create a script - for example "updatesite.txt" - containing the following:

No Format

rm
Optionally: 
cd ~/GitRepos/JMeter
$ git clone https://svngitbox.apache.org/repos/asf/jmeter/-site.git

cp
HEAD
https://svn.apache.org/repos/asf/jmeter/branches/docs-5.0/docs
https://svn.apache.org/repos/asf/jmeter/site

cp HEAD
https://svnOr
$ 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/jmeter/doap/?p=jmeter.git;a=blob_plain;f=doap_JMeter.rdf;hb=HEAD" -O doap_JMeter.rdf
https://svn.apache.org/repos/asf/jmeter/site/$ git add doap_JMeter.rdf

Change the /docs-5.0/ path segment above as appropriate!

  

Commit and pushNow use svnmucc to update the live site:

No Format

svnmucc$ git commit -m "Update website for the new release Apache JMeter 5.04.2"
$ -X updatesite.txt
git push

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

Note: it's important that the existing contents are removed and replaced, rather than just copying the current site over. This ensures that obsolete files are removed.

Updating the current JMeter site

The branches/docs-m.n SVN tree is created from trunk when the release is created. Subsequent updates to trunk documents may not be appropriate to the current release - e.g. changes to test elements

  • so any necessary changes to the site should be made to the branch (and trunk if appropriate).

Then rebuild the site docs (not the Javadocs!) - ant docs-site -Ddocs.force=true - and update the SVN branch with the changed files.

The site can then be published as above.

If only a few changes are necessary, these can be updated using normal SVN commit.

Announce

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

  • update Wiki version details

  • 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

...

No Format
ant release_delete -Djmeter.old.version=4.0 -DrepoType=live [-Dasf.ldap.password=secret [-Dasf.ldap.usermame=user] ]

...