cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache CXF > Release Management
Date Thu, 20 Sep 2012 18:10:00 GMT
<html>
<head>
    <base href="https://cwiki.apache.org/confluence">
            <link rel="stylesheet" href="/confluence/s/2042/9/15/_/styles/combined.css?spaceKey=CXF&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/CXF/Release+Management">Release
Management</a></h2>
    <h4>Page <b>edited</b> by             <a href="https://cwiki.apache.org/confluence/display/~mazzag">Glen
Mazza</a>
    </h4>
        <div id="versionComment">
        <b>Comment:</b>
        Added information on how to update JIRA after a release.<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" > <br> <br></td></tr>
            <tr><td class="diff-unchanged" >h2. Performing a release <br>
<br></td></tr>
            <tr><td class="diff-snipped" >...<br></td></tr>
            <tr><td class="diff-unchanged" > <br>* Unpack the schemas directory
from the appropriate cxf-bundle-VERSION.jar and check if any of the schemas in https://svn-master.apache.org/repos/infra/websites/production/cxf/content/schemas
need updating. <br></td></tr>
            <tr><td class="diff-added-lines" style="background-color: #dfd;">
<br>h2. Updating JIRA <br> <br>JIRA will need to be updated: <br>*
Add new versions that JIRA items can be created against, and mark the version(s) you just
released as &quot;released&quot;: <br># Go to the [CXF JIRA Home Page|https://issues.apache.org/jira/browse/CXF]
and select the &quot;Versions&quot; left menu item, then select &quot;Manage Versions&quot;.
<br># Select the tools icon (far right side) for the version(s) you&#39;ve just
released and select &quot;Release&quot;. <br># Also on this screen type in new
release versions for the branch(es) you&#39;ve released and plan on releasing more versions
from. <br>* Close the JIRA items that were marked resolved for each release: <br>#
From the previous screen, select &quot;Exit Administration&quot;. <br># From
the CXF JIRA home page, select Versions from the left-side menu, and for each version you
just released: <br>## Select version, then issues left-side menu item, then select the
&quot;Resolved&quot; list.   <br>## From the tools icon, select Bulk Change
-&gt; select all items -&gt; Transition Issues -&gt; Close Issues -&gt; Confirm.
<br></td></tr>
    
            </table>
    </div>                            <h4>Full Content</h4>
                    <div class="notificationGreySide">
        <h2><a name="ReleaseManagement-Deployingsnapshots"></a>Deploying
snapshots</h2>

<p>Snapshots are automatically deployed every night to the Nexus snapshot repository
at <a href="https://repository.apache.org/content/groups/snapshots-group/" class="external-link"
rel="nofollow">https://repository.apache.org/content/groups/snapshots-group/</a>
.  There is no need to manually deploy snapshots anymore.</p>


<h2><a name="ReleaseManagement-Maintainingafixesbranch"></a>Maintaining
a fixes branch</h2>
<p>dkulp: I'm adding this section to document what worked for ME when maintaining the
2.0.x-fixes branch for the 2.0.x releases.  Each Release Manager may have their own style
or tools or whatever.   This is not a "set in stone" type thing.  </p>

<p>Basically, almost all development and fixes and such are usually done by the various
developers right on trunk.   Thus, the main job of the fixes branch maintainer is to triage
the commits on trunk and merge pure fixes to the fixes branch, resolve conflicts, run the
tests, and periodically deploy snapshots.   For the most part, when things go well, it doesn't
take too much time or effort.   An hour or two every couple days is about it.</p>

<p>To set up, you'll want to:</p>
<ol>
	<li>use svn cp to make a branch. Use URLs for the pathnames or it will take <em>forever</em>.</li>
	<li>use bin/pom-version.pl to change the version in the branch</li>
	<li>use svnmerge.py init to set up svnmerge. You may want to run this in <em>both</em>
the trunk and the new branch in case you are contemplating bidirectional merges.</li>
</ol>


<p>These steps work for individual developers who want to go off into a branch in the
sandbox to work through something complex.</p>


