<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-05-06 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20170506" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Release Process</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
      <script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href="./" id="bannerRight"><img src="images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2017-05-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.5<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
    <li class="active ">Release Process</li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Axis2/Java</li>
    <li><a href="index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
      </ul>
  </li>
    <li><a href="modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li><a href="docs/installationguide.html" title="Installation Guide"><span class="none"></span>Installation Guide</a>  </li>
    <li><a href="docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="svn.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>Release Process</a>
  </li>
    <li><a href="guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
              <div class="clear"></div>
  <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
              </div>
          </div>
        </div>
        <div id="bodyColumn"  class="span10" >
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  --><h1>Release Process</h1>
<div class="section">
<h2><a name="Release_process_overview"></a>Release process overview</h2>
<div class="section">
<h3><a name="Cutting_a_branch"></a>Cutting a branch</h3>

<ul>
  
<li>
<p>When a release is ready to go, release manager (RM) puts forward a release plan as per standard Apache process, including dates. This gets VOTEd on by the committers. During this period the trunk is still the only relevant source base.</p></li>
  
<li>
<p>As soon as a release is approved (or even before), RM should add the new version into JIRA as a target.</p></li>
  
<li>
<p>At the point where we would normally do the &#x201c;code freeze&#x201d; for a release, the RM cuts a branch named for the release. This branch is where the release candidates and releases will happen.</p></li>
  
<li>
<p>Ideally a release branch is only around for a week or maybe two before the release happens.</p></li>
  
<li>
<p>The only things that should EVER get checked into the release branch are - 1) bug fixes targeted at the release, 2) release-specific updates (documentation, SNAPSHOT removal, etc). In particular new functionality does not go here unless it is a solution to a JIRA report targeted at the release.</p></li>
  
<li>
<p>Normal development continues on the trunk.</p></li>
</ul></div>
<div class="section">
<h3><a name="Dependencies_and_branches"></a>Dependencies and branches</h3>

<ul>
  
<li>
<p>The trunk should always be &#x201c;cutting edge&#x201d; and as such should usually be pointing at SNAPSHOT versions of all dependencies. This allows for continuous integration with our partner projects.</p></li>
  
<li>
<p>Soon after a release branch is cut, the RM is responsible for removing ALL dependencies on SNAPSHOT versions and replacing them with officially released versions. This change happens only on the release branch.</p></li>
</ul></div>
<div class="section">
<h3><a name="Managing_change_and_issue_resolution_with_a_release_branch"></a>Managing change and issue resolution with a release branch</h3>

<ul>
  
<li>
<p>The RM goes through JIRA issues and sets &#x201c;fix for&#x201d; to point to both &#x201c;NIGHTLY&#x201d; and the new branched release number for the fixes that are targeted for the release after the branch is cut.</p></li>
  
<li>
<p>In general, the assignee/coder fixes JIRA issues or makes other changes <i>on the trunk</i>. If the JIRA issue is targeted at the release, or upon coder&#x2019;s discretion, they then merge the fix over to the release branch.</p></li>
  
<li>
<p>This way the trunk is ALWAYS up-to-date, and we don&#x2019;t have to worry about losing fixes that have only been made on the release branch.</p></li>
  
<li>
<p>When the assignee resolves an issue, they confirm it&#x2019;s been fixed in both branches, if appropriate.</p></li>
</ul></div>
<div class="section">
<h3><a name="Checking_changes_into_the_branch"></a>Checking changes into the branch</h3>

<ul>
  
<li>
<p>If bug fixes are needed later for a release which has long since happened (to fix user issues, etc), those fixes generally should also happen on the trunk first assuming the problem still exists on the trunk.</p></li>
  
<li>
<p>There are only two cases where we would ever check anything into the branch without first checking it into the trunk. 1) Release specific items (release number references, release notes, removal of SNAPSHOTs), and 2) if the trunk has moved on in some incompatible way.</p></li>
</ul></div></div>
<div class="section">
<h2><a name="Performing_a_release"></a>Performing a release</h2>
<div class="section">
<h3><a name="Preparation"></a>Preparation</h3>
<p>Verify that the code meets the basic requirements for being releasable:</p>

