blob: 41d4c7c7809219fa5706b9122a6ad200f2466c08 [file] [log] [blame]
----
Release Checklist
----
Release Checklist
Quick notes on how to prepare a new release of Tapestry.
Preparation
Send an announcement to the list, asking them to hold off on trunk checkins.
Make <<sure>> (<<sure!>>) you have the latest copies of the Tapestry 5 project and all its modules.
Bumping the Version Number
At this point, the version number of the project POM is 5.0.x-SNAPSHOT.
Modules inherit their version number from the project POM version number.
We need to update the version number across all modules, from 5.0.x-SNAPSHOT to just 5.0.x.
The Ruby script, support/update-versions, can change the version numbers everywhere they need changing. A single parameter on the command line is the new version number.
From the root folder, execute <<<mvn clean install>>>; this should take a couple of minutes.
Add The Next Release to JIRA
Use:
{{{https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=10573}https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=10573}}
to add the next release. Any bugs that are fixed will be tagged with this new version number (5.0.x + 1). Example: after building out 5.0.3, create 5.0.4.
Schedule it above the existing version.
While you're there, use the <<Release>> option for the previous release; this ensures that any existing bugs are not marked as pending for the old release,
and sets the date of release in JIRA.
Generate the Release Notes
JIRA has the ability to generate release notes automatically (this is why it is so important to keep the fix version number accurate).
{{{https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=10573}https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=10573}}
Select the correct version, in HTML format.
Paste the notes to the <<top>> of tapestry-project/src/site/xdoc/release-notes.xdoc
Wrap the title ("Release Notes - Tapestry - Version 5.0.x") inside an \<h1\> element.
Build and Deploy Site
Execute <<<mvn site site:deploy -Pjavadoc>>>
This will build the project site and each of the module sites. The sites go to a server that is periodically copied over to the live server; it can take up to an hour
for changes to show up.
The -Pjavadoc activates a profile that ensure that Javadoc is generated (normally, Javadoc is not generated as it is so time consuming).
Build and Deploy Artifacts
Execute <<<mvn deploy -Pdeploy>>>
This will sign the artifacts using GPG and deploy them. Alas, due to bugs in Maven, it has a tendency to sign the signature files (".asc") and upload those as well; we'll clean that up in a bit.
Since the version number is not longer -SNAPSHOT, each file
will be published to the Tapestry Snapshot Repository ({{{http://people.apache.org/~hlship/tapestry-snapshot-repository/}http://people.apache.org/~hlship/tapestry-snapshot-repository/}}).
Once the vote on the release is approved, the files will be moved from there to the Apache Ibiblio Sync directory, and from there to the world.
Binary / Source Distributions
An Ant script is used to build traditional binary and source distributions. It requires Ant <<1.7.0>>.
Execute <<<ant>>>.
----
$ ant
Buildfile: build.xml
assemble:
[echo] *** Building distribution for project version 5.0.5 ***
[echo] Building binary distribution
[zip] Building zip: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-bin-5.0.5.zip
[tar] Building tar: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-bin-5.0.5.tar.gz
[tar] Building tar: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-bin-5.0.5.tar.bz2
[echo] Building source distribution
[zip] Building zip: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-src-5.0.5.zip
[tar] Building tar: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-src-5.0.5.tar.gz
[tar] Building tar: /Users/Howard/Documents/workspace/tapestry-project/target/dist/tapestry-src-5.0.5.tar.bz2
[echo] Generating MD5 Checksums
[echo] *** Please sign the distributions using GPG before uploading the files. ***
BUILD SUCCESSFUL
Total time: 6 minutes 0 seconds
----
Now, sign the distribution, using <<<for i in target/dist/*.zip target/dist/*.gz target/dist/*.bz2; do echo $i; gpg --armor --detach-sig $i; done>>>
(I set this up as an alias). You'll be prompted for your GPG password six times (sorry!).
Finally, copy the distros up to the tapestry-releases directory, with <<<scp target/dist/* hlship@people.apache.org:public_html/tapestry-releases>>>
(I set this up as an alias, too).
Cleaning up
Alas, Maven leaves a bit of junk behind to be cleaned up.
You must login to people.apache.org and perform a couple of cleanups. Starting in <<<~hlship/public_html>>>, you must execute:
<<<find tapestry-ibiblio-rsynch-repository -name \\*.asc.\\* | xargs rm>>>
This deletes lots of excess GnuPG signature files that were inadvertently created and uploaded.
And, of course, permissions are never quite right:
<<<chmod -R ug+w tapestry-ibiblio-rsynch-repository/ tapestry-releases/>>>
Commit Changes
Commit changes to the project.
Tag In Subversion
You must the source in SVN, copying the trunk folder to tags/releases/5.0.x. The SVN tags/releases folder must
already exist, the specific folder must not.
I do this from Eclipse, but the command line (for example) is pretty straight forward (and I may create a script to help with this):
<<<copy -rHEAD https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.0.x>>>
Run the vote
Send a "[VOTE] Tapestry Release 5.0.x" message onto the dev@tapestry.apache.org mailing list.
----
I've created and uploaded a release of Tapestry 5.0.x, ready to be voted upon.
The files are uploaded to:
http://people.apache.org/~hlship/tapestry-releases/
and a Maven repository:
http://people.apache.org/~hlship/tapestry-ibiblio-rsynch-repository/
Please examine these files to determine if a new preview release, 5.0.x, is ready.
I've also created a 5.0.x tag in Subversion:
http://svn.apache.org/viewvc/tapestry/tapestry5/tags/releases/5.0.x/
On a successful vote, I'll move the files from these directories to the proper distribution directories.
Vote will run for three days; on success I'll move the voted artifacts into place and send out appropriate notifications.
----
On success: roll it out!
You need to ssh to people.apache.org.
----
> cd ~hlship/public_html/tapestry-releases/
> chmod 664 *
> mv * /www/www.apache.org/dist/tapestry/
> rm /www/www.apache.org/dist/tapestry/*-5.0.4*
----
Adjust the last line to remove the previous release. Only the current release should be in the dist folder.
The Maven artifacts are a little trickier, since there's the whole Maven folder hiearchy to deal with.
----
> cd ~hlship/public_html/tapestry-ibiblio-rsynch-repository/
> rsync -av * /www/people.apache.org/repo/m2-ibiblio-rsync-repository
----
The aritfacts copied to m2-ibiblio-rsync-repository will (eventually) by copied to the central Maven ibiblio repository, where they will be
visible to every Maven user.
Wait 24 Hours
It takes up to 24 hours for all the mirrors to sync, to don't go announcing the new release just yet.
Update the Downloads Page
The downloads page is inside the tapestry-site project as, src/site/apt/download.apt.
If you should edit the large block concerning Tapestry 5, updating the version number. There is no need (at least until we have a final release of Tapestry 5) to keep the links
to the old version number.
After making the changes, and checking it in to Subversion, you can build and deploy the site.
After deployment, it takes up to an hour for the changes to be visible.
Advance the Version Numbers
This is optional but is useful, go find all those version numbers again and set them to 5.0.(n+1)-SNAPSHOT. So, if you just released 5.0.3, set all the version numbers to 5.0.4-SNAPSHOT. Again,
use the support/update-versions Ruby script.