<p>In trunk/bin, there is a DoMerges.java program that wraps svnmerge.py to assist in
the merging.   If the branch is setup with snvmerge.py, if you run it from you checkout directory,
it will prompt for every commit on trunk to see if you want to "Merge" it, "Block" it, or
"Ignore" it.   It displays the commit log first so you can see what was involved.   You can
also check the  <a href="http://www.nabble.com/cxf-commits-f23851.html" class="external-link"
rel="nofollow">cxf-commits</a> archive to see the full details of the commit to help
decide what action to take.  If you select "Merge", it will merge the change and then prompt
before committing.    That will allow you to look at the merge and resolve any conflicts.
 (or even revert it if you didn't mean to hit Merge)</p>


<h2><a name="ReleaseManagement-Performingarelease"></a>Performing a release</h2>

<p>The first step is to update the release_notes.txt in the distribution/src/main/release.
 This file's JIRA list of solved Bugs, Improvements, etc. can be obtained from the <a href="https://issues.apache.org/jira/browse/CXF#selectedTab=com.atlassian.jira.plugin.system.project%3Aroadmap-panel"
class="external-link" rel="nofollow">"Road Map" JIRA tab</a>, selecting the desired
version's Release Notes, and then the Configure Release Notes button (choose Text output).</p>

<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16"
align="absmiddle" alt="" border="0"></td><td>Don't manually update the POM
versions from X.Y.Z-SNAPSHOT to X.Y.Z, the Maven Release Plugin commands below will automatically
take care of that.  Also, prior to performing the release you'll need to have your Apache
LDAP information configured in your Maven settings.xml file:

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
...
&lt;server&gt;                                                                
   &lt;id&gt;apache.releases.https&lt;/id&gt;
   &lt;username&gt;apacheID&lt;/username&gt;
   &lt;password&gt;yourLDAPPassword&lt;/password&gt;
&lt;/server&gt;
...
</pre>
</div></div></td></tr></table></div>

<p>Then, to actually perform the release, run the below commands.  </p>
<div class='panelMacro'><table class='noteMacro'><colgroup><col width='24'><col></colgroup><tr><td
valign='top'><img src="/confluence/images/icons/emoticons/warning.gif" width="16" height="16"
align="absmiddle" alt="" border="0"></td><td>It is suggested to use Maven 2.2.1
for CXF versions &lt;=2.5.x as that has been better tested.   For &gt;=2.6.0, Maven
3 is required.  It's recommended you build the release with the lowest JDK version supported
by that particular branch (JDK 6 with CXF 2.7.x, JDK 5 for older releases).</td></tr></table></div>
<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent
panelContent">
<pre>mvn release:prepare -Peverything,jaxws22
mvn release:perform
</pre>
</div></div>
<p>The above commands tag the release, update the poms versions, etc., then build it
(off the tag), gpg sign and deploy everything (including source jars and javadoc jars) to
the <a href="https://repository.apache.org" class="external-link" rel="nofollow">Nexus
repository location</a>.  When the build is done staging, you next need to login to
the Nexus repository and "close" the staging area (click on Staging Repositories in the left-side
menu, select the repo you just uploaded and then select the close button.)   Closing is very
important.   After the staging area is closed, note the URL for the staging area as you will
need that for the vote.</p>
<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>You may encounter
error like<br/>
<a href="/confluence/pages/createpage.action?spaceKey=CXF&amp;title=INFO&amp;linkCreation=true&amp;fromPageId=70605"
class="createlink">INFO</a> Unable to tag SCM<br/>
Provider message:<br/>
The svn tag command failed.<br/>
Command output:<br/>
svn: PROPFIND request failed on '/repos/asf/!svn/vcc/default'<br/>
svn: No such revision 1197023<br/>
when run "mvn release:prepare -Peverything,jaxws22" to create tag if you're not in U.S. <br/>
This is caused by that the svn server in Europe need some time to sync up to the central server
in U.S.<br/>
If you encounter it, just wait a minute, and do "mvn release:prepare -Dresume=true -Peverything,jaxws22"
which<br/>
will pick up the left task from last run.</td></tr></table></div>

<p>At this point, everything "pre-vote" is done.   Call the vote.</p>


<h2><a name="ReleaseManagement-Releasingtheartifacts"></a>Releasing the
artifacts</h2>

<ul>
	<li>Maven artifacts -  After the vote passes, you'll need to promote that staging repository
to the main location. Login to <a href="https://repository.apache.org" class="external-link"
rel="nofollow">Nexus repository location</a> to do that as well, find the staging
repository and click the Release button.</li>
</ul>


<ul>
	<li>Distributions - You will need to commit the distributions into the special svn
distribution area:
<a href="https://dist.apache.org/repos/dist/release/cxf" class="external-link" rel="nofollow">https://dist.apache.org/repos/dist/release/cxf</a><br/>
after you commit they will be live on dist.apache.org fairly quickly, but it will still take
time for the mirrors to get copies.   It's likely easier to make the directory via an svn
command, check out just that directory, and then add the files.  The dist area is rather large
(400MB or so) so checking out the entire thing may be slow. 
<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">
svn mkdir https:<span class="code-comment">//dist.apache.org/repos/dist/release/cxf/2.6.3
</span>svn checkout https:<span class="code-comment">//dist.apache.org/repos/dist/release/cxf/2.6.3
</span>....  add files to 2.6.3 .....
svn commit
</pre>
</div></div></li>
</ul>


<p>The <a href="http://cxf.apache.org/download.html" class="external-link" rel="nofollow">download
page</a> of a currently released version will tell you the precise files you need to
upload.  Basically, the -src.tar.gz, -src.zip, tar.gz, .zip files, and the .md5, .sha1, and
.asc signature files of each of those.  For greatest accuracy, it's best to download the files
from Nexus and use those.  (For example, for CXF 2.6.2, you would check <a href="https://repository.apache.org/content/repositories/releases/org/apache/cxf/apache-cxf/2.6.2/"
class="external-link" rel="nofollow">this folder</a>).  </p>

<ul>
	<li>Update the download page - around 24 hours after committing the distributions,
update the download page, release notes, etc. to point at the new versions.  At that stage
you'll want to delete (svn rm) the previous version of each branch you uploaded to <a href="https://dist.apache.org"
class="external-link" rel="nofollow">https://dist.apache.org</a>, so if you added
<a href="https://dist.apache.org/repos/dist/release/cxf/2.6.3" class="external-link" rel="nofollow">https://dist.apache.org/repos/dist/release/cxf/2.6.3</a>
and <a href="https://dist.apache.org/repos/dist/release/cxf/2.5.6" class="external-link"
rel="nofollow">https://dist.apache.org/repos/dist/release/cxf/2.5.6</a>, you'll want
to remove <a href="https://dist.apache.org/repos/dist/release/cxf/2.6.2" class="external-link"
rel="nofollow">https://dist.apache.org/repos/dist/release/cxf/2.6.2</a> and <a
href="https://dist.apache.org/repos/dist/release/cxf/2.5.5" class="external-link" rel="nofollow">https://dist.apache.org/repos/dist/release/cxf/2.5.5</a>.
 (Older versions will still be available at <a href="http://archive.apache.org/dist/cxf/"
class="external-link" rel="nofollow">http://archive.apache.org/dist/cxf/</a> and
are referenced from there on the CXF download page.)</li>
</ul>


<ul>
	<li>Unpack the javadocs from the appropriate cxf-bundle-VERSION-javadocs.jar into the
appropriate directory in an svn checkout of <a href="https://svn-master.apache.org/repos/infra/websites/production/cxf/content/javadoc"
class="external-link" rel="nofollow">https://svn-master.apache.org/repos/infra/websites/production/cxf/content/javadoc</a>
 and commit the new version.  Make sure any new files are added.</li>
</ul>


<ul>
	<li>Unpack the schemas directory from the appropriate cxf-bundle-VERSION.jar and check
if any of the schemas in <a href="https://svn-master.apache.org/repos/infra/websites/production/cxf/content/schemas"
class="external-link" rel="nofollow">https://svn-master.apache.org/repos/infra/websites/production/cxf/content/schemas</a>
need updating.</li>
</ul>


<h2><a name="ReleaseManagement-UpdatingJIRA"></a>Updating JIRA</h2>

<p>JIRA will need to be updated:</p>
<ul>
	<li>Add new versions that JIRA items can be created against, and mark the version(s)
you just released as "released":</li>
</ul>
<ol>
	<li>Go to the <a href="https://issues.apache.org/jira/browse/CXF" class="external-link"
rel="nofollow">CXF JIRA Home Page</a> and select the "Versions" left menu item, then
select "Manage Versions".</li>
	<li>Select the tools icon (far right side) for the version(s) you've just released
and select "Release".</li>
	<li>Also on this screen type in new release versions for the branch(es) you've released
and plan on releasing more versions from.</li>
</ol>
<ul>
	<li>Close the JIRA items that were marked resolved for each release:</li>
</ul>
<ol>
	<li>From the previous screen, select "Exit Administration".</li>
	<li>From the CXF JIRA home page, select Versions from the left-side menu, and for each
version you just released:
	<ol>
		<li>Select version, then issues left-side menu item, then select the "Resolved" list.</li>
		<li>From the tools icon, select Bulk Change -&gt; select all items -&gt; Transition
Issues -&gt; Close Issues -&gt; Confirm.</li>
	</ol>
	</li>
</ol>

    </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/CXF/Release+Management">View
Online</a>
        |
        <a href="https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=70605&revisedVersion=32&originalVersion=31">View
Changes</a>
                |
        <a href="https://cwiki.apache.org/confluence/display/CXF/Release+Management?showComments=true&amp;showCommentArea=true#addcomment">Add
Comment</a>
            </div>
</div>
</div>
</div>
</div>
</body>
</html>

Mime
View raw message