blob: e48240fe20a93153fda5f32745df5d7f32e6aa3f [file] [log] [blame]
~~ $Id$
~~
~~ Licensed to the Apache Software Foundation (ASF) under one
~~ or more contributor license agreements. See the NOTICE file
~~ distributed with this work for additional information
~~ regarding copyright ownership. The ASF licenses this file
~~ to you under the Apache License, Version 2.0 (the
~~ "License"); you may not use this file except in compliance
~~ with the License. You may obtain a copy of the License at
~~
~~ http://www.apache.org/licenses/LICENSE-2.0
~~
~~ Unless required by applicable law or agreed to in writing,
~~ software distributed under the License is distributed on an
~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~~ KIND, either express or implied. See the License for the
~~ specific language governing permissions and limitations
~~ under the License.
~~
-----------
Release Process
-----------
Tiles Release Process
Here you will find the steps to create releases for Tiles.
Prerequisites
To create a release you have to install:
* {{{http://java.sun.com/j2se/1.5.0/}Java 5.0}}. If you are using a newer
version of Java, it is suggested to <<change JAVA_HOME environment variable>>
when calling Maven, so it points to an instance of Java 5.0;
* {{{http://maven.apache.org/}Maven 2}};
* {{{http://www.gnupg.org/}GnuPG}};
* {{{http://www.openssh.com/}OpenSSH}};
* {{{http://www.graphviz.org/}GraphViz}}: use version 2.8. See
{{{building.html}building Tiles}} for the reason of not using the latest
version.
One-time operations
These operations need to be performed only one time.
* Create and publish your GPG key
To create a GPG key, follow the
{{{http://maven.apache.org/developers/release/pmc-gpg-keys.html}guidelines}}
from Maven team. Include it in:
-------------------------------------
https://svn.apache.org/repos/asf/tiles/site/KEYS
-------------------------------------
Publish your GPG key in a PGP key server, such as
{{{http://pgp.mit.edu/} MIT Keyserver}}.
* Create and upload yout SSH key
* Generate your SSH key (in this case we will use DSA encryption):
---------------------------------
ssh-keygen -t dsa
---------------------------------
* Copy your public key to the server:
--------------------------------------
scp ~/.ssh/id_dsa.pub user@people.apache.org:.ssh/authorized_keys
--------------------------------------
* Try to login:
---------------------------------
ssh user@people.apache.org
---------------------------------
If it does not ask you a password, everything is ok.
Repeatable operations
These steps must be performed <<for each>> release.
* Remove snapshot repositories
Snapshot repositories (for libraries and plugins) should be removed from the
main POM before a release. The problem is that a system behind a corporate
firewall/white list cannot access to the snapshot repository URL, thus giving
an error.
* Prepare the release tag
To prepare the release Subversion tag, check out the branch/trunk from where
you are preparing the release and type:
-----------------------------------
mvn release:prepare -Dusername=YOUR_SVN_USER -Dpassword=YOUR_SVN_PASSWORD
-----------------------------------
The plugin interactively will ask you the version to release, the Subversion
tag to use and the next snapshot version. It is reccomended to use the tag:
<<tiles-X.X.X>>.
* Check-out and install the release
Due to an {{{https://issues.apache.org/struts/browse/TILES-149}open bug}}, it
is needed to check out and install, through <<<mvn install>>>, the tag;
otherwise the release process fails.
* Perform the Release
To perform the release, i.e. creating and deploying Maven artifacts, use:
-----------------------------------
mvn -Prelease -Darguments="-Prelease,j4" release:perform
-----------------------------------
* Digest and upload assemblies
* Go into the release assembly target directory:
-----------------------------------
cd target/checkout/assembly/target/assembly/out
-----------------------------------
* Create MD5 and SHA1 files for each files (including ASC files). You can do
it with this simple shell script:
-----------------------------------
#!/bin/sh
for fileitem in *
do
openssl md5 < $fileitem > $fileitem.md5
openssl sha1 < $fileitem > $fileitem.sha1
done
-----------------------------------
* Upload everything to the build site:
-----------------------------------
scp * user@people.apache.org:/www/people.apache.org/builds/tiles/${version}
-----------------------------------
* Release the JIRA version
* In JIRA go to the version that you want to release and release it.
* Create a new version, if it has not been done before.
* Create the release notes and <<write down the link>> that it uses.
* Send announcement for the test build
In <<developers mailing list>> send an announcement for the test build:
-----------------------------------
Subject: [ANNOUNCE] Tiles ${version} test build available
The test build of Tiles ${version} is available.
No determination as to the quality ('alpha,' 'beta,' or 'GA') of Tiles
${version} has been made, and at this time it is simply a "test build". We
welcome any comments you may have, and will take all feedback into
account if a quality vote is called for this build.
Release notes:
* ${jira.release.notes}
Distribution:
* http://people.apache.org/builds/tiles/${version}/
Maven 2 staging repository:
* http://people.apache.org/builds/tiles/${version}/m2-staging-repository/
A vote regarding the quality of this test build will be initiated
within the next couple of days.
-----------------------------------
* Call for a vote
A few days after the test build announcement, call for a vote in
<<developers mailing list>>.
-----------------------------------
Subject: [VOTE] ${version} Release Quality
The Tiles ${version} test build has been available since ${testBuildDate}.
Release notes:
* ${jira.release.notes}
Distribution:
* http://people.apache.org/builds/tiles/${version}/
Maven 2 staging repository:
* http://people.apache.org/builds/tiles/${version}/m2-staging-repository/
If you have had a chance to review the test build, please respond with
a vote on its quality:
[ ] Leave at test build
[ ] Alpha
[ ] Beta
[ ] General Availability (GA)
Everyone who has tested the build is invited to vote. Votes by PMC
members are considered binding. A vote passes if there are at least
three binding +1s and more +1s than -1s.
-----------------------------------
* Post-vote operations
After a vote is finished, and it has been decided that is
<<at least of alpha quality>>, there is the need of a post-vote process.
** Move artifacts
* Move Maven artifacts to the rsync repository. To do it there is an
{{{https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-stage-plugin/}<<experimental stage plugin>>}}
to help in the process (WARNING: not tested yet!).
Merge the staging repository with the rsync repository:
------------------------------------------
mvn stage:copy -Dsource="http://people.apache.org/builds/tiles/${version}/m2-staging-repository/"
-Dtarget="scp://people.apache.org/www/people.apache.org/repo/m2-ibiblio-rsync-repository" -Dversion=${version}
------------------------------------------
* Move assemblies to the Apache distribution mirrors:
-------------------------------------------
ssh user@people.apache.org
cd /www/people.apache.org/builds/tiles/${version}
mkdir /www/www.apache.org/dist/tiles/v${version}/
cp * /www/www.apache.org/dist/tiles/v${version}/
-------------------------------------------
* Upload the <<<KEYS>>> file to the Apache mirrors:
-------------------------------------------
scp KEYS user@people.apache.org:/www/www.apache.org/dist/tiles/v${version}/
-------------------------------------------
** Update the site
* Wait 24 hours to let the mirror sync to the release and then update the
site. In particular you have to update the index and the download pages:
------------------------------------------------
https://svn.apache.org/repos/asf/tiles/site/src/site/xdoc/index.xml
https://svn.apache.org/repos/asf/tiles/site/src/site/apt/download.apt
------------------------------------------------
Build and publish the site:
--------------------------------------
mvn site
mvn site:deploy
--------------------------------------
** Send announcement
Finally, send an an announcement to the <<users>> and <<developers mailing
list>>:
--------------------------------------
Subject: [ANNOUNCE] Tiles ${version} ${quality} released
The Apache Tiles team is pleased to announce the release of Tiles ${version}
${quality}.
Tiles ${version} is available in a binary and a source distribution.
http://tiles.apache.org/download.html
It is also available in the central Maven repository under Group ID
"org.apache.tiles".
The 2.0.x series of the Apache Tiles framework has a minimum
requirement of the following specification versions:
* Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
* Java Standard Edition (Java SE) 1.5
The release notes are available online at:
* ${jira.release.notes}
Please feel free to test the distribution and post your comments to
the user list, or, if appropriate, file a ticket with JIRA.
--------------------------------------
<<You have finished!>>