tapestry-commits 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 Wed, 04 May 2011 23:42:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/12/_/styles/combined.css?spaceKey=TAPESTRY&amp;forWysiwyg=true"
type="text/css">
    </head>
<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
Process</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~bobharner">Bob
Harner</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Added 4 more wiki pages to edit for updating version number<br />
    </div>
        <br/>
                         <h4>Changes (1)</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" >** {{mvn  clean site site:deploy \-Pjavadoc}}
<br>** Budget about _30 minutes_ for this to run\! <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Update the release number listed in the following pages in the Confluence wiki: <br>**
[Documentation] page: &quot;Current stable release&quot; number <br>** Tutorial
[Dependencies, Tools and Plugins] page: Tapestry version number at the bottom <br>**
Tutorial [Creating The Skeleton Application] page: Tapestry version number in the archetype
(3 places) <br>** [Getting Started] page: Tapestry version number in the archetype <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-unchanged" >{warning} <br>Be aware that
Maven will perform some automatic Subversion commits, and even create the new release tag
for you\! Make <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </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>
                        <tr>
            <td>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Confluence+Site+Setup">Confluence
Site Setup</a>
        
                                            </td>
        </tr>
                <tr>
            <td>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Developer+Bible">Developer
Bible</a>
        
                                            </td>
        </tr>
                <tr>
            <td>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Developer+Information">Developer
Information</a>
        
                                            </td>
        </tr>
                <tr>
            <td>
                                 <span class="icon icon-page" title=Page>Page:</span>
                         <a href="/confluence/display/TAPESTRY/Release+Process">Release
Process</a>
        
                                            </td>
        </tr>
            </table>
</div>

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

<ul>
	<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
credentials</li>
</ul>



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

<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;

   ...

   &lt;servers&gt;
      &lt;server&gt;
         &lt;id&gt;svn.apache.org&lt;/id&gt;
         &lt;username&gt;youruser&lt;/username&gt;
         &lt;password&gt;secretpassword&lt;/password&gt;
      &lt;/server&gt;

      &lt;server&gt;
         &lt;id&gt;apache.releases.https&lt;/id&gt;
         &lt;username&gt;youruser&lt;/username&gt;
         &lt;password&gt;secretpassword&lt;/password&gt;
      &lt;/server&gt;
   &lt;/servers&gt;

   ...

&lt;/settings&gt;</pre>
</div></div>

<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;
</pre>
</div></div>


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

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

<ul>
	<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
	<ul>
		<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>
	</ul>
	</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
version</li>
	<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
	<ul>
		<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>
	</ul>
	</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
	<ul>
		<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>
	</ul>
	</li>
	<li>SSH to people.apache.org and copy the Binary / Source distributions to the right
directory</li>
	<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:
	<ul>
		<li><tt>mvn  clean site site:deploy &#45;Pjavadoc</tt></li>
		<li>Budget about <em>30 minutes</em> for this to run&#33;</li>
	</ul>
	</li>
	<li>Update the release number listed in the following pages in the Confluence wiki:
	<ul>
		<li><a href="/confluence/display/TAPESTRY/Documentation" title="Documentation">Documentation</a>
page: "Current stable release" number</li>
		<li>Tutorial <a href="/confluence/display/TAPESTRY/Dependencies%2C+Tools+and+Plugins"
title="Dependencies, Tools and Plugins">Dependencies, Tools and Plugins</a> page:
Tapestry version number at the bottom</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 (3 places)</li>
		<li><a href="/confluence/display/TAPESTRY/Getting+Started" title="Getting Started">Getting
Started</a> page: Tapestry version number in the archetype</li>
	</ul>
	</li>
</ul>


<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;
Make<br/>
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/
&gt;
</pre>
</div></div>



<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>

<p>is</p>

<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
panelContent">
<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:

http://people.apache.org/~XXX/tapestry-releases/

and the Maven artifacts staged to:

https://repository.apache.org/content/repositories/orgapachetapestry-XXX/

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:

http://svn.apache.org/viewvc/tapestry/tapestry5/tags/releases/5.X.X/

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.

</pre>
</div></div>

<p>I often embellish this template with extra detail.</p>
    </div>
        <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>
        </div>
        <a href="https://cwiki.apache.org/confluence/display/TAPESTRY/Release+Process">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=23339205&revisedVersion=28&originalVersion=27">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message