<ol style="list-style-type: decimal">
  
<li>
<p>Check that the set of legal (<tt>legal/*.LICENSE</tt>) files corresponds to the set of third party JARs included in the binary distribution.</p></li>
  
<li>
<p>Check that the <tt>apache-release</tt> profile works correctly and produces the required distributions. The profile can be executed as follows:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">mvn clean install -Papache-release
</pre></div></div></li>
  
<li>
<p>Check that the source distribution is buildable.</p></li>
  
<li>
<p>Check that the source tree is buildable with an empty local Maven repository.</p></li>
</ol>
<p>If any problems are detected, they should be fixed on the trunk (except for issues specific to the release branch) and then merged to the release branch.</p>
<p>Next update the release note found under <tt>src/site/markdown/release-notes</tt>. To avoid extra work for the RM doing the next major release, these changes should be done on the trunk first and then merged to the release branch.</p></div>
<div class="section">
<h3><a name="Pre-requisites"></a>Pre-requisites</h3>
<p>The following things are required to perform the actual release:</p>

<ul>
  
<li>
<p>A PGP key that conforms to the <a class="externalLink" href="http://www.apache.org/dev/release-signing.html">requirements for Apache release signing</a>. To make the release process easier, the passphrase for the code signing key should be configured in <tt>${user.home}/.m2/settings.xml</tt>:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">&lt;settings&gt;
  ...
  &lt;profiles&gt;
    &lt;profile&gt;
      &lt;id&gt;apache-release&lt;/id&gt;
      &lt;properties&gt;
        &lt;gpg.passphrase&gt;&lt;!-- key passphrase --&gt;&lt;/gpg.passphrase&gt;
      &lt;/properties&gt;
    &lt;/profile&gt;
  &lt;/profiles&gt;
  ...
&lt;/settings&gt;
</pre></div></div></li>
  
<li>
<p>The release process uses a Nexus staging repository. Every committer should have access to the corresponding staging profile in Nexus. To validate this, login to <a class="externalLink" href="https://repository.apache.org">repository.apache.org</a> and check that you can see the <tt>org.apache.axis2</tt> staging profile. The credentials used to deploy to Nexus should be added to <tt>settings.xml</tt>:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">&lt;servers&gt;
  ...
  &lt;server&gt;
    &lt;id&gt;apache.releases.https&lt;/id&gt;
    &lt;username&gt;&lt;!-- ASF username --&gt;&lt;/username&gt;
    &lt;password&gt;&lt;!-- ASF LDAP password --&gt;&lt;/password&gt;
  &lt;/server&gt;
  ...
&lt;/servers&gt;
</pre></div></div></li>
</ul></div>
<div class="section">
<h3><a name="Release"></a>Release</h3>
<p>In order to prepare the release artifacts for vote, execute the following steps:</p>

<ol style="list-style-type: decimal">
  
<li>
<p>Start the release process using the following command:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">mvn release:prepare
</pre></div></div>
<p>When asked for a tag name, accept the default value (in the following format: <tt>vX.Y.Z</tt>). The execution of the <tt>release:prepare</tt> goal may occasionally fail because <tt>svn.apache.org</tt> resolves to one of the geolocated SVN mirrors and there is a propagation delay between the master and these mirrors. If this happens, wait for a minute (so that the mirrors can catch up with the master) and simply rerun the command. It will continue where the error occurred.</p></li>
  
<li>
<p>Perform the release using the following command:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">mvn release:perform
</pre></div></div></li>
  
<li>
<p>Login to Nexus and close the staging repository. For more details about this step, see <a class="externalLink" href="https://docs.sonatype.org/display/Repository/Closing+a+Staging+Repository">here</a>.</p></li>
  
<li>
<p>Execute the <tt>target/checkout/etc/dist.py</tt> script to upload the distributions.</p></li>
  
<li>
<p>Create a staging area for the Maven site:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">svn cp https://svn.apache.org/repos/asf/axis/site/axis2/java/core \
       https://svn.apache.org/repos/asf/axis/site/axis2/java/core-staging
</pre></div></div></li>
  
<li>
<p>Change to the <tt>target/checkout</tt> directory and prepare the site using the following commands:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">mvn site-deploy
mvn scm-publish:publish-scm -Dscmpublish.skipCheckin=true
</pre></div></div>
<p>Now go to the <tt>target/scmpublish-checkout</tt> directory (relative to <tt>target/checkout</tt>) and check that there are no unexpected changes to the site. Then commit the changes. Note that this may fail because of <a class="externalLink" href="https://issues.apache.org/jira/browse/INFRA-11007">INFRA-11007</a>. In this case, switch to the Subversion master using the following command before trying to commit again:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">svn switch --relocate https://svn.apache.org/ https://svn-master.apache.org/
</pre></div></div></li>
  
<li>
<p>Start the release vote by sending a mail to <tt>java-dev@axis.apache.org</tt>. The mail should mention the following things:</p>
  
<ul>
    
<li>A link to the Nexus staging repository.</li>
    
<li>A link to the directory containing the distributions (<a class="externalLink" href="https://dist.apache.org/repos/dist/dev/axis/axis2/java/core/x.y.x/">https://dist.apache.org/repos/dist/dev/axis/axis2/java/core/x.y.x/</a>).</li>
    
<li>A link to the preview of the Maven site (<a class="externalLink" href="http://axis.apache.org/axis2/java/core-staging/">http://axis.apache.org/axis2/java/core-staging/</a>).</li>
  </ul></li>
</ol>
<p>If the vote passes, execute the following steps:</p>

<ol style="list-style-type: decimal">
  
<li>
<p>Promote the artifacts in the staging repository. See <a class="externalLink" href="https://docs.sonatype.org/display/Repository/Releasing+a+Staging+Repository">here</a> for detailed instructions for this step.</p></li>
  
<li>
<p>Publish the distributions:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">svn mv https://dist.apache.org/repos/dist/dev/axis/axis2/java/core/x.y.z \
       https://dist.apache.org/repos/dist/release/axis/axis2/java/core/
</pre></div></div></li>
  
<li>
<p>Publish the site:</p>
  
<div class="source">
<div class="source"><pre class="prettyprint">svn co --depth=immediates https://svn.apache.org/repos/asf/axis/site/axis2/java/ axis2-site
cd axis2-site
svn rm core
svn mv core-staging core
svn commit
</pre></div></div></li>
</ol>
<p>It may take several hours before everything has been synchronized. Before proceeding, check that</p>

<ul>
  
<li>the Maven artifacts for the release are available from the Maven central repository;</li>
  
<li>the Maven site has been synchronized;</li>
  
<li>the distributions can be downloaded from the mirror sites.</li>
</ul>
<p>Once everything is in place, send announcements to <tt>java-user@axis.apache.org</tt> (with copy to <tt>java-dev@axis.apache.org</tt>) and <tt>announce@apache.org</tt>. Since the two lists have different conventions, audiences and moderation policies, it is recommended to send the announcement separately to the two lists. Note that mail to <tt>announce@apache.org</tt> must be sent from an <tt>apache.org</tt> address and will always be moderated. The announcement sent to <tt>announce@apache.org</tt> also should include a general description of Axis2, because not everybody subscribed to that list knows about the project.</p></div>
<div class="section">
<h3><a name="Post-release_actions"></a>Post-release actions</h3>

<ol style="list-style-type: decimal">
  
<li>
<p>Update the DOAP file (<tt>etc/doap_Axis2.rdf</tt>) and add a new entry for the release.</p></li>
  
<li>
<p>Update the status of the release version in JIRA.</p></li>
  
<li>
<p>Remove old (archived) releases from <a class="externalLink" href="https://dist.apache.org/repos/dist/release/axis/axis2/java/core/">https://dist.apache.org/repos/dist/release/axis/axis2/java/core/</a>.</p></li>
  
<li>
<p>Create an empty release note for the next release under <tt>src/site/markdown/release-notes</tt>.</p></li>
</ol></div></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2017
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>