servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache ServiceMix > Release Guide
Date Thu, 06 Jan 2011 06:19:01 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/1810/9/13/_/styles/combined.css?spaceKey=SM&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/SM/Release+Guide">Release
Guide</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~ffang">Freeman
Fang</a>
    </h4>
        <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" >{code} <br># stage the release
for a vote <br></td></tr>
            <tr><td class="diff-changed-lines" >Note: If you&#39;re on Mac
OSX 10.5, for a  known  <span class="diff-deleted-words"style="color:#999;background-color:#fdd;text-decoration:line-through;">issue[1],</span>
<span class="diff-added-words"style="background-color: #dfd;">[issue|http://subversion.tigris.org/issues/show_bug.cgi?id=3059],</span>
you need provide your apache svn user/password <br></td></tr>
            <tr><td class="diff-unchanged" >mvn release:prepare -Dusername=ffang
-Dpassword=******* <br></td></tr>
            <tr><td class="diff-deleted-lines" style="color:#999;background-color:#fdd;text-decoration:line-through;">[1]http://subversion.tigris.org/issues/show_bug.cgi?id=3059
<br></td></tr>
            <tr><td class="diff-unchanged" >{code} <br>mvn release:perform
<br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
        </table>
</div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <p>How to create and announce a ServiceMix release.</p>

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

<p>To prepare and perform a release you must be at least at Apache ServiceMix Committer.</p>

<ul>
	<li>each and every release must be <a href="http://www.apache.org/dev/release-signing.html"
class="external-link" rel="nofollow">SIGNED</a></li>
	<li>your public key should also be cross-signed by other Apache committers (not required,
but suggested)</li>
	<li>make sure you have all Apache servers defined in your <a href="http://maven.apache.org/developers/committer-settings.html"
class="external-link" rel="nofollow">settings.xml</a></li>
	<li>use Maven 2.0.x or 2.2..x</li>
</ul>


<p>Your settings.xml should look like:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-xml">
<span class="code-tag">&lt;settings&gt;</span>
  ...
  <span class="code-tag">&lt;profiles&gt;</span>
    <span class="code-tag">&lt;profile&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>release<span class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;properties&gt;</span>
        <span class="code-tag">&lt;gpg.passphrase&gt;</span> <span
class="code-tag"><span class="code-comment">&lt;!-- YOUR KEY PASSPHRASE --&gt;</span></span>
<span class="code-tag">&lt;/gpg.passphrase&gt;</span>
      <span class="code-tag">&lt;/properties&gt;</span>
    <span class="code-tag">&lt;/profile&gt;</span>
  <span class="code-tag">&lt;/profiles&gt;</span>
  ...
  <span class="code-tag">&lt;servers&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- To publish a
snapshot of some part of Maven --&gt;</span></span>
    <span class="code-tag">&lt;server&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>apache.snapshots.https<span
class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;username&gt;</span> <span class="code-tag"><span
class="code-comment">&lt;!-- YOUR APACHE SVN USERNAME --&gt;</span></span>
<span class="code-tag">&lt;/username&gt;</span>
      <span class="code-tag">&lt;password&gt;</span> <span class="code-tag"><span
class="code-comment">&lt;!-- YOUR APACHE SVN PASSWORD --&gt;</span></span>
<span class="code-tag">&lt;/password&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
    <span class="code-tag"><span class="code-comment">&lt;!-- To stage a release
of some part of Maven --&gt;</span></span>
    <span class="code-tag">&lt;server&gt;</span>
      <span class="code-tag">&lt;id&gt;</span>apache.releases.https<span
class="code-tag">&lt;/id&gt;</span>
      <span class="code-tag">&lt;username&gt;</span> <span class="code-tag"><span
class="code-comment">&lt;!-- YOUR APACHE SVN USERNAME --&gt;</span></span>
<span class="code-tag">&lt;/username&gt;</span>
      <span class="code-tag">&lt;password&gt;</span> <span class="code-tag"><span
class="code-comment">&lt;!-- YOUR APACHE SVN PASSWORD --&gt;</span></span>
<span class="code-tag">&lt;/password&gt;</span>
    <span class="code-tag">&lt;/server&gt;</span>
    ...
  <span class="code-tag">&lt;/servers&gt;</span>
<span class="code-tag">&lt;/settings&gt;</span>

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

<h2><a name="ReleaseGuide-StagingtheReleaseCandidate"></a>Staging the Release
Candidate</h2>

<ol>
	<li>grab the latest <a href="/confluence/display/SM/Source" title="Source">Source</a>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
svn co https:<span class="code-comment">//svn.apache.org/repos/asf/servicemix/$PART/trunk</span>
</pre>
</div></div>
<p>where $PART is what you want to release. For example, it can be:</p>
	<ul>
		<li>smx3</li>
		<li>smx4</li>
		<li>components/bindings/servicemix-cxf-bc</li>
		<li>...</li>
	</ul>
	</li>
	<li>prepare your POMs for release:
	<ol>
		<li>make sure there is no snapshots in the POMs to be released</li>
		<li>make sure everything builds fine</li>
		<li>check that your POMs will not lose content when they are rewritten during the
release process:
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
mvn release:prepare -DdryRun
</pre>
</div></div> 
<p>and diff the original pom.xml with the one named pom.xml.tag to see if the license
or any other info has been removed. This has been known to happen if the starting &lt;project&gt;
tag is not a single line. The only things that should be different between these files are
the &lt;version&gt; and &lt;scm&gt; elements. If there are any other changes,
you must fix the original pom.xml file and commit before proceeding with the release. </p></li>
		<li>publish a snapshot
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
$ mvn deploy
...
[INFO] [deploy:deploy]
[INFO] Retrieving previous build number from apache.snapshots.https
...
</pre>
</div></div></li>
	</ol>
	<ul>
		<li>if you experience an error during deployment like a HTTP 401 check your settings
for the required server entries as outlined in the <b>Prerequisites</b></li>
		<li>be sure that the generated artifacts respect the Apache release <a href="http://www.apache.org/dev/release.html"
class="external-link" rel="nofollow">rules</a>: NOTICE and LICENSE files should be
present in the META-INF directory within the jar. For sources artifacts, be sure that your
POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at
this time is 2.0.4</li>
		<li>you should verify the deployment under the <a href="https://repository.apache.org/content/groups/snapshots/org/apache/servicemix"
class="external-link" rel="nofollow">snapshot</a> repository on Apache</li>
	</ul>
	</li>
	<li>prepare the release
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
mvn release:clean
mvn release:prepare
</pre>
</div></div></li>
	<li>stage the release for a vote<br/>
Note: If you're on Mac OSX 10.5, for a  known  <a href="http://subversion.tigris.org/issues/show_bug.cgi?id=3059"
class="external-link" rel="nofollow">issue</a>, you need provide your apache svn
user/password <br/>
mvn release:prepare -Dusername=ffang -Dpassword=*******
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
mvn release:perform
</pre>
</div></div>
	<ul>
		<li>the release will automatically be inserted into a temporary staging repository
for you, see the Nexus <a href="http://www.sonatype.com/books/nexus-book/reference/staging.html"
class="external-link" rel="nofollow">staging documentation</a> for full details</li>
		<li>you can continue to use mvn release:prepare and mvn release:perform on other sub-projects
as necessary on the same machine and they will be combined in the same staging repository</li>
	</ul>
	</li>
	<li>close the staging repository
	<ul>
		<li>login to <a href="https://repository.apache.org" class="external-link" rel="nofollow">https://repository.apache.org</a>
using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.servicemix
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<br/>
<span class="image-wrap" style=""><a class="confluence-thumbnail-link 1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_01.png'><img
src="/confluence/download/thumbnails/39076/release_01.png" style="border: 0px solid black"
/></a></span> <span class="image-wrap" style=""><a class="confluence-thumbnail-link
1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_02.png'><img
src="/confluence/download/thumbnails/39076/release_02.png" style="border: 0px solid black"
/></a></span> <span class="image-wrap" style=""><a class="confluence-thumbnail-link
1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_03.png'><img
src="/confluence/download/thumbnails/39076/release_03.png" style="border: 0px solid black"
/></a></span> <span class="image-wrap" style=""><a class="confluence-thumbnail-link
1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_04.png'><img
src="/confluence/download/thumbnails/39076/release_04.png" style="border: 0px solid black"
/></a></span> <span class="image-wrap" style=""><a class="confluence-thumbnail-link
1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_05.png'><img
src="/confluence/download/thumbnails/39076/release_05.png" style="border: 0px solid black"
/></a></span> <span class="image-wrap" style=""><a class="confluence-thumbnail-link
1014x751" href='https://cwiki.apache.org/confluence/download/attachments/39076/release_06.png'><img
src="/confluence/download/thumbnails/39076/release_06.png" style="border: 0px solid black"
/></a></span></li>
	</ul>
	</li>
	<li>verify the staged artifacts
	<ul>
		<li>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 you don't like the content of the repository, right
click your repository and choose Drop. You can then rollback your release (see Canceling the
Release) and repeat the process</li>
		<li>note the staging repository URL (especially the number at the end of the URL)
you will need this in your vote email</li>
	</ul>
	</li>
</ol>


<h2><a name="ReleaseGuide-Startingthevote"></a>Starting the vote</h2>

<p>Propose a vote on the dev list with the closed issues, the issues left, and the staging
repository - for example:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
To: <span class="code-quote">"ServiceMix Developers List"</span> &lt;dev@servicemix.apache.org&gt;
Subject: [VOTE] Release ServiceMix [Component] XXX version Y.Z

Hi,

We solved N issues in <span class="code-keyword">this</span> release:
http:<span class="code-comment">//issues.apache.org/jira/...
</span>
There are still some outstanding issues:
http:<span class="code-comment">//issues.apache.org/jira/...
</span>
Staging repository:
https:<span class="code-comment">//repository.apache.org/content/repositories/servicemix-staging-[YOUR
REPOSITORY ID]/
</span>
Please vote to approve <span class="code-keyword">this</span> release:

