cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Cayenne Website > Release Guide
Date Thu, 22 Sep 2011 17:50:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/1/_/styles/combined.css?spaceKey=CAYSITE&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/CAYSITE/Release+Guide">Release
Guide</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~andrus">Andrus
Adamchik</a>
    </h4>
        <br/>
                         <h4>Changes (28)</h4>
                                 
    
<div id="page-diffs">
                    <table class="diff" cellpadding="0" cellspacing="0">
    
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">Note
that this page is of use for committers only. It describes the general procedure of building
a Cayenne release. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">This
page describes the steps that a Cayenne Release Manager needs to perform to prepare a release.
<br></td></tr>
            <tr><td class="diff-unchanged" > <br>h2. Prerequisites <br>
<br></td></tr>
            <tr><td class="diff-changed-lines" >* A release manager must have
his public key appended to the KEYS file checked in to SVN and the key published on one of
the public key servers. More info can be found <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">here:</span>
<span class="diff-added-words"style="background-color: #dfd;">at</span> http://www.apache.org/dev/release-signing.html
<br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Make sure &quot;apache-releases&quot; repository is configured in {{~/.m2/settings.xml}}
and an appropriate password is setup. See [this page|http://www.apache.org/dev/publishing-maven-artifacts.html]
for details. <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h2. Preparing Sources <br> <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >* Check Sources Compliance with ARAT.
[ARAT|http://code.google.com/p/arat/] (A Release Audit Tool) is a Java tool written by Robert
Burrell Donkin for checking the release files for ASF licensing compliance. To run ARAT, download
the jar _(we are using version 0.5.1)_, and run it against unpacked distro (or the release
tag), read the report and fix any issues. <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{noformat}$
cd cayenne <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{noformat}cd
cayenne <br></td></tr>
            <tr><td class="diff-changed-lines" ><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">$</span>
mvn clean <br><span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">$</span>
java -jar rat-0.5.1.jar `pwd` &gt; report.txt{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">h2.
Building Release Artifacts <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h2.
Preparing Release for the Vote <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
Tag {{cayenne}} directory under the repository trunk (assuming {{X.X}} is a version tag identifying
the release, such as {{&quot;1.2B3&quot;}}): <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Get a trunk SVN checkout of Cayenne. If you are using {{git}} for development, SVN checkout
is still needed to prepare a release with {{maven-release-plugin}}.  <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{noformat}svn
copy https://svn.apache.org/repos/asf/cayenne/main/trunk \ <br>   https://svn.apache.org/repos/asf/cayenne/main/tags/X.X
-m &quot;tagging X.X release&quot; <br>{noformat} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{noformat}svn
co https://svn.apache.org/repos/asf/cayenne/main/trunk cayenne{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
Checkout or switch to the new tag to some directory on the build machine.  <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Tag the SVN and Create Maven Staging Repository <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{noformat}svn
co https://svn.apache.org/repos/asf/cayenne/main/tags/X.X cayenne-X.X{noformat} <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{noformat}cd
cayenne <br>mvn release:clean <br>mvn release:prepare -DpreparationGoals=&quot;clean
install&quot; -DautoVersionSubmodules=true -Passembly,generic,mac,windows{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*Or*
if you&#39;ve done release testing before and have a dedicated local copy: <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">A
problem [described in the documentation|http://www.apache.org/dev/publishing-maven-artifacts.html#prepare-release]
consistently occurs here ... if you are in Europe: &quot;If you&#39;re located in
Europe then release:prepare may fail with &#39;Unable to tag SCM&#39; and &#39;
svn: No such revision X &#39;. Wait 10 seconds and run mvn release:prepare again.&quot;
It fails indeed, and requires a re-run and continue: <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{noformat}cd
existing_checkout_dir <br>svn switch https://svn.apache.org/repos/asf/cayenne/main/tags/X.X/{noformat}
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">{noformat}mvn
release:perform -P gpg [-Dgpg.keyname=B8AF90BF]{noformat} <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
Replace SNAPSHOT version with release version. E.g. using the following Perl script: <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Close the staging repo. Login to https://repository.apache.org/ with Apache ID/password, go
to &quot;Staging Repositories&quot; page. Select a staging repository that was just
created during &quot;{{mvn release:perform}}&quot;, click &quot;Close&quot;.
Take a note of the freshly created staging repository URL. It will be used by the people voting
on Cayenne. It may look like this: https://repository.apache.org/content/repositories/orgapachecayenne-052/
 <br></td></tr>
            <tr><td class="diff-unchanged" > <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">{noformat}$
cd cayenne-X.X <br>$ find . -name pom.xml |xargs perl -i -n -e &#39;s/X-SNAPSHOT/X.X/;
print;&#39; <br>$ svn ci -m &quot;changed POM version of the release tag&quot;{noformat}
<br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">h2.
Building Non-Maven Source and Binary Packages <br></td></tr>
            <tr><td class="diff-unchanged" > <br>* Build source package
(it will be the basis for the binary packages built in the next steps) : <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >h2. Voting <br> <br></td></tr>
            <tr><td class="diff-changed-lines" >* Release files are uploaded to
the release manager&#39;s web directory on <span class="diff-changed-words">{{people.apache.org}}<span
class="diff-added-chars"style="background-color: #dfd;"> and to a Maven staging repo</span>.</span>
<br></td></tr>
            <tr><td class="diff-unchanged" >* The vote is started on cayenne-dev
mailing list. <br>* All committers are encouraged to vote on releases. Committer votes
will be considered by the PMC (particularly -1 votes will be discussed) when making the final
decision, but are not binding. <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" >... wait till it is synched to the
main site and the mirrors. <br> <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">*
[Publishing Maven Artifacts] <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">*
Go back to https://repository.apache.org/ , select the staging repo and click &quot;Release&quot;.
<br></td></tr>
            <tr><td class="diff-unchanged" > <br>h2. After the release <br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>This page describes the steps that a Cayenne Release Manager needs to perform
to prepare a release.</p>

<h2><a name="ReleaseGuide-Prerequisites"></a>Prerequisites</h2>

<ul>
	<li>A release manager must have his public key appended to the KEYS file checked in
to SVN and the key published on one of the public key servers. More info can be found at <a
href="http://www.apache.org/dev/release-signing.html" class="external-link" rel="nofollow">http://www.apache.org/dev/release-signing.html</a></li>
</ul>


<ul>
	<li>Make sure "apache-releases" repository is configured in <tt>~/.m2/settings.xml</tt>
and an appropriate password is setup. See <a href="http://www.apache.org/dev/publishing-maven-artifacts.html"
class="external-link" rel="nofollow">this page</a> for details.</li>
</ul>


<h2><a name="ReleaseGuide-PreparingSources"></a>Preparing Sources</h2>

<ul>
	<li>Export and commit the latest documentation per <a href="/confluence/display/CAYSITE/Documentation+Guidelines"
title="Documentation Guidelines">Documentation Guidelines</a>.</li>
</ul>


<ul>
	<li>Edit UPGRADE-NOTES.txt if there is anything to add there.</li>
</ul>


<ul>
	<li>Check Sources Compliance with ARAT. <a href="http://code.google.com/p/arat/"
class="external-link" rel="nofollow">ARAT</a> (A Release Audit Tool) is a Java tool
written by Robert Burrell Donkin for checking the release files for ASF licensing compliance.
To run ARAT, download the jar <em>(we are using version 0.5.1)</em>, and run it
against unpacked distro (or the release tag), read the report and fix any issues.</li>
</ul>


<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>cd cayenne
mvn clean
java -jar rat-0.5.1.jar `pwd` &gt; report.txt</pre>
</div></div>

<h2><a name="ReleaseGuide-PreparingReleasefortheVote"></a>Preparing Release
for the Vote</h2>

<ul>
	<li>Get a trunk SVN checkout of Cayenne. If you are using <tt>git</tt>
for development, SVN checkout is still needed to prepare a release with <tt>maven-release-plugin</tt>.</li>
</ul>


<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>svn co https://svn.apache.org/repos/asf/cayenne/main/trunk cayenne</pre>
</div></div>

<ul>
	<li>Tag the SVN and Create Maven Staging Repository</li>
</ul>


<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>cd cayenne
mvn release:clean
mvn release:prepare -DpreparationGoals="clean install" -DautoVersionSubmodules=true -Passembly,generic,mac,windows</pre>
</div></div>

<p>A problem <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#prepare-release"
class="external-link" rel="nofollow">described in the documentation</a> consistently
occurs here ... if you are in Europe: "If you're located in Europe then release:prepare may
fail with 'Unable to tag SCM' and ' svn: No such revision X '. Wait 10 seconds and run mvn
release:prepare again." It fails indeed, and requires a re-run and continue:</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn release:perform -P gpg [-Dgpg.keyname=B8AF90BF]</pre>
</div></div>

<ul>
	<li>Close the staging repo. Login to <a href="https://repository.apache.org/" class="external-link"
rel="nofollow">https://repository.apache.org/</a> with Apache ID/password, go to
"Staging Repositories" page. Select a staging repository that was just created during "<tt>mvn
release:perform</tt>", click "Close". Take a note of the freshly created staging repository
URL. It will be used by the people voting on Cayenne. It may look like this: <a href="https://repository.apache.org/content/repositories/orgapachecayenne-052/"
class="external-link" rel="nofollow">https://repository.apache.org/content/repositories/orgapachecayenne-052/</a></li>
</ul>


<h2><a name="ReleaseGuide-BuildingNonMavenSourceandBinaryPackages"></a>Building
Non-Maven Source and Binary Packages</h2>

<ul>
	<li>Build source package (it will be the basis for the binary packages built in the
next steps) :</li>
</ul>


<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn clean install -Passembly,src</pre>
</div></div>


<ul>
	<li>Build binary packages. Take <tt>"assembly/target/cayenne-XXX-src.tar.gz"</tt>,
unpack it somewhere, and perform binary builds from the unpacked directory (NOT FROM SVN OR
GIT CHECKOUT). <em>Release manager may skip running unit tests from here, as shown below,
although release evaluators should use the src assembly for <a href="/confluence/display/CAYSITE/Running+Unit+Tests"
title="Running Unit Tests">unit testing</a> and other kinds of testing.</em></li>
</ul>


<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn clean install -Passembly,generic -Dmaven.test.skip=true</pre>
</div></div>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn clean install -Passembly,mac -Dmaven.test.skip=true</pre>
</div></div>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn clean install -Passembly,windows -Dmaven.test.skip=true</pre>
</div></div>

<p>For further details on a general Cayenne build process check <a href="/confluence/display/CAYSITE/Building+Cayenne"
title="Building Cayenne">this page</a>.</p>

<ul>
	<li>Signing release</li>
</ul>


<p>For more info visit <a href="http://www.apache.org/dev/release-signing.html" class="external-link"
rel="nofollow">this page</a>. Release manager key must be in the project KEYS file.
Signing is a manual procedure not included in the Ant or Maven script. Here is how it might
work ("-u" option can be omitted if you have only one GPG key):</p>

<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>gpg --armor -u B8AF90BF --output cayenne-X.X.tar.gz.asc --detach-sig cayenne-X.X.tar.gz
gpg --print-md MD5 cayenne-X.X.tar.gz &gt; cayenne-X.X.tar.gz.md5
</pre>
</div></div>

<h2><a name="ReleaseGuide-Voting"></a>Voting</h2>

<ul>
	<li>Release files are uploaded to the release manager's web directory on <tt>people.apache.org</tt>
and to a Maven staging repo.</li>
	<li>The vote is started on cayenne-dev mailing list.</li>
	<li>All committers are encouraged to vote on releases. Committer votes will be considered
by the PMC (particularly -1 votes will be discussed) when making the final decision, but are
not binding.</li>
	<li>Each PMC member will do the following before voting on a release:<br/>
 a. download the artifacts<br/>
 b. satisfy themselves that the source matches the appropriate svn tag. This can be done by
diffing the source against a recent svn checkout.<br/>
 c. satisfy themselves that the Apache licensing requirements are met (this will usually be
achieved by ensuring that all notices are in place and verifying that the source matches SVN
since all commits to SVN are possible only if the committer has a CLA on file).<br/>
 d. satisfy themselves that the binary distribution is sane and passes basic usability tests.
For example, that the Cayenne modeler runs and the main jar passes some basic tests.<br/>
 e. satisfy themselves that the source passes agreed unit tests (either by running them manually
or verifying that Hudson has run those tests against the equivalent source). </li>
</ul>



<h2><a name="ReleaseGuide-PublishingtheRelease"></a>Publishing the Release</h2>

<ul>
	<li>Publish assemblies:
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>$ ssh people.apache.org
% cp /path/to/release/artifacts /www/www.apache.org/dist/cayenne/</pre>
</div></div>
<p>... wait till it is synched to the main site and the mirrors.</p></li>
</ul>


<ul>
	<li>Go back to <a href="https://repository.apache.org/" class="external-link" rel="nofollow">https://repository.apache.org/</a>
, select the staging repo and click "Release".</li>
</ul>


<h2><a name="ReleaseGuide-Aftertherelease"></a>After the release</h2>

<ul>
	<li><a href="https://issues.apache.org/jira/secure/project/ManageVersions.jspa?pid=12310903"
class="external-link" rel="nofollow">Tell Jira</a> that the release has been released.
Ensure there is another milestone or release target already created for further work, but
this was probably already done when a branch was created in preparation for release.</li>
	<li>Update the <a href="http://svn.apache.org/repos/asf/cayenne/site/trunk/tlp-site/src/doap/cayenne.rdf"
class="external-link" rel="nofollow">DOAP file</a> (held in the Cayenne svn) which
will update <a href="http://projects.apache.org/projects/cayenne.html" class="external-link"
rel="nofollow">http://projects.apache.org/projects/cayenne.html</a> automatically</li>
	<li>Update Freshmeat with new release number (<a href="http://freshmeat.net/projects/cayenne/"
class="external-link" rel="nofollow">http://freshmeat.net/projects/cayenne/</a>)</li>
	<li>If the release is significant, consider press releases to relevant news sources</li>
	<li>Review the main website pages (front page and why-cayenne especially) to add any
new features</li>
	<li>Add a news item to the Cayenne web site</li>
	<li>Send an email to the Cayenne user and developer lists</li>
	<li>Send a notification email to announceATapachenews.org</li>
	<li>Update <a href="http://en.wikipedia.org/wiki/Apache_Cayenne" class="external-link"
rel="nofollow">http://en.wikipedia.org/wiki/Apache_Cayenne</a></li>
</ul>


<h2><a name="ReleaseGuide-Reference%3A"></a>Reference:</h2>


<ul>
	<li>Apache release publishing guide: <a href="http://www.apache.org/dev/release-publishing.html"
class="external-link" rel="nofollow">http://www.apache.org/dev/release-publishing.html</a></li>
	<li>ARAT: <a href="http://code.google.com/p/arat/" class="external-link" rel="nofollow">http://code.google.com/p/arat/</a></li>
	<li>Signing Releases: <a href="http://www.apache.org/dev/release-signing.html" class="external-link"
rel="nofollow">http://www.apache.org/dev/release-signing.html</a></li>
</ul>

    </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/CAYSITE/Release+Guide">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=9734&revisedVersion=48&originalVersion=47">View
Changes</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message