tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tapestry > Release Process
Date Sat, 02 Jul 2011 11:40:00 GMT
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/12/_/styles/combined.css?spaceKey=TAPESTRY&amp;forWysiwyg=true"
<body style="background: white;" bgcolor="white" class="email-body">
<div id="pageContent">
<div id="notificationFormat">
<div class="wiki-content">
<div class="email">
    <h2><a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Process">Release
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~bobharner">Bob
        <div id="versionComment">
        Reducing the number of places to have to update the version number in the docs<br
                         <h4>Changes (2)</h4>
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >* Update the release number listed
in the following pages in the Confluence wiki: <br>** [Documentation] page: &quot;Current
stable release&quot; number <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">**
Tutorial [Dependencies, Tools and Plugins] page: Tapestry version number at the bottom <br></td></tr>
            <tr><td class="diff-changed-lines" >** Tutorial [Creating The Skeleton
Application] page: Tapestry version number in the archetype <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">(3
places)</span> <br></td></tr>
            <tr><td class="diff-unchanged" >** [Getting Started] page: Tapestry
version number in the archetype <br>** [downloadBoxes] page (part of the home page):
Tapestry version number <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h2><a name="ReleaseProcess-Prerequisites"></a>Prerequisites</h2>
<div class='navmenu' style='float:right; background:#eee; margin:3px; padding:3px'><table
class="tableview" width="100%">
            <tr><th style="padding: 3px 3px 3px 0px">Related Articles</th></tr>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Developer+Bible">Developer
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Release+Process">Release
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Confluence+Site+Setup">Confluence
Site Setup</a>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Developer+Information">Developer

<p>Before creating a release ensure:</p>

	<li>you have setup your own public OpenGPG key signature for signing the distribution</li>
	<li>you can login to <a href="https://repository.apache.org/index.html#stagingRepositories"
class="external-link" rel="nofollow">Nexus</a></li>
	<li>your local <em>settings.xml</em> contains valid SVN and deployment

<h2><a name="ReleaseProcess-SVNandDeploymentCredentials"></a>SVN and Deployment

<p>To successfully create a release, you will need to update your Maven Settings with
the credentials for your SVN user and the deployment user. These credentials are stored in
the Maven Settings file in <em>&#126;/.m2/settings.xml</em>.</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">&lt;settings&gt;






<h2><a name="ReleaseProcess-MaintenanceReleases"></a>Maintenance Releases</h2>

<p>A maintenance release is created from a maintenance branch. If you are creating a
maintenance release, ensure that the scm settings refer to the branch and not to trunk, as
shown in the following example.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">  &lt;scm&gt;
    &lt;connection&gt;scm:svn:https:<span class="code-comment">//svn.apache.org/repos/asf/tapestry/tapestry5/branches/maint-5-2/&lt;/connection&gt;
</span>    &lt;developerConnection&gt;scm:svn:https:<span class="code-comment">//svn.apache.org/repos/asf/tapestry/tapestry5/branches/maint-5-2/&lt;/developerConnection&gt;
</span>    &lt;url&gt;http:<span class="code-comment">//svn.apache.org/viewvc/tapestry/tapestry5/branches/maint-5-2/&lt;/url&gt;
</span>  &lt;/scm&gt;

<h2><a name="ReleaseProcess-ReleaseSteps"></a>Release Steps</h2>

<p>The process can be summarized as:</p>

	<li>Update your <em>Subversion</em> workspace to <tt><a href="https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk"
class="external-link" rel="nofollow">https://svn.apache.org/repos/asf/tapestry/tapestry5/trunk</a></tt></li>
	<li>Manually update the tapestry version in the source code of the Tapestry archetype
(found in quickstart/src/main/resources/archetype-resources/pom.xml) to the version number
about to be released (i.e., strip off "-SNAPSHOT")</li>
	<li>Commit that change to SVN</li>
	<li>First do a "dry run" <tt>mvn release:prepare &#45;DautoVersionSubmodules=true