[ ] +1 Approve the release
[ ] -1 Veto the release (please provide specific comments)

This vote will be open <span class="code-keyword">for</span> 72 hours.
</pre>
</div></div>

<ul>
	<li>to get the JIRA release notes link, browse to the ServiceMix <a href="http://issues.apache.org/jira/browse/ServiceMix"
class="external-link" rel="nofollow">JIRA</a> page, select Release Notes and choose
the relevant sub-project release and format (HTML)</li>
	<li>to get the list of issues left in JIRA, select the Open Issues tab on the main
ServiceMix page, and select the relevant sub-project.</li>
</ul>


<h2><a name="ReleaseGuide-WaitfortheResults"></a>Wait for the Results</h2>

<p>From <a href="http://www.apache.org/foundation/voting.html" class="external-link"
rel="nofollow">Votes on Package Releases</a>:</p>

<p>    Votes on whether a package is ready to be released follow a format similar to
majority approval - except that the decision is officially determined solely by whether at
least three +1 votes were registered. Releases may not be vetoed. Generally the community
will table the vote to release if anyone identifies serious problems, but in most cases the
ultimate decision, once three or more positive votes have been garnered, lies with the individual
serving as release manager. The specifics of the process may vary from project to project,
but the 'minimum of three +1 votes' rule is universal.</p>

