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. h2. Preparation * Create a release tag in in Apache Jira * Make sure all issues tagged with the release are finished * Is the correct version tag set in the pom.xml? - Should be "apache-esme-\[VERSION-NO\]-incubating" * Are the current developers in the pom-xml? * Are all the maven dependencies pointing to reproducible versions - not snapshots. * Are all the maven dependencies correctly licensed? Do a "mvn site" and check the licenses. * Are there any unused dependencies? Do a "mvn dependency:analyze" to check. * Update the CHANGES.TXT file based on the JIRA output for that release * Update the README.TXT if necessary * To upload the release on your private people.apache.org space, you must first create a directory "public_html" with a subdirectory "esme". The signed files go here. h2. Signing Preparation In order to sign the release, you must first create a private PGP key. {color:#ff0000}Look here for details{color} h2. Cutting a release # do a svn update with the following URL "_https://svn.apache.org/repos/asf/incubator/esme_" to an empty directory # delete or rename your .m2/repository directory # Is the release able to be compiled?: do a "mvn compile. There should be no errors. # Are all tests successful? do a "mvn test". There should be no tests that fail # Is the release runnable? Do a "mvn jetty:run". Can you start ESME and perform the basic tests ({color:#ff0000}List missing{color}) # Tag the release via SVN. The tag should be called "apache-esme-\[VERSION-NO\]-incubating" # Use SVN export on the SVN tagged directory to create a directory of files that doesn't include any SVN-related files. # Create a tar file based on that directory. Gzip that file. The file should be named apache-esme-\[VERSION-NO\]-incubating.src.tar.gz". Once other types of files (war, etc) are released, then other tar file names may be necessary h2. Testing the release # Unpack the tar file in an empty directory # Remove the maven .m2/repository # Attempt to build ESME with a "mvn test jetty:run" h2. Signing the release Perform the following steps (here using gpg on a Windows box) # gpg \--armor \--output apache-esme-1-0-0-incubating.src.tar.gz.asc \--detach-sig apache-esme-1-0-0-incubating.src.tar.gz # gpg \--print-md SHA512 apache-esme-1-0-0-incubating.src.tar.gz > apache-esme-1-0-0-incubating.src.tar.gz.sha # 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|mailto: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 h2. Uploading the release candidate to your private space # Logon to psftp with the following command "psftp \-l \[USERNAME\]@people.apache.org \-pw \[PASSWORD\] \[USERNAME\]@people.apache.org # Use a psftp to load the files to your private area in the directory "public_html/esme" # 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 h2. Putting the Release Candidate to the first vote on esme-dev # create a vote post on the esme-dev mailing list. The post should have the following format: {quote} *Subject*: _\[VOTE\] 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 in[https://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. \[ \] \+1 Release this package as Apache ESME 1.0-incubating \[ \] \-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\]\[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 in[https://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 \[ \] \+1 Publish \[ \] 0 Abstain \[ \] \-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}