&#45;DdryRun=true</tt> in order to check that modifications to poms and scm operations
(only listed on the console) are working as expected. To clean up the dry release preparation
perform <tt>mvn release:clean</tt></li>
	<li><tt>mvn release:prepare &#45;DautoVersionSubmodules=true</tt></li>
	<li><tt>mvn release:perform</tt></li>
	<li>Generate and upload Binary / Source distributions
		<li><tt>svn sw</tt> <tt><a href="https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/"
class="external-link" rel="nofollow">https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/</a></tt><em>version</em></li>
		<li>The <tt>ant</tt> build script creates the distributions</li>
		<li>There's some manual work to sign and upload the distributions</li>
	<li>Login to <a href="https://repository.apache.org/index.html#stagingRepositories"
class="external-link" rel="nofollow">Nexus</a> and <b>close</b> the automatically
created staging repository, and note its url</li>
	<li>Use the <a href="https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310833"
class="external-link" rel="nofollow">Manage Versions page</a> in JIRA to add a new
	<li><b>Release</b> the version, moving outstanding issues to the new version</li>
	<li>Generate <a href="https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12310833"
class="external-link" rel="nofollow">HTML Release Notes</a> for the version
		<li>Create a new child page of <a href="/confluence/display/TAPESTRY/Release+Notes"
title="Release Notes">Release Notes</a> (it may already exist)</li>
		<li>Update with text about any unusual aspects of the upgrade (especially, non-backwards
compatible changes)</li>
		<li>Paste the HTML release notes content into the new page (you'll have to use the
{html} macro)</li>
		<li>Update <a href="/confluence/display/TAPESTRY/Release+Notes" title="Release
Notes">Release Notes</a> index page to point to the new page</li>
	<li>Send vote email ... <b>3 days pass</b></li>
	<li>Login to <a href="https://repository.apache.org/index.html#stagingRepositories"
class="external-link" rel="nofollow">Nexus</a> and <b>release</b> the
version's repository
		<li>Enter "Tapestry 5.x.x beta release" (adjust as necessary) for the message</li>
		<li>The version will disappear from the list of repositories after releasing it</li>
	<li>SSH to people.apache.org and copy the Binary / Source distributions to the right
	<li>Once files reach all mirrors, update the Downloads Page</li>
	<li>Create a Confluence blog entry to describe the new release (this will automatically
appear on the Tapestry home page)</li>
	<li>Generate and deploy site documentation:
		<li><tt>mvn  clean site site:deploy &#45;Pjavadoc</tt></li>
		<li>Budget about <em>30 minutes</em> for this to run&#33;</li>
	<li>Update the release number listed in the following pages in the Confluence wiki:
		<li><a href="/confluence/display/TAPESTRY/Documentation" title="Documentation">Documentation</a>
page: "Current stable release" number</li>
		<li>Tutorial <a href="/confluence/display/TAPESTRY/Creating+The+Skeleton+Application"
title="Creating The Skeleton Application">Creating The Skeleton Application</a> page:
Tapestry version number in the archetype</li>
		<li><a href="/confluence/display/TAPESTRY/Getting+Started" title="Getting Started">Getting
Started</a> page: Tapestry version number in the archetype</li>
		<li><a href="/confluence/display/TAPESTRY/downloadBoxes" title="downloadBoxes">downloadBoxes</a>
page (part of the home page): Tapestry version number</li>

<div class='panelMacro'><table class='warningMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/forbidden.gif" width="16"
height="16" align="absmiddle" alt="" border="0"></td><td>Be aware that Maven
will perform some automatic Subversion commits, and even create the new release tag for you&#33;
sure to get those version numbers right; I've found to my dismay that it can be tricky to
correct this after-the-fact.</td></tr></table></div>

