| ~~ $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://www.oracle.com/technetwork/java/javase/overview/index.html}Java 7}}. If you are using a newer |
| version of Java <<change JAVA_HOME environment variable>> |
| when calling Maven, so it points to an instance of Java 7; |
| |
| * {{{http://maven.apache.org/}Maven 3.0.5+}}; |
| |
| * {{{http://www.gnupg.org/}GnuPG}}; |
| |
| * {{{http://www.openssh.com/}OpenSSH}}; |
| |
| * {{{http://www.graphviz.org/}GraphViz}}; |
| |
| 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://www.apache.org/dev/openpgp.html}guidelines}}. |
| 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 rsa |
| --------------------------------- |
| |
| * Copy your public key to the server: |
| |
| -------------------------------------- |
| scp ~/.ssh/id_rsa.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. |
| |
| * Modify <<<settings.xml>>> |
| |
| Your <<<settings.xml>>> must be modified to allow deployment. |
| |
| This is the minimal configuration, obviously if you already have a <<<settings.xml>>> file, |
| you must edit it: |
| |
| --------------------------- |
| <settings xmlns="http://maven.apache.org/POM/4.0.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 |
| http://maven.apache.org/xsd/settings-1.0.0.xsd"> |
| <servers> |
| <server> |
| <id>apache-site</id> |
| <username>YOUR_APACHE_USERNAME</username> |
| <filePermissions>664</filePermissions> |
| <directoryPermissions>775</directoryPermissions> |
| </server> |
| <server> |
| <id>apache.snapshots.https</id> |
| <username>YOUR_APACHE_USERNAME</username> |
| <password>YOUR_APACHE_PASSWORD</password> |
| </server> |
| <server> |
| <id>apache.releases.https</id> |
| <username>YOUR_APACHE_USERNAME</username> |
| <password>YOUR_APACHE_PASSWORD</password> |
| </server> |
| </servers> |
| <profiles> |
| <profile> |
| <id>release</id> |
| <properties> |
| <gpg.passphrase>YOUR_SECRET_PHRASE</gpg.passphrase> |
| </properties> |
| </profile> |
| </profile> |
| </profiles> |
| </settings> |
| --------------------------- |
| |
| Repeatable operations |
| |
| These steps must be performed <<for each>> release. |
| |
| * 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 recommended to use the tag: |
| <<tiles-X.X.X>>. |
| |
| See also {{{http://www.apache.org/dev/publishing-maven-artifacts.html}the recommendations of the ASF}}. |
| |
| * Perform the Release |
| |
| To perform the release, i.e. creating and deploying Maven artifacts, use: |
| |
| ----------------------------------- |
| mvn release:perform -Duser.name=YOUR_PEOPLE_APACHE_SSH_USER -Darguments="-Duser.name=YOUR_PEOPLE_APACHE_SSH_USER" |
| ----------------------------------- |
| |
| It should compile and test everything, build and upload the artifacts and the website for the project. |
| |
| * Close the staging repository |
| |
| Login to {{{https://repository.apache.org} Nexus repository}} using your Apache LDAP credentials. |
| Click on "Staging". Then click on "tiles" in the list of repositories. |
| In the panel below you should see an open repository that is linked to your username and ip. |
| Right click on this repository and select "Close". |
| This will close the repository from future deployments and make it available for others to view. |
| If you are staging multiple releases together, skip this step until you have staged everything. |
| Enter the name and version of the artifact being released in the "Description" field and then click "Close". |
| This will make it easier to identify it later. |
| |
| * Verify the staged artifacts |
| |
| If you click on your repository, a tree view will appear below. |
| You can then browse the contents to ensure the artifacts are as you expect them. |
| Pay particular attention to the existence of *.asc (signature) files. |
| If the you don't like the content of the repository, right click your repository and choose "Drop". |
| You can then rollback your release and repeat the process. |
| |
| Note the repository URL, you will need this in your vote email. |
| |
| * Verify the uploaded assemblies |
| |
| * go to the destination directory on people.apache.org (cd /www/people.apache.org/builds/tiles/${version}). |
| |
| * check the presence of the 3 distributions (bin, doc and src), and their signature files (*.asc, *.md5, *sha1). |
| |
| * 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: |
| |
| * https://repository.apache.org/content/repositories/tiles-[YOUR REPOSITORY ID]/ |
| |
| 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: |
| |
| * https://repository.apache.org/content/repositories/tiles-[YOUR REPOSITORY ID]/ |
| |
| 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. |
| |
| ** Promote staged artifacts |
| |
| Once the release is deemed fit for public consumption it can be transfered to a production repository where it will be available to all users. |
| |
| Login to {{{https://repository.apache.org}Nexus repository}} again. |
| Click on "Staging" and then on the repository with id "tiles-staging". |
| Find your closed staging repository, right click on it and choose "Promote". |
| Select the "Releases" repository and click "Promote". |
| |
| Next click on "Repositories", select the "Releases" repository |
| and validate that your artifacts exist as you expect them. |
| |
| ** Move assemblies |
| |
| * 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}/ |
| ------------------------------------------- |
| |
| ** 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 3.0.x series of the Apache Tiles framework has a minimum |
| requirement of the following specification versions: |
| |
| * Java Servlet 2.5 and JavaServer Pages (JSP) 2.1 |
| * Java Standard Edition (Java SE) 1.6 |
| |
| 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!>> |