Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

There is no need to manually deploy snapshots.
Snapshots are automatically deployed by Hudson build to the Nexus snapshot repository at https://repository.apache.org/content/repositories/snapshots/org/apache/wink

Updating Notice files

Code Block

for i in `/usr/bin/find . -name "NOTICE"`; do sed "s/Copyright (c) 2009-2012 The Apache Software Foundation/Copyright (c) 2009-2013 The Apache Software Foundation/g" $i >/tmp/tmp.notice; cp /tmp/tmp.notice $i; done

Performing a Release

For the most part, we follow the same instructions that the maven team uses.http://maven.apache.org/developers/release/releasing.html

Basically, setup your settings.xml file as they described.
After that is setup, you need to update the release_notes.txt in the src/doctrunk, clean wink from your local repository perform the following steps:

...

Code Block
xml
xml
<scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/wink/trunk</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/wink/trunk</developerConnection>
    <url>http://svn.apache.org/viewvc/incubator/wink/trunk</url>
</scm>

To (change the branch name appropriately):

Code Block
xml
xml
<scm>
    <connection>scm:svn:http://svn.apache.org/repos/asf/incubator/wink/branches/wink-1.1-incubating</connection>
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/incubator/wink/branches/wink-1.1-incubating</developerConnection>
    <url>http://svn.apache.org/viewvc/incubator/wink/branches/wink-1.1-incubating</url>
</scm>

...

To find the files that need to be hand-edited:

No Format
find wink-itests -name 'pom.xml' | xargs grep SNAPSHOT
Code Block
find wink-itestitests -name '*.java' | xargs grep SNAPSHOT
find wink-assembly/apache-wink -name "'pom.xml"' | xargs grep SNAPSHOT
find wink-assembly/wink-assembly-aggregatejar* -name "'pom.xml"' | xargs grep SNAPSHOT

In each of these files, you'll find a tag like this:

Code Block
xml
xml
<version>1.1.0-incubating-SNAPSHOT</version>

If, for example, the target version is 1.1.0-incubatingSNAPSHOT, change the tag in each of the places found in your find commands to:

Code Block
xml
xml
<version>1.1-incubating</version>
.0</version>

You can also use find and sed together to change the versions:

No Format

find wink-itests -name 'pom.xml' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;
find wink-itests -name '*.java' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;
find wink-assembly -name 'pom.xml' -type f -exec sed -i 's/1.1.0-SNAPSHOT/1.1.0/g' {} \;

Also read through and edit appropriate changes to the release_notes.txt and wink-assembly/wink-assembly-aggregatejar/DEPENDENCIES files.

Important: commit these changes to SVN!

From the branch, run the following maven command to prepare the project for the release:

...

Running mvn release:prepare will executes the following steps

  • Check that there are no uncommitted changes in the sources
  • Check that there are no SNAPSHOT dependencies
  • Change the version in the poms from x-SNAPSHOT to a new version (you will be prompted for the versions to use)
  • Transform the SCM information in the POM to include the final destination of the tag
  • Run the project tests against the modified POMs to confirm everything is in working order

...

  • Tag the code in the SCM with a version name (this will be prompted for)
  • Bump the version in the POMs to a new value y-SNAPSHOT (these values will also be prompted for

...

  • )
    • NOTE: since we're running the release from the branch, and you want this branch name to match up with the version in the pom.xml files

...

    • within the branch, use the same name on this "development version"

...

    • prompt that you used on the "release version"

...

    • prompt. We'll update the pom.xml files in trunk by hand

...

    • after a successful release vote.

...

  • Commit the modified POMs

You'll have to build some modules by hand to prepare your local repository for the release:perform: (wiki note: why is this needed?)

No Format

cd wink-assembly/wink-assembly-aggregatejar
mvn install -PCIBuild


2. Perform the release

Run the following maven command to build and deploy the release:

...

Running mvn release:perform will executes the following steps

  • Checkout from the tag
  • Build the project and deploy all artifacts to Nexus temporary staging repository while gpg signing all artifacts.


3. Close the staging repository

When the build is done staging, you need to login to the Nexus repository and "close" the staging area. See the Maven page for instructions. That This is very important. After the staging are area is closed, note the URL for the staging area as you will need that it for the vote.


...

4. Call the wink-dev vote