<p>There's a couple of steps to moving the distributions; you have to delete the prior
release (unless its a stable release) and get some permissions set up correctly:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
&gt; cd public_html/tapestry-releases/
&gt; ls -l
total 43631
-rw-r--r--  1 hlship  tapestry  8722101 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2
-rw-r--r--  1 hlship  tapestry      195 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 15:58 tapestry-bin-5.2.2.tar.bz2.md5
-rw-r--r--  1 hlship  tapestry  8750103 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz
-rw-r--r--  1 hlship  tapestry      195 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 15:58 tapestry-bin-5.2.2.tar.gz.md5
-rw-r--r--  1 hlship  tapestry  8823868 Oct 24 15:58 tapestry-bin-5.2.2.zip
-rw-r--r--  1 hlship  tapestry      195 Oct 24 15:58 tapestry-bin-5.2.2.zip.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 15:58 tapestry-bin-5.2.2.zip.md5
-rw-r--r--  1 hlship  tapestry  4920211 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2
-rw-r--r--  1 hlship  tapestry      195 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 15:59 tapestry-src-5.2.2.tar.bz2.md5
-rw-r--r--  1 hlship  tapestry  5409252 Oct 24 15:59 tapestry-src-5.2.2.tar.gz
-rw-r--r--  1 hlship  tapestry      195 Oct 24 15:59 tapestry-src-5.2.2.tar.gz.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 15:59 tapestry-src-5.2.2.tar.gz.md5
-rw-r--r--  1 hlship  tapestry  7618776 Oct 24 16:00 tapestry-src-5.2.2.zip
-rw-r--r--  1 hlship  tapestry      195 Oct 24 16:00 tapestry-src-5.2.2.zip.asc
-rw-r--r--  1 hlship  tapestry       33 Oct 24 16:00 tapestry-src-5.2.2.zip.md5
&gt; chmod 664 *
&gt; rm -rf /www/www.apache.org/dist/tapestry/tapestry-*5.2.1*
&gt; mv * /www/www.apache.org/dist/tapestry/

<h2><a name="ReleaseProcess-Notes"></a>Notes</h2>

<p><tt>mvn release:prepare</tt> does a very good job at guessing the right
version numbers (i.e., stripping off the &#45;SNAPSHOT suffix for the release version,<br/>
and incrementing the version number for the new development version). If it's one of your
first releases, consider trying <tt>mvn release:prepare &#45;DdryRun=true</tt>
and manually observing the differences in the poms (this command will not commit the updated
poms - it'll just generate them). See <a href="http://maven.apache.org/plugins/maven-release-plugin/introduction.html"
class="external-link" rel="nofollow">the Maven documentation</a> for more details.</p>

<p>The Maven code assumes it is executing inside a Subversion (not Git+SVN) workspace.
I often create a fresh checkout into a new directory.</p>

<p>The correct response to this prompt:</p>

<div class="indent20 inline" style="margin-left: 20px;"><style type="text/css">div.inline
p:first-child { display: inline; }</style><p>What is the SCM release tag or label
for "Tapestry 5 Project"</p></div>


<div class="indent20 inline" style="margin-left: 20px;"><style type="text/css">div.inline
p:first-child { display: inline; }</style><p>5.X.X</p></div>

<p>This reflects that Tapestry stores its SVN tags in a slightly weird way (that made
<em>perfect</em> sense at the time).</p>

<h2><a name="ReleaseProcess-Atemplateforthevoteemail%3A"></a>A template
for the vote e-mail:</h2>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
<pre>I've created and uploaded a release of Tapestry 5.x.x, ready to be
voted upon.

The binary and source downloads are uploaded to:


and the Maven artifacts staged to:


Please examine these files to determine if the new release, 5.X.X, is ready.

I've also created a 5.X.X tag in Subversion:


On a successful vote, I'll move the files from these directories to
the proper distribution directories and update the Tapestry site documentation.

Vote will run for three days; on success I'll move the voted artifacts
into place and send out appropriate notifications.


<p>I often embellish this template with extra detail.</p>
        <div id="commentsSection" class="wiki-content pageSection">
        <div style="float: right;">
            <a href="https://cwiki.apache.org/confluence/users/viewnotifications.action"
class="grey">Change Notification Preferences</a>
        <a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Process">View
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=23339205&revisedVersion=30&originalVersion=29">View

View raw message