Release Planning - Best Practice Guide 2010

After our first release, it is useful to document the steps that the release manager made in order that later releases are more easily performed.

Preparation

Signing Preparation

In order to sign the release, you must first create a private PGP key.

{color:#ff0000}Look here for details{color}

Cutting a release

  1. do a svn update with the following URL "https://svn.apache.org/repos/asf/incubator/esme" to an empty directory
  2. delete or rename your .m2/repository directory
  3. Is the release able to be compiled?: do a "mvn compile. There should be no errors.
  4. Are all tests successful? do a "mvn test". There should be no tests that fail
  5. Is the release runnable? Do a "mvn jetty:run". Can you start ESME and perform the basic tests ({color:#ff0000}List missing{color})
  6. Tag the release via SVN. The tag should be called "apache-esme-[VERSION-NO](version-no.html) -incubating"
  7. Use SVN export on the SVN tagged directory to create a directory of files that doesn't include any SVN-related files.
  8. Create a tar file based on that directory. Gzip that file. The file should be named apache-esme-[VERSION-NO](version-no.html) -incubating.src.tar.gz". Once other types of files (war, etc) are released, then other tar file names may be necessary

Testing the release

  1. Unpack the tar file in an empty directory
  2. Remove the maven .m2/repository
  3. Attempt to build ESME with a "mvn test jetty:run"

Signing the release

Perform the following steps (here using gpg on a Windows box)

  1. gpg --armor --output apache-esme-1-0-0-incubating.src.tar.gz.asc --detach-sig apache-esme-1-0-0-incubating.src.tar.gz
  2. gpg --print-md SHA512 apache-esme-1-0-0-incubating.src.tar.gz > apache-esme-1-0-0-incubating.src.tar.gz.sha
  3. gpg --print-md MD5 apache-esme-1-0-0-incubating.src.tar.gz > apache-esme-1-0-0-incubating.src.tar.gz.md5

Verify the release using this command

gpg --verify apache-esme-1-0-0-incubating.src.tar.gz.asc apache-esme-1-0-0-incubating.src.tar.gz

gpg: Unterschrift vom 02/17/10 15:48:32 mittels RSA-Schlüssel ID 6FACF917 gpg: Korrekte Unterschrift von "Richard Hirsch (CODE SIGNING KEY) <rhirsch@apache.org

"

The contents of the created files looks like this:

output apache-esme-1-0-0-incubating.src.tar.gz.asc: -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (MingW32) iQIcBAABCgAGBQJLfAHAAAoJEItBUOZvrPkXfeQP/ie7n1axfF5xBb/HbtatCUzW TbYIznhhLZ4xq1bitxA5clSveUnH7O8oRsEmCUBbzday90qHhZUzkVEspr30DB/5 j9Tx2+Ov09lShX+L24rKGeL9ReZ5YbiuSxh7WmaESlnSnP3J5NMsG7Um+v2ICyhb NM1HUO7P1D5Xn9LZragOS0dt9VRAEb6h38rbBarRrFjKADf9gLqdkXmv7NgIWWwI AFSJKzUATShT6u4sRJDlauSB0VS8NGfV4F+10OKsmIIHbMyDyTt01chr4KCXcjnf siGHABBPBDUytjx648ohiXJPtmyovBTcqWtn3RF/dneSSCwibKgCGbJQgPCaWxvR uh14gLTdSt2c4VMs0reychMh/fGfAumuPDL2voS+AHc1QCALRiePnqgfxVwW40nP olQP5EPJpVr7vmOrOD29WgxEAlTqDsKLgTAkXAi1sPHpiHapDwu5PalaIMcmw8CS ZBj39pdKFLUQkxgPU08nS/2n6BUcRkNpH6e4ngfQIltSaYN501CUrqi3nLMwx006 3zgTxm/ob6E6z13djolix2w0GQE6hkKDwesCj6K1h/sWp7y9rYiqIqS5A3WO+jAz yij43gkNYzPnjr8Dz8mJM53FWWA+kQvF8E1iesIdTk1s5IaUno9ipqFSHv6wf1TQ PfkCUjE05RyhSY3lDAmY =Y4I/ -----END PGP SIGNATURE----- apache-esme-1-0-0-incubating.{}src.tar.gz.sha apache-esme-1-0-0-incubating.src.tar.gz: 771A97EB 34FD26C1 D431E4EA D7D4FC4C 3971DB42 F50B0B66 C32D601F 70D450FB 06F73667  8E118141 5A83C40A 84C1ABDF 808551DC 10949049 1962C634 FFBFAE69 apache-esme-1-0-0-incubating.{}src.tar.gz.md5 apache-esme-1-0-0-incubating.src.tar.gz: 8E 43 0D DF F8 FE 15 9B  22 47 C2 C0 CC 30 21 2C

Uploading the release candidate to your private space

  1. Logon to psftp with the following command "psftp -l [USERNAME](username.html) @people.apache.org -pw [PASSWORD] [USERNAME]@people.apache.org
  2. Use a psftp to load the files to your private area in the directory "public_html/esme"
  3. The following files should be present:

KEYS apache-esme-1-0-0-incubating.src.tar.gz apache-esme-1-0-0-incubating.src.tar.gz.asc apache-esme-1-0-0-incubating.src.tar.gz.md5 ** apache-esme-1-0-0-incubating.src.tar.gz.sha

Putting the Release Candidate to the first vote on esme-dev

  1. create a vote post on the esme-dev mailing list. The post should have the following format: {quote} Subject: [VOTE](vote.html) Approve the release of apache-esme-incubating-1.0 {quote} {quote}{}Contents: {quote} {quote}Hi,I have posted our candidate for the first Apache release developed within the ESME podling.

This is my second attempt at this release. I've now added the correct licensing for the files in the "esme-java-client" directory

The candidate can be found at

http://people.apache.org/~rhirsch/esme/

See the CHANGES.txt file for details on release contents. The release candidate is a tar archive of the sources inhttps://svn.apache.org/repos/asf/incubator/esme/tags/esme-1.0-incubating/

The MD5 checksum of the apache-esme-incubating-1.0-src.tar.gz release package is A4 9B 04 07 47 66 41 0C FE 01 2D 8B 5C 23 33 18

Please vote on releasing this package as Apache ESME 1.0-incubating. The vote is open for the next 72 hours and passes if a majority of at least three +1 ESME PPMC votes is reached. Assuming the vote passes, I will ask the Incubator PMC to approve the release.

[ ](-.html) +1 Release this package as Apache ESME 1.0-incubating [ ](-.html) -1 Do not release this package because...

Here's my +1.

Thanks in advance for your patience with me as manager of this release.

Dick Hirsch {quote}2. After 72 hours after the vote, count the votes and create a post with the following contents:

{quote}{}Subject: [VOTE](vote.html) [RESULT] ESME 1.0

Contents:

Hello All,

Voting on the ESME 1.0 candidate release has concluded

Results:

6 binding +1 vote

Dick Hirsch +1 Mrinal Wadhwa +1 Vassil Dichev +1 Ethan Jewett +1 Anne Kathrine Petteroe +1 Darren Hague +1

1 non-binding +1 votes

Daniel Koller +1 {quote} h2. Putting the Release Candidate to the second vote on general mailing list

This email should go to the esme-dev and general mailing lists and have the following contents: Subject: VOTE Approve the release of apache-esme-incubating-1.0 Contents: {quote}The ESME community has voted on and approved the release of ESME 1.0. We would now like to request the approval of the Incubator PMC for this release.

Details of the ESME community vote can be found here:http://mail-archives.apache.org/mod_mbox/incubator-esme-dev/201002.mbox/%3Cfa2d9f451002120649u54cdd8b5red151033d655b66a@mail.gmail.com%3E

The candidate can be found at:

http://people.apache.org/~rhirsch/esme/

See the CHANGES.txt file for details on release contents. The release candidate is a tar archive of the sources inhttps://svn.apache.org/repos/asf/incubator/esme/tags/esme-1.0-incubating/

The MD5 checksum of the apache-esme-incubating-1.0- src.tar.gz release package is A4 9B 04 07 47 66 41 0C FE 01 2D 8B 5C 23 33 18

Please vote on releasing this package as Apache ESME 1.0-incubating.

Please vote to publish this release by Thursday, Feb 18 16:03 CET, please include the testing you performed to arrive at your vote [ ](--.html) +1 Publish [ ](--.html) 0 Abstain [ ](--.html) -1 Don't publish, because...

Below is a summary of the vote on the ESME mailing list

Thanks

Dick

---------------

Sender-time Sent at 4:00 PM (GMT+01:00). Current time there: 4:04 PM. ✆ to esme-dev@incubator.apache.org date Mon, Feb 15, 2010 at 4:00 PM subject VOTE [RESULT] ESME 1.0 mailed-by gmail.com

Hello All,

Voting on the ESME 1.0 candidate release has concluded

Results:

6 binding +1 vote

Dick Hirsch +1 Mrinal Wadhwa +1 Vassil Dichev +1 Ethan Jewett +1 Anne Kathrine Petteroe +1 Darren Hague +1

1 non-binding +1 votes

Daniel Koller +1 {quote}