<p>The list of binding voters is available at <a href="http://servicemix.apache.org/team.html"
class="external-link" rel="nofollow">http://servicemix.apache.org/team.html</a>.</p>

<p>If the vote is successful, post the result to the dev list - for example:</p>
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
To: <span class="code-quote">"ServiceMix Developers List"</span> &lt;dev@servicemix.apache.org&gt;
Subject: [RESULT] [VOTE] Release ServiceMix [Component] XXX version Y.Z

Hi,

The vote has passed with the following result :

  +1 (binding): &lt;&lt;list of names&gt;&gt;
  +1 (non binding): &lt;&lt;list of names&gt;&gt;

I will copy <span class="code-keyword">this</span> release to the ServiceMix dist
directory and
promote the artifacts to the central Maven repository.
</pre>
</div></div>

<p>If the vote is unsuccessful, you need to fix the issues and restart the process -
see <b>Canceling the Release</b>.<br/>
If the vote is successful, you need to promote and distribute the release - see <b>Promoting
the Release</b>.</p>

<h2><a name="ReleaseGuide-CancelingtheRelease"></a>Canceling the Release</h2>

<p>If the vote fails, or you decide to redo the release:</p>

<ol>
	<li>remove the release tag from Subversion (svn del ...)</li>
	<li>login to <a href="https://repository.apache.org" class="external-link" rel="nofollow">https://repository.apache.org</a>