...

Propose a vote on the dev list. Be sure to provide the staging repository, the staging site, release SCM tag and revision number. For instance:

No Format
To:    "wink-dev@incubator.apache.org>
Subject: [VOTE] Release Wink 01.1 (RC1)

I'm calling a vote to release Wink 01.1 (RC1)

The Maven staging area is at:
https://repository.apache.org/content/repositories/winkorgapachewink-staging-014/

The distributions are in:
https://repository.apache.org/content/repositories/winkorgapachewink-staging-014/org/apache/wink/apache-wink/01.1-incubating/

This release is tagged at:
https://svn.apache.org/repos/asf/incubator/wink/tags/wink-01.1-incubating/
  (revision [REVISION_NUMBER]937139)

The vote will be open here for at least 72 hours.

Guide to testing staged releases:
http://maven.apache.org/guides/development/guide-testing-releases.html

[ ] +1
[ ] +0
[ ] -1


5. Unsuccessful Voting

If the vote is unsuccessful, the process will need to be restarted

  • Rollback changes done to POMs
  • delete tag from SCM manually
  • Login to Nexus, and "Drop" the release from the staging repository


...

6. Successful wink-dev Voting, Call the general@incubator vote

...

No Format
To:    "general@incubator.apache.org>
CC: "wink-dev@incubator.apache.org>
Subject: [VOTE] Release Wink 1.1 (incubating)

I'm calling a vote to release Wink 1.1 (incubating) per the process indicated here: 
http://incubator.apache.org/guides/releasemanagement.html#best-practice-incubator-release-vote

The Maven staging area is at:
https://repository.apache.org/content/repositories/orgapachewink-023/

The distributions are in:
https://repository.apache.org/content/repositories/orgapachewink-023/org/apache/wink/apache-wink/1.1.1-incubating/

This release is tagged at:
https://svn.apache.org/repos/asf/incubator/wink/tags/wink-1.1.1-incubating/
(revision 958096)

The vote will be open here for at least 72 hours. Please indicate your 
vote:

[ ] +1 to release Wink 1.1.1 incubating
[ ] +0
[ ] -1 NOT to release Wink 1.1.1 incubating (and why)


...

7. Successful general@incubator vote

...

If the vote passes, you'll need to promote that staging repository to the main location. Login to Nexus to do that as well. See Maven team release page for more details.

...


...

8. Copying distributions to Apache

...

Copy the actual distributions (all artifacts located under apache-wink in Nexus repo) to people.apache.org:/www/www.apache.org/dist/incubator/wink. You can

No Format
create the directory for the release
'cd' into it
'wget -r -l 1 https://repository.apache.org/content/groups/public/org/apache/wink/apache-wink/1.1.2-incubating/' to retrieve the artifacts (url is an example)
'mv repository.apache.org/content/groups/public/org/apache/wink/apache-wink/1.1.2-incubating/* .'
'rm -rf repository.apache.

...

org index.html'


9

...

. Update Wink site
  • Check out Wink site from https://svn.apache.org/repos/asf/incubator/wink/site
  • Update Wink Java-Docs by:
    • Download & extract Java-Docs from distribution source archivearchive; apache-wink-1.1.2-incubating.zip, for example
    • Create new directory under /wink/site/trunk/site/src/site/resources/VERSION and copy extracted Java-Docs
  • Update Wink site Download page with new Wink release artifacts
  • Follow instructions located under /wink/site/trunk/site/how-to.txt to rebuild the site

...


...

10. Update java and pom.xml files in trunk

...

Once the release is successful, and since we ran the release from a branch, the pom.xml files in trunk still have the old version number. You will want to update the version in all of the pom.xml files throughout the project; for example, from 1.1-incubating-SNAPSHOT to 1.1.2-incubating-SNAPSHOT.

This is easy to do with the Maven release plugin. Run the following from trunk (changing the version as appropriate, of course)

No Format
mvn --batch-mode release:update-versions -DdevelopmentVersion=1.1.2-incubating-SNAPSHOT
find wink-itests -name '*.java' -type f -exec sed -i 's/1.1-incubating-SNAPSHOT/1.1-incubating/g' {} \;

Commit your changes to SVN!

Resources

A Guide To Release Management During Incubation http://incubator.apache.org/guides/releasemanagement.html