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

This page is a brain dump of the various items needed for a release. It needs some work...

Preparation

DRAFT

Requirements

  • a Java JDK in according with target JDK (Java 8 for JMeter 5.0+)
  • 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.+)
  • 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 request Bugzilla version update (on https://issues.apache.org/jira/browse/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; master branch should remain a SNAPSHOT
  • check out Git master branch into a clean 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 
  • update the version / year for NOTICE (year)
    • ./NOTICE:
      • section: Copyright 1998-2019 The Apache Software Foundation
    update JMeterVersion.java (version and year), build.xml (version and docversion) and NOTICE (year)
  • update xdocs/download_jmeter.xml to the new version
    • build site documents, having first cleaned out existing files (so obsolete files will be removed):
      • Wiki Markup
        \[clean-docs\] then \[docs-site\]
    • update docs tree in SVN
    • build code
    • test
      • 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

    • tag all the files with a new RC tag, e.g. v2_5_1_RC1
    • 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_5_1_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.
    • extract files from SVN using the tag into a new directory tree
    • download jars needed to build: "ant download_jars"
    • create distribution files:
      • ant distribution -lib=<libextra> -Djmeter.version=m.n -Duser.name=user-AT-apache.org
      • sign distribution files (gpg -ba file)
        • ex. gpg2 -u <id_key> -ba apache-jmeter-2.5.1_src.tgz
        • ex. gpg2 -u <id_key> -ba apache-jmeter-2.5.1_src.zip
        • ex. gpg2 -u <id_key> -ba apache-jmeter-2.5.1.tgz
        • ex. gpg2 -u <id_key> -ba apache-jmeter-2.5.1.zip
    • Generate RAT report (example on Linux with Java)
      • java -jar $RAT_HOME/apache-rat-0.7.jar ./apache-jmeter-2.5.1.tgz > rat-report-jmeter-2.5.1RC1.txt

    Vote on release

      • section: <!ENTITY release '5.0'>
    • Add modifications, commit and push to remote location
    No Format
    git add NOTICE xdocs/download_jmeter.xml
    git commit -m "prepare new version 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)
    • upload to temporary location (e.g. personal dir)
      • cd public_html ; mkdir jmeter-m.n
      • cd jmeter-m.n
      • mkdir dist
      • copy archives, sigs and hashes to dist
      • check hashes (before / after uploads)
      • Install the site docs: svn co http://svn.apache.org/repos/asf/jmeter/tags/vm_nxx/docs
      • Extract Javadocs: unzip -x jmeter-m.n.o.zip '*/docs/api/*' and move to docs/api
    • Wiki Markup
      send round \[VOTE\] e-mail to dev
    • Wait for any feedback; address any issues raised, if necessary by creating another release tag (rc)
    • If at least 3 PMC votes, then continue unmigrated-wiki-markup

    After VOTE success

    • send

      round

      \

      [VOTE

      \

      ]

      \

      [RESULT

      \

      ]

      e-mail

      to

      same

      mailing

      lists

    • Copy Publish the RC tag to the release tag

    Upload files

    Update JMeter site

    ...

    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:                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.

    Announce

    Make sure: JMeter website is update.

    • update Wiki version details

    ...

    Announce

    • update Wiki version details
    • update doap_JMeter.rdf details in trunk

    • 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/distrepos/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] ]