using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.servicemix
in the list of repositories. In the panel below you should see a closed repository that is
linked to your username and IP (if it's not yet closed you need to right click and select
Close). Right click on this repository and select Drop.</li>
	<li>rollback the version in the pom.xml and commit any fixes you need to make</li>
</ol>


<h2><a name="ReleaseGuide-PromotingtheRelease"></a>Promoting the Release</h2>

<p>If the vote passes:</p>

<ol>
	<li>copy the released artifacts to the ServiceMix dist directory (/x1/www/www.apache.org/dist/servicemix)
on people.apache.org</li>
	<li>delete the old release from the ServiceMix dist directory (it's archived)</li>
	<li>login to <a href="https://repository.apache.org" class="external-link" rel="nofollow">https://repository.apache.org</a>
with your Apache SVN credentials. Click on Staging. Find your closed staging repository, right
click on it and choose Promote. Select the Releases repository from the drop-down list and
click Promote.</li>
	<li>next click on Repositories, select the Releases repository and validate that your
artifacts are all there</li>
	<li>update the news section on the website at news</li>
	<li>update the download page on the website at downloads to point to the new release.</li>
</ol>


<p>For the last two tasks, it's better to give the mirrors some time to distribute the
uploaded artifacts (one day should be fine). This ensures that once the website (news and
download page) is updated, people can actually download the artifacts.</p>

<h2><a name="ReleaseGuide-UpdateXMLschemas"></a>Update XML schemas</h2>

<ul>
	<li>Update the <a href="/confluence/display/SM/Xml+schemas" title="Xml schemas">Xml
schemas</a> page with a link to the HTML and XSD</li>
</ul>


<h2><a name="ReleaseGuide-UpdateJIRA"></a>Update JIRA</h2>

<p>Go to Admin section on the ServiceMix JIRA and mark the Component/Y.Z version as
released - create version Y.Z+1, if that hasn't already been done.</p>

<h2><a name="ReleaseGuide-AnnouncingtheServiceMixRelease"></a>Announcing
the ServiceMix Release</h2>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
To: <span class="code-quote">"ServiceMix Developers List"</span> &lt;dev@servicemix.apache.org&gt;
Subject: [ANN] ServiceMix XXX version Y.Z Released

The ServiceMix team is pleased to announce the release of ServiceMix XXX version Y.Z

&lt;&lt;insert <span class="code-object">short</span> description of the
sub-project&gt;&gt;

  http:<span class="code-comment">//servicemix.apache.org/XXX.html
</span>
This release is available from http:<span class="code-comment">//servicemix.apache.org/downloads
and Maven:
</span>
  &lt;dependency&gt;
    &lt;groupId&gt;org.apache.servicemix&lt;/groupId&gt;
    &lt;artifactId&gt;org.apache.servicemix.XXX&lt;/artifactId&gt;
    &lt;version&gt;Y.Z&lt;/version&gt;
  &lt;/dependency&gt;

Release Notes:

&lt;&lt;insert release notes in text format from JIRA&gt;&gt;

Enjoy!

-The ServiceMix team
</pre>
</div></div>

<p>Remember to forward this announcement to users@servicemix.apache.org - try not to
cross-post (CC<img class="emoticon" src="/confluence/images/icons/emoticons/smile.gif"
height="20" width="20" align="absmiddle" alt="" border="0"/> announcements to both user
and dev lists.</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/SM/Release+Guide">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=39076&revisedVersion=34&originalVersion=33">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/SM/Release+Guide?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message