Differences between revisions 48 and 49
Revision 48 as of 2012-05-24 19:41:13
Size: 9638
Editor: Milamber
Comment:
Revision 49 as of 2012-09-30 12:12:01
Size: 12388
Editor: Milamber
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
 * a Java JDK in according with target JDK (java 5 for JMeter 2.7)  * a Java JDK in according with target JDK (java 5 for JMeter 2.8)
Line 10: Line 10:
 * Internet access
Line 16: Line 17:
 * check out SVN trunk into a clean workspace, for example (assuming current trunk is 2.7-SNAPSHOT in preparation for releasing 2.7):
{{{
svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_7_RC3
 * check out SVN trunk into a clean workspace, for example (assuming current trunk is 2.8-SNAPSHOT in preparation for releasing 2.8):
{{{
svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_8_RC1
Line 22: Line 23:
cd jmeter_v2_7_RC3 cd jmeter_v2_8_RC1
Line 26: Line 27:
    * section: ''private static final String VERSION = "2.7";''     * section: ''private static final String VERSION = "2.8";''
Line 31: Line 32:
  * section: <!ENTITY release '2.7'>   * section: <!ENTITY release '2.8'>
Line 41: Line 42:
ant docs-api -Djmeter.version=2.7 ant docs-api -Djmeter.version=2.8
Line 45: Line 46:
svn commit -m "Prepare next release 2.7: update docs tree and overview" svn commit -m "Prepare next release 2.8: update docs tree and overview (RC1)"
Line 53: Line 54:
    * section: ''<property name="jmeter.version" value="2.7"/>''
 * create the new RC tag, e.g. v2_7_RC3 from the workspace
{{{
svn copy -m "Tag for pre-release" . https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC3
    * section: ''<property name="jmeter.version" value="2.8"/>''
 * create the new RC tag, e.g. v2_8_RC1 from the workspace
{{{
svn copy -m "Tag for pre-release" . https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1
Line 60: Line 61:
     * If there is a problem with the contents of an RC tag, create a new tag, for example v2_7_RC3      * If there is a problem with the contents of an RC tag, create a new tag, for example v2_8_RC1
Line 66: Line 67:
svn switch https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC3 svn switch https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1
Line 70: Line 71:
ant -Djmeter.version=2.7 -Duser.name=username@apache.org distribution ant -Djmeter.version=2.8 -Duser.name=milamber@apache.org distribution
Line 78: Line 79:
 * If tests are ok, from the workspace jmeter_v2_7_RC3  * If tests are ok, from the workspace jmeter_v2_8_RC1
Line 82: Line 83:
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>
ant _dist_maven -Djmeter.version=2.8
ant sign_dist -Dgpg.keyname=0612B399 -Dgpg.secretKeyring=~/.gnupg/secring.gpg
Line 87: Line 88:
ant maven_upload -Djmeter.version=2.7 -DrepoType=releases ant maven_upload -Djmeter.version=2.8 -DrepoType=releases
Line 98: Line 99:
java -jar $RAT_HOME/apache-rat-0.8.jar ./apache-jmeter-2.7.tgz > rat-report-jmeter-2.7RC3.txt
unix2dos rat-report-jmeter-2.7RC3.txt
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
Line 103: Line 104:
 * to do: add some checks (zip/tgz binary files vs src files, etc.)
Line 105: Line 105:
 * 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.
{{{
cd /tmp
svn export http://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1 jmeter_v2_8_RC1
}}}
Initialize a GIT local repository
{{{
cd jmeter_v2_8_RC1/
git init
}}}
Add and commit all files from the svn export
{{{
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.
{{{
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:
{{{
cd /tmp/jmeter_v2_8_RC1/
git diff
}}}
Samples Results:
{{{
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.
Line 111: Line 156:
mkdir -p ~/jmeter_v2_7_RC3/dist/
}}}

 * '''From your computer''', upload dist files and RAT report to the temporary location (e.g. personal dir: ~/jmeter_v2_7_RC3/dist/) in people.apache.org
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/
Line 119: Line 167:
mkdir -p ~/public_html/jmeter-2.7RC3/dist/ mkdir -p ~/public_html/jmeter-2.8RC1/dist/
Line 123: Line 171:
cp ~/jmeter_v2_7_RC3/dist/* ~/public_html/jmeter-2.7RC3/dist/ cp ~/jmeter_v2_8_RC1/dist/* ~/public_html/jmeter-2.8RC1/dist/
Line 128: Line 176:
  * Install the site docs:
{{{
cd ~/public_html/jmeter-2.7RC3/
svn co https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC3/docs docs
== MD5 checks (local) ==
Example, on local Linux box:
{{{
cd /release_dir/dist
find . -name "*.md5" -exec cat {} \; -exec echo "" \;
}}}
Results (copy/paste to email vote):
{{{
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.
{{{
cd ~/public_html/jmeter-2.8RC1/dist/
}}}
Copy/paste all lines in one time
{{{
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:
{{{
MD5 OK
MD5 OK
MD5 OK
MD5 OK
}}}

 * Install the site docs:
{{{
cd ~/public_html/jmeter-2.8RC1/
svn export https://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1/docs docs
Line 137: Line 223:
cp ~/public_html/jmeter-2.7RC3/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.7RC3/docs/api
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
Line 142: Line 228:
rm -r $HOME/apache-jmeter-2.7 rm -r $HOME/apache-jmeter-2.8
Line 152: Line 238:
svn copy https://svn.apache.org/repos/asf/jmeter/tags/v2_7_RC3 https://svn.apache.org/repos/asf/jmeter/tags/v2_7 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"
Line 159: Line 245:
cd ~/public_html/jmeter-2.7RC3/dist cd ~/public_html/jmeter-2.8RC1/dist
Line 168: Line 254:
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
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
Line 176: Line 262:
 * wait a day or so for mirrors to catch up  * '''wait a day''' or so for mirrors to catch up


Line 187: Line 276:
svn commit svn commit -m "JMeter 2.8 release - Prepare update site"
Line 200: Line 289:

{{{
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"
}}}
Line 210: Line 303:
svn switch http://svn.apache.org/repos/asf/jmeter/branches/docs-2.7/docs svn switch http://svn.apache.org/repos/asf/jmeter/branches/docs-2.8/docs
Line 219: Line 312:
cd ~/public_html/jmeter-2.7RC3/docs cd ~/public_html/jmeter-2.8RC1/docs
Line 229: Line 322:
   * Comment: "JMeter 2.8 release"
Line 237: Line 331:
   *
{{{
svn commit -m "JMeter 2.8 release"
}}}

This page is a brain dump of the various items needed for a release.

  • DRAFT

Requirements

  • a Java JDK in according with target JDK (java 5 for JMeter 2.8)
  • 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.8-SNAPSHOT in preparation for releasing 2.8):

svn co https://svn.apache.org/repos/asf/jmeter/trunk jmeter_v2_8_RC1
  • Move to new workspace:

cd jmeter_v2_8_RC1
  • 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.8";

      • 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.8'>

  • Download external jars

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?

ant clean-docs
ant docs-site
ant docs-api -Djmeter.version=2.8
  • commit docs changes

svn commit -m "Prepare next release 2.8: update docs tree and overview (RC1)"
  • make a last SVN update to update revision number for your workspace

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

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

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

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:

ant _dist_maven -Djmeter.version=2.8
ant sign_dist -Dgpg.keyname=0612B399 -Dgpg.secretKeyring=~/.gnupg/secring.gpg
  • Upload to Maven repository:

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)

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.

cd /tmp
svn export http://svn.apache.org/repos/asf/jmeter/tags/v2_8_RC1 jmeter_v2_8_RC1

Initialize a GIT local repository

cd jmeter_v2_8_RC1/
git init

Add and commit all files from the svn export

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.

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:

cd /tmp/jmeter_v2_8_RC1/
git diff

Samples Results:

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

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

mkdir -p ~/public_html/jmeter-2.8RC1/dist/
  • copy archives, sigs and hashes to dist

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:

cd /release_dir/dist
find . -name "*.md5" -exec cat {} \; -exec echo "" \;

Results (copy/paste to email vote):

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.

cd ~/public_html/jmeter-2.8RC1/dist/

Copy/paste all lines in one time

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:

MD5 OK
MD5 OK
MD5 OK
MD5 OK
  • Install the site docs:

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:

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

  • send round [VOTE] [RESULT] e-mail to same mailing lists
  • Copy the RC tag to the release tag

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)

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

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

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

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

svn commit -m "JMeter 2.8 release - Prepare update site"
  • Login to people.apache.org in SSH
    • Go to dist dir:

cd /www/www.apache.org/dist/jmeter
  • Execute a svn update

svn update

Update JMeter site

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:

cd /www/jmeter.apache.org/
  • fetch site from SVN:
    • svn switch http://svn.apache.org/repos/asf/jmeter/tags/vm_n_o/docs

    • Example:

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:

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

  • 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

Announce

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

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

svn commit -m "JMeter 2.8 release"
  • 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

Tidy up

  • remove old archives from /www/www.apache.org/jmeter/dist

ReleaseCreation (last edited 2019-02-06 13:17:34 by Philippe Mouawad)