From commits-return-2329-apmail-openjpa-commits-archive=openjpa.apache.org@openjpa.apache.org Wed Aug 29 23:10:34 2007 Return-Path: Delivered-To: apmail-openjpa-commits-archive@www.apache.org Received: (qmail 46139 invoked from network); 29 Aug 2007 23:10:34 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 29 Aug 2007 23:10:34 -0000 Received: (qmail 84854 invoked by uid 500); 29 Aug 2007 23:10:29 -0000 Delivered-To: apmail-openjpa-commits-archive@openjpa.apache.org Received: (qmail 84837 invoked by uid 500); 29 Aug 2007 23:10:29 -0000 Mailing-List: contact commits-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list commits@openjpa.apache.org Received: (qmail 84828 invoked by uid 99); 29 Aug 2007 23:10:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Aug 2007 16:10:29 -0700 X-ASF-Spam-Status: No, hits=-96.2 required=10.0 tests=ALL_TRUSTED,HTML_MESSAGE,MIME_HTML_ONLY,WHOIS_MYPRIVREG X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Aug 2007 23:11:20 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 0B93371418F for ; Wed, 29 Aug 2007 16:10:00 -0700 (PDT) Message-ID: <25980580.1188429000018.JavaMail.www-data@brutus> Date: Wed, 29 Aug 2007 16:10:00 -0700 (PDT) From: confluence@apache.org To: commits@openjpa.apache.org Subject: [CONF] OpenJPA: Releasing OpenJPA (page edited) MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org
Page Edited : = openjpa : Releasing OpenJPA

Releasing OpenJPA has been edited by Marc Prud'hommeaux (Aug 29, 2007).

Change summary:

Updated release instructions t= o reflect new procedures

(View changes)

Content:

Making an OpenJ= PA Release

These instructions guide the release manager through the steps of making= an official OpenJPA release.

Prerequisites

    =09
  1. You should read the OpenJPA Release Policy to= decide on the name of the new release, based on the content.
  2. =09
  3. You should read the Apache Release FAQ=3D""
  4. =09
  5. You must have shell access to people.apache.org
  6. =09
  7. You must have the following utilities installed on your local machin= e and available in your path:

<= /a>Tasks that need to be performed for each release

3D""In the examples below, it is assumed that the release nam= e will be 1.0.1, and that the current checked-in version name is = 1.0.1-SNAPSHOT and stored in the branch named 1.0.x.
Monday, 12:00 Make sure the One time setup = steps have been performed
Monday, 12:01 Create a sub-branch off of the parent branch fr= om which to make the release. Releasing from a branch will allow any cosmet= ic changes that need to be made for the release to be approved to be done w= ithout preventing other more disruptive advances in the trunk from potentia= lly causing problems with the release. A branch can be made by running:
svn copy -m "OpenJPA Release 1.0.1 branch" \
  https://svn.apache.org/repos/asf/openjpa/branches/1.0.x \
  https://svn.apache.org/repos/asf/openjpa/branches/1.0.1
Monday, 12:02 Check out a clean branch from which to build th= e release:
svn checkout https://svn.apache.org/repos/asf/open=
jpa/branches/1.0.1
cd 1.0.1
Monday, 12:03 Update all the POMs to remove "-SNAPSHOT" suffi= x from the version. If you have perl installed, you can easily do it with a= single command:
perl -pi -e "s;<version>1.0.1-SNAPSHOT</v=
ersion>;<version>1.0.1</version>;g" pom.xml */pom.xml */*/po=
m.xml
Monday, 12:10 Verify that LICENSE.txt contains up to date lic= enses for any dependencies which are included in our distribution.
Any jars or source code which is included with the OpenJPA dist= ribution that is not covered by the Apache license must be noted in LICENSE= .txt. Two examples of this are the persistence and orm dtds (licensed under= the CDDL) and Serp. If any new non Apache dependencies have been introduce= d they will have to be covered here as well. If any discrepancies are found= update LICENSE.txt and commit the changes.
Monday, 12:15 Update BUILDING.txt, CHANGES.txt and RELEASE-NO= TES.html
    =09
  • BUILDING.txt should be included in the source tarball and contains i= nstructions on how to build OpenJPA. Prior to shipping a release we should = ensure that those instructions are accurate.
  • =09
  • CHANGES.txt contains a text representation of all the changes which = have been made since the preceding release. Most of the contents of this fi= le can be generated through JIRA's release notes mechanism here3D""
  • =09
  • RELEASE-NOTES.html contains general information on the OpenJPA proje= ct as well as an html version of the changes since the preceding version. T= he html change log may also be generated via JIRA.
Monday, 12:20 Commit the POM changes
svn commit -m "Updated to version 1.0.1 for the re=
lease"
Monday, 12:21 Perform an initial build and install it in the = local repository (this step is only required because of an open bug3D"" with Maven= 's javadoc plugin):
mvn clean install -Dtest=3Dfalse
Monday, 12:23 Now build the release locally, which will build= and test, run the Apache Release Audit Tool to verify license headers, generate= the javadoc and docbook PDF and HTML, run through the JPA TCK, build the s= ource and binariy assemblies in target/site/downloads/, and sign the= release files.
export MAVEN_OPTS=3D-Xmx1000m
mvn --batch-mode deploy site -Ptest-derby -Ptck-profile -Pexamples-profile =
\
    -Plicense-verify-profile -Pjavadoc-profile -Pdocbook-profile -Psign-rel=
ease \
    -Djava14.jar=3D${JAVA_HOME}/../../1.4/Classes/classes.jar \
    -Dtck.zip=3D${HOME}/.m2/privaterepos/jpa-1_0b-tck.zip

3D""This operation will also sign the release files with the gpg utility using the <username>@apache.org key. If your code si= gning key is under a different address, specify it by appending the followi= ng argument to the command above: -Dopenjpa.release.keyAlias=3Dmysignin= galias@somedomain.org

3D""The java14.jar path should be changed to the local i= nstall path for the JDK 1.4 rt.jar so that JDK 1.4 verification can take pl= ace.

3D""The tck.zip path should be changed to the local inst= all path to the JPA TCK so that the TCK can be run against the release.
Monday, 13:00 Verify the signatures:
 
gpg --multifile --verify target/site/downloads/*.a=
sc
Monday, 13:01 Upload the release candidate to http://openjpa.apache.o= rg/builds/1.0.1/downloads/:
mvn site:deploy
3D""

Bear in mind that uploads to people.apache.org/www/openjpa.apache.org= /builds/ are not visible at http://openjpa.apache.org/builds3D"" until after the hourly sy= nchronization has taken place, as described at http://www.apache.org/dev/project-site.html<= sup>3D""= .

Monday, 15:00 Start a vote for the release on the dev@openjpa.apache.org3D"" mailing list. Votes made by committers and members of the OpenJPA proje= ct are considered binding for this vote. For an example of the mail, see this archived 1.0.0 vote3D""
Tuesday, Wednesday While waiting for the vote to complete, perform= whatever manual review and testing on the release you deem appropriate.
Thursday, 15:00 If the vote is successful after 3 days tally th= e votes in an email to d= ev@openjpa.apache.org=3D"", like this one3D"".
Thursday, 15:10 Make the OpenJPA assemblies available to the Ap= ache mirroring system by copying them over on people.apache.org:
ssh people.apache.org
cp -r /www/openjpa.apache.org/builds/1.0.1/downloads /www/www.apache.org/di=
st/openjpa/1.0.1
3D""

The OpenJPA binary release will be available via the link http://www.apache.org/dyn/closer.cgi/openjpa/1.0.1/apache-openjpa-= 1.0.1-binary.zip3D"" after 24 hours, as per the Apache mirroring information3D"".

Thursday, 15:15 Now that the release is locked down, convert th= e writeable 1.0.1 branch to a (du jure) read-only tag:
svn mv -m "OpenJPA Release 1.0.1 tag" \
  https://svn.apache.org/repos/asf/openjpa/branches/1.0.1 \
  https://svn.apache.org/repos/asf/openjpa/tags/1.0.1
Thursday, 15:16 Check out the parent branch and bump up the rel= ease number to be the next snapshot version:
svn checkout https://svn.apache.org/repos/asf/open=
jpa/branches/1.0.x
cd 1.0.x
perl -pi -e "s;<version>1.0.1-SNAPSHOT</version>;<version>=
;1.0.2-SNAPSHOT</version>;g" pom.xml */pom.xml */*/pom.xml
svn commit -m "Updating version in branch to 1.0.2-SNAPSHOT"
Thursday, 15:20 Update the http://cwiki.apache.org/openjpa/downloads.html3D"" page with links to the download mirrors, using the existing entri= es as templates.
3D""All artifacts (apache-openjpa-1.0.1-binar= y.zip and apache-openjpa-1.0.1-source.zip) must link to t= he mirrors, but signatures (apache-openjpa-1.0.1-binary.zip.asc and = apache-openjpa-1.0.1-source.zip.asc) must not link to mirrors= .
Thursday, 15:30 The documentation on the server-side must manua= lly be extracted on people.apache.org, and the links at http://openjpa.apache.org/= documentation.html3D"" need to be updated with the new versions and= the "latest" documentation symbolic links need to be updated:
cd /www/openjpa.apache.org/builds/1.0.1/
unzip downloads/apache-openjpa-1.0.1-binary.zip
rm /www/openjpa.apache.org/docs/latest
ln -fvs ../builds/1.0.1/apache-openjpa-1.0.1/docs/ /www/openjpa.apache.org/=
docs/latest

Then point the links on http://openjpa.apache.org/documentation.html3D"" to:
Thursday, 15:45 Merge the staged maven2 repository jars to with= the official repository to rsync. This is currently a difficult process th= at requires the maven-staging-plugin, which much be built from sourc= e. The process looks something like this (executed in the root of your loca= l OpenJPA checkout):
svn co http://svn.apache.org/repos/asf/maven/plugi=
ns/trunk/maven-stage-plugin/ /tmp/maven-stage-plugin
mvn -f /tmp/maven-stage-plugin/pom.xml clean install
find . \
    -name m2-repository -not -path "*openjpa-project*" \
    -exec mvn -f /tmp/maven-stage-plugin \
    stage:copy -Dsource=3Dfile://{} \
    -Dtarget=3Dscp://people.apache.org/www/people.apache.org/repo/m2-ibibli=
o-rsync-repository \
    -Dversion=3D1.0.1 \;
3D""

This process requires Maven 2.0.5. It is currently quite delicate and er= ror-prone. Once the maven-stage-plugin is released, it should be pos= sible to make it more automated.

Thursday, 16:00 Update the JIRA versions <= sup>3D""= page to mark the version as "released", and set the date to the= date that the release was approved. You may also need to make a new releas= e entry for the subsequent release.
Friday, 16:00 After the mirrors have had time to update (24 h= ours to be on the safe side), make a news announcemen= t3D"" on the OpenJPA wiki.
3D""Once the news item is made= , it won't show up on the f= ront page3D"" unless you make some minor edit to the containing pag= e (e.g., adding a newline somewhere).
Friday, 16:05 Make an announcement about the release on the <= span class=3D"nobr">users@openjpa.apache.= org3D"" list (and, for major releases, on the announce@apache.org3D"" list as per= the Apache Announcement Mailing Lists page3D""). The = announcement might look something like this3D"". =
Friday, 16:10 Make an announcement for the freshmeat.net OpenJPA project3D"" (optional)
Friday, 17:00 Have a beer and enjoy your weekend while the wo= rld's grateful programmers revel in yet another high-quality release of Apa= che OpenJPA!

One time setup

These setup steps only need to be performed on a particular machine once= .

3D""Developers using Linux workstations can skip over the ref= erences to PuTTY and Cygwin

Create and ins= tall a SSH key

1 Install PuTTY
2 Use PuttyGen to create a SSH key (see Putty hel= p for details)
3 Use PuTTY to ssh to people.apache.org
4 Create a ~/.ssh folder
5 pscp your SSH public key to ~= /authorized_keys
6 ssh to people.apache.org
7 Create a ~\.ssh folder and move a= uthorized_keys there
8 Configure putty to use your private key and sav= e the session

Create a PGP key

1 Install cgywin, including utils/gpg
2 Generate a key with $ gpg --gen-key
3 Backup your cygwin home directory to another me= dia
4 Add your key to https://svn.apache.org/repos/as= f/openjpa/site/docs/KEYS=3D""

Updat= e Maven settings for our servers

1 Create a settings.xml under .m2 (in your Docume= nt and Settings folder in Windows)
 
se= ttings.xml
<settings xmlns=3D"ht=
tp://maven.apache.org/POM/4.0.0"
          xmlns:xsi=3D"http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation=3D"http://maven.apa=
che.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">=
;
    <servers>
       <server>
          <id>people.apache.org</id>
          <username>$USERNAME</username>
          <privateKey>$PATH_TO_PRIVAT=
E_KEY</privateKey>
          <directoryPermissions>775</directoryPermissions>
          <filePermissions>644</filePermissions>
       </server>
    </servers>   =20
</settings>

Expose = a copy of known hosts to Maven

1 From cygwin, ssh to people.apache.org, save the= public key if prompted, and exit
  cygwin will save the known hosts to your &#= 126;/.ssh folder, but the script cannot access it there (from Windows)=
2 From cygwin (not Windows) create another .s= sh folder at 3D=
3 Copy the known_hosts file to the new <= tt>.ssh folder

Resources