<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
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. 
-->
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="author" content="dev@bval.apache.org" />

  <META http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <META name="Description" content="Apache BVal -- Release Process" />
  <META name="Keywords" content="Apache BVal Bean Validation JSR-303 JavaEE6" />
  <META name="Owner" content="dev@bval.apache.org" />
  <META name="Robots" content="index, follow" />
  <META name="Security" content="Public" />
  <META name="Source" content="wiki template" />
  <META name="DC.Rights" content="Copyright � 2010-2012, The Apache Software Foundation" />

  <!-- Le styles -->
  <link href="/resources/css/bootstrap.css" rel="stylesheet">
  <style type="text/css">
    body {
      padding-top: 60px;
      padding-bottom: 40px;
    }
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}  </style>
  <link href="/resources/css/bootstrap-responsive.css" rel="stylesheet">
  <link href="/resources/css/bval.css" rel="stylesheet">

  <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
  <!--[if lt IE 9]>
    <script src="https://html5shim.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->

  <!-- Fav and touch icons -->
  <link rel="apple-touch-icon-precomposed" sizes="144x144" href="https://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-144-precomposed.png">
  <link rel="apple-touch-icon-precomposed" sizes="114x114" href="https://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-114-precomposed.png">
  <link rel="apple-touch-icon-precomposed" sizes="72x72" href="https://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-72-precomposed.png">
  <link rel="apple-touch-icon-precomposed" href="https://twitter.github.com/bootstrap/assets/ico/apple-touch-icon-57-precomposed.png">
  <link rel="shortcut icon" href="/resources/images/feather-small.png">

  <title>Apache BVal</title>
</head>

<body>
  <div class="navbar navbar-inverse navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </a>
        <a class="brand" href="/index.html"><img src="/resources/images/bval-bean-small.png" alt="Apache BVal" title="Apache BVal" /></a>
        <div class="nav-collapse collapse">
          <ul class="nav">
            <li><a href="/downloads.html">Downloads</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
              <ul class="dropdown-menu pull-right">
                <li><a href="/samples.html">Samples</a></li>
                <li><a href="/mvnsite/index.html">Generated Docs</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Development <b class="caret"></b></a>
              <ul class="dropdown-menu pull-right">
                <li><a href="https://git-wip-us.apache.org/repos/asf/bval">Source Code</a></li>
                <li><a href="/coding-standards.html">Coding Standards</a></li>
                <li><a href="/building.html">Building</a></li>
                <li><a href="https://issues.apache.org/jira/browse/BVAL">Issue Tracker</a></li>
                <li><a href="/beanvalidation-tck.html">Bean Validation TCK</a></li>
                <li><a href="/automated-builds.html">Automated Builds</a></li>
                <li><a href="/release-management.html">Release Management</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Community <b class="caret"></b></a>
              <ul class="dropdown-menu pull-right">
                <li><a href="/board-reports/index.html">Status</a></li>
                <li><a href="/getting-involved.html">Getting Involved</a></li>
                <li><a href="/people.html">People</a></li>
                <li><a href="/mailing-lists.html">Mailing Lists</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                <img src="/resources/images/feather-small.png" alt="Apache" title="Apache" /> <b class="caret"></b></a>
              <ul class="dropdown-menu pull-right">
                <li><a href="https://www.apache.org">Home</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Support</a></li>
              </ul>
            </li>
          </ul>
          <form id="search-form" class="navbar-search pull-right" action="https://www.google.com/cse" method="get">
            <input value="bval.apache.org" name="sitesearch" type="hidden" />
            <input class="search-query" name="q" id="query" type="text" />
          </form>
          <script type="text/javascript" src="https://www.google.com/coop/cse/brand?form=search-form"></script>
        </div><!--/.nav-collapse -->
      </div>
    </div>
  </div>

  <div class="container" id="BValContent_Release Process">

    <p>We'll be using the <a href="http://repository.apache.org">Apache Nexus repository</a> for
releasing SNAPSHOT and release artifacts.  More details on releasing
artifacts and using Nexus can be found on the Maven website at
<a href="http://maven.apache.org/developers/release/apache-release.html">http://maven.apache.org/developers/release/apache-release.html</a>.</p>
<p><a name="ReleaseProcess-ReleaseSteps"></a></p>
<h3 id="release-steps">Release Steps<a class="headerlink" href="#release-steps" title="Permalink">&para;</a></h3>
<ol>
<li>
<p>Environment setup for releasing artifacts (same for <code>SNAPSHOT</code>s and releases)</p>
<ol>
<li>Use the latest Oracle 8 JDK (with javafx, it's required by the TCK!)</li>
<li>Use Maven 3.2.1 or later</li>
<li>Make sure the <a href="/release-setup.html">Release Setup</a> steps have been performed.</li>
</ol>
</li>
<li>
<p>Prepare the source for release:</p>
<ol>
<li>
<p>Clean up JIRA so the <strong>Fix Version</strong> in issues resolved since the last
release includes this release version correctly.  Also, transition any
<strong>Resolved</strong> issues to the <strong>Closed</strong> state.</p>
</li>
<li>
<p>Update the text files in a working copy of the project root:</p>
<ol>
<li>
<p>Update the <code>CHANGES.txt</code> based on the Text release reports from JIRA.</p>
</li>
<li>
<p>Review and update <code>README.txt</code> if needed.</p>
</li>
<li>
<p>Commit any changes back to GIT:</p>
<pre><code class="language-sh">git commit -a -m "updating files for release" &amp; git push
</code></pre>
</li>
</ol>
</li>
<li>
<p>Stage any Roadmap or Release landing pages on the wiki.</p>
</li>
<li>
<p>Use <code>mvn apache-rat:check</code> to verify the source has the required headers before
trying to release.</p>
</li>
<li>
<p>Perform a full build and deploy the SNAPSHOT artifacts:</p>
<pre><code class="language-sh">mvn -Papache-release clean deploy
</code></pre>
</li>
<li>
<p>Inspect the files in your local target directories to ensure:</p>
<ol>
<li>All jars and zips include <code>LICENSE</code> and <code>NOTICE</code> files</li>
<li>The NOTICE files cover all third-party included files (like XSD schemas)</li>
<li>The <code>LICENSE</code> files include any third-party licenses (none at this time)</li>
<li>All jars/zips/poms have <code>.asc</code> (PGP signature) files</li>
</ol>
</li>
</ol>
</li>
<li>
<p>Do a dry run of the release:prepare step.
The dry run will not commit any changes back to GIT and gives you the
opportunity to verify that the release process will complete as expected.
You will be prompted for the following information :</p>
<ol>
<li>
<p>Release version - take the default - (default 1.0)</p>
</li>
<li>
<p>SCM release tag - take the default - (default 1.0)</p>
</li>
<li>
<p>New development version - take the default - (default 1.0.1-SNAPSHOT)</p>
</li>
<li>
<p><em>optional</em> if you have not specified a GPG passphrase in settings.xml
you will be prompted for it:</p>
<pre><code class="language-sh">mvn -Papache-release release:prepare -DdryRun=true
</code></pre>
<p>Sample output:</p>
<pre><code class="language-text">[INFO] Working directory: /Users/drwoods/bval/1.0-rc1
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "Apache BVal :: bval-parent (Parent POM)"? (org.apache.bval:bval-parent) 1.0: : 
What is SCM release tag or label for "Apache BVal :: bval-parent (Parent POM)"? (org.apache.bval:bval-parent) bval-parent-1.0: : 1.0
What is the new development version for "Apache BVal :: bval-parent (Parent POM)"? (org.apache.bval:bval-parent) 1.0.1-SNAPSHOT: : 
[INFO] Transforming 'Apache BVal :: bval-parent (Parent POM)'...
</code></pre>
<p><em>If you cancel a release:prepare before it updates the pom.xml versions,
then use the <code>release:clean</code> goal to just remove the extra files that were
created.</em></p>
</li>
</ol>
</li>
<li>
<p>Verify that the release process completed as expected:</p>
<ol>
<li>
<p>The release plugin will create <code>pom.xml.tag</code> files which contain the
changes that would have been committed to GIT. The only differences between
<code>pom.xml.tag</code> and its corresponding <code>pom.xml</code> file should be the version
number.</p>
</li>
<li>
<p>If other formatting changes have been made you should review the changes
and then commit them:</p>
<pre><code class="language-sh">git commit -a -m "fixing formatting for release" &amp; git push
</code></pre>
</li>
<li>
<p>Assuming the <code>.tag</code> files look OK you may proceed and do any other
validation you feel necessary. The following list may be helpful:</p>
<ol>
<li>Check release.properties and make sure that the scm properties have the
right version. Sometimes the scm location can be the previous version not
the next version.</li>
<li><a href="#ReleaseProcess-Verifyingreleasesignatures">Verify signatures</a></li>
</ol>
</li>
<li>
<p>Once any failures or required updates have been committed to GIT,
rollback the release prepare files:</p>
<pre><code class="language-sh">mvn -Papache-release release:rollback
</code></pre>
</li>
</ol>
</li>
<li>
<p>Prepare the release</p>
<p>Run the <code>release:prepare</code> step for real this time.  You'll be prompted
for the same version information and optionally your GPG passphrase again.</p>
<p><strong>Different arguments and steps are required as there are problems with
the maven-jar-plugin and maven-release-plugin when using the test-jar goal.
See <a href="http://jira.codehaus.org/browse/MJAR-68">http://jira.codehaus.org/browse/MJAR-68</a>
and <a href="http://jira.codehaus.org/browse/MRELEASE-285">http://jira.codehaus.org/browse/MRELEASE-285</a>.</strong></p>
<pre><code class="language-sh">mvn -Papache-release release:prepare
</code></pre>
</li>
<li>
<p>Backup (zip or tar) your local release candidate directory in case you
need to rollback the release after the next step is performed.</p>
<pre><code class="language-sh">cd ..
tar -czf 1.0-rc1.tar.gz 1.0-rc1/
cd 1.0-rc1
</code></pre>
</li>
<li>
<p>Perform the release:</p>
<ol>
<li>
<p>This step will create a maven staging repository and site for use in
testing and voting. You will be prompted for your <strong>repository.apache.org</strong>
and <strong>people.apache.org</strong> password several times if you have not added
server profiles to your <code>settings.xml</code>.
See <a href="/release-setup.html">Release Setup</a> for more information.</p>
<pre><code class="language-sh">mvn -Papache-release release:perform [-Duser.name=&lt;your_apache_uid&gt;]
</code></pre>
</li>
</ol>
</li>
<li>
<p>Verify the release artifacts:</p>
<ol>
<li>Verify the staged artifacts in the nexus repo:
<ol>
<li><a href="https://repository.apache.org/index.html">https://repository.apache.org/index.html</a></li>
<li><strong>Build Promotion --&gt; Staging Repositories</strong></li>
<li>Navigate through the artifact tree and make sure that all binary, <code>javadoc</code>,
<code>sources</code>, and <code>tests</code> jars, as well as <code>pom</code>s, ... have <code>.asc</code> (GPG signature) and <code>.md5</code>
files (see <a href="http://people.apache.org/%7Ehenkp/repo/faq.html">Repository FAQ</a> and <a href="http://www.apache.org/dev/release-signing.html#openpgp-ascii-detach-sig">Detached Signatures</a>). The <code>source-release.zip</code> of <code>bval-parent</code>
should likewise have signature and checksum files.</li>
</ol>
</li>
<li>Upload the source artifacts to the dev dist area via SVN at
<code>https://dist.apache.org/repos/dist/dev/bval/&lt;version&gt;/source</code>
(./target/bval-parent-<version>-source-release.zip and the .asc + .sha512 file)</version></li>
<li>Check out the newly created tag and build the site using <code>mvn post-site</code>.</li>
<li>Verify the HTML links in <code>target/staging/index.html</code> are correct</li>
<li>Commit the contents of <code>target/staging</code> to <code>https://dist.apache.org/repos/dist/dev/bval/&lt;version&gt;/site/</code></li>
<li>Close the nexus staging repo:
<ol>
<li><a href="https://repository.apache.org/index.html">https://repository.apache.org/index.html</a></li>
<li><strong>Build Promotion --&gt; Staging Repositories</strong></li>
<li>Click the checkbox to select the open <code>org.apache.bval-XXX</code> staging repo,
then click the <strong>Close</strong> button on the toolbar above.</li>
</ol>
</li>
</ol>
</li>
<li>
<p>Put the release candidate up for a vote:</p>
<ol>
<li>
<p>Create a <code>VOTE</code> email thread on <a href="mailto:dev@bval.apache.org">bval-dev</a> to record votes as replies, e.g.:</p>
<pre><code class="language-text">To: dev@bval.apache.org
Subject: [VOTE] Apache BVal &lt;version&gt; Release Candidate

I've created a &lt;version&gt; release candidate, with the following artifacts up for a vote:

Git source tag:
https://gitbox.apache.org/repos/asf?p=bval.git;a=tags

Maven staging repo:
https://repository.apache.org/content/repositories/orgapachebval-020/

Source release:
https://dist.apache.org/repos/dist/dev/bval/2.0.0-RC1 (r9999)

Generated site:
https://dist.apache.org/repos/dist/dev/bval/2.0.0-RC1/site/index.html

PGP release keys:
http://www.apache.org/dist/bval/KEYS

The vote will be open for at least 72 hours.

[ ] +1  approve
[ ] +0  no opinion
[ ] -1  disapprove (and reason why)
</code></pre>
</li>
<li>
<p>Create a DISCUSS email thread on bval-dev@ for any vote questions, e.g.:</p>
<pre><code class="language-text">To: dev@bval.apache.org
Subject: [DISCUSS] Apache BVal &lt;version&gt; Release Candidate

Discussion thread for vote on &lt;version&gt; release candidate, with GIT source tag (r9999999).

For more information on the release process, check out http://www.apache.org/dev/release.html .

Some of the things to check before voting are:
- does "mvn apache-rat:check" pass on the source
- can you build the contents of source-release.zip and GIT tag
- do all of the staged jars/zips contain the required LICENSE and NOTICE files
- are all of the staged jars signed and the signature verifiable
- is the signing key in the project's KEYS file and on a public server (i.e. http://www.apache.org/dist/bval/)
- does the release pass the TCK
</code></pre>
</li>
<li>
<p>Perform a review of the release and cast your vote. For more details
on Apache releases see
<a href="http://www.apache.org/dev/release.html">http://www.apache.org/dev/release.html</a>.</p>
</li>
<li>
<p>A -1 vote does not necessarily mean that the vote must be redone,
however it is usually a good idea to rollback the release if a -1 vote is
received (see <a href="#ReleaseProcess-RecoveringFromAVetoedRelease">Recovering from a vetoed release</a>.</p>
</li>
<li>
<p>After the vote has been open for at least 72 hours, has at least three
+1 PMC votes and no -1 votes, then post the results to the vote thread:</p>
<ol>
<li>
<p>Reply to the initial email prepending <code>[RESULT]</code> to the original subject</p>
</li>
<li>
<p>Include a list of every binding +1, 0 or -1 vote.</p>
</li>
<li>
<p>Example:</p>
<p>The vote has passed with the following results:</p>
<p>+1<br/>
name1 (binding)<br/>
name2 (binding)<br/>
name3 (binding)<br/>
name4 (non-binding)</p>
<p>I will proceed with the next steps.</p>
<p>Best regards,<br/>
name</p>
</li>
</ol>
</li>
</ol>
</li>
<li>
<p>Finalizing a release</p>
<ol>
<li>
<p>Promote the staged nexus artifacts:</p>
<ol>
<li><a href="https://repository.apache.org/index.html">https://repository.apache.org/index.html</a></li>
<li><strong>Build Promotion --&gt; Staging Repositories</strong></li>
<li>Right click on the closed <code>org.apache.bval-XXX</code> staging repo and select <strong>Release</strong>.</li>
</ol>
</li>
<li>
<p>Update the generated portion of the website:</p>
<ol>
<li><code>mvn site-deploy</code> from the tag checkout</li>
<li>Remove staged site from <a href="https://dist.apache.org/repos/dist/dev/bval">https://dist.apache.org/repos/dist/dev/bval</a> .</li>
</ol>
</li>
<li>
<p>Add the distribution artifacts to the distribution area:
Move source archives staged to <a href="https://dist.apache.org/repos/dist/dev/bval/source">https://dist.apache.org/repos/dist/dev/bval/source</a> to
<a href="https://dist.apache.org/repos/dist/release/bval">https://dist.apache.org/repos/dist/release/bval</a> . Commit changes in both locations.</p>
</li>
<li>
<p>Update the <em>Downloads</em> page of the website via the CMS to point to the new release artifacts:</p>
<pre><code class="language-text">http://www.apache.org/dyn/closer.cgi/bval/$  {project.version}/
http://repo1.maven.org/maven2/org/apache/bval/$  {artifactId}/${project.version}/
</code></pre>
</li>
<li>
<p>Update the <a href="https://issues.apache.org/jira/plugins/servlet/project-config/BVAL/versions">JIRA versions</a>
page to mark the version as <strong>Released</strong>, and set the date to the date that
the release was approved. You may also need to make a new release entry for
the next release.</p>
</li>
</ol>
</li>
<li>
<p>Announcing the release</p>
<ol>
<li>
<p>After the mirrors have had time to update (24 hours to be on the safe
side) update the wiki with pointers to the new release.</p>
</li>
<li>
<p>Make an announcement about the release on the
<a href="mailto:user@bval.apache.org">bval-user</a>,
<a href="mailto:dev@bval.apache.org">bval-dev</a>, and
<a href="mailto:announce@apache.org">announce@apache.org</a> lists as per
<a href="http://www.apache.org/foundation/mailinglists.html#foundation-announce%5D">the Apache Announcement Mailing Lists page</a></p>
<pre><code class="language-text">To: user@bval.apache.org, dev@bval.apache.org, announce@apache.org
Subject: [ANNOUNCEMENT] Apache BVal &lt;version&gt; Released

The Apache BVal team is pleased to announce the release of:

Apache BVal &lt;version&gt;

Apache BVal delivers an implementation of the Java Bean Validation
specification 2.0.  The following changes are included in this release:

&lt;changelist&gt;

Distribution packages can be downloaded from:
http://bval.apache.org/downloads.html

When downloading, please verify signatures using the KEYS file available at:
http://www.apache.org/dist/bval/

The release is also available in the central Maven repository:
http://repo1.maven.org/maven2/org/apache/bval/

The Apache BVal Team
</code></pre>
</li>
</ol>
</li>
</ol>
<p><a name="ReleaseProcess-RecoveringFromAVetoedRelease"></a></p>
<h3 id="recovering-from-a-vetoed-release">Recovering from a vetoed release<a class="headerlink" href="#recovering-from-a-vetoed-release" title="Permalink">&para;</a></h3>
<ol>
<li>
<p>Reply to the initial vote email prepending <code>[CANCELED]</code> to the original subject.</p>
</li>
<li>
<p>Rollback the version upgrades in trunk by <em>either</em>:</p>
<ol>
<li>
<p>Restore the 0.1-rc1.tar.gz and run</p>
<pre><code class="language-sh">mvn -Papache-release release:rollback
</code></pre>
<p>, <em>or</em>:</p>
</li>
<li>
<p>Manually revert the versions in trunk to the prior version and commit</p>
</li>
</ol>
</li>
<li>
<p>Delete the git tag created by the <code>release:perform</code> step.</p>
</li>
<li>
<p>Drop the nexus staging repo:</p>
<ol>
<li><a href="https://repository.apache.org/index.html">https://repository.apache.org/index.html</a></li>
<li><strong>Enterprise --&gt; Staging</strong></li>
<li><strong>Staging tab --&gt; Name column --&gt; org.apache.bval</strong></li>
<li>Right click on the closed <code>org.apache.bval-XXX</code> staging repo and select <strong>Drop</strong>.</li>
</ol>
</li>
<li>
<p>Remove the staged site from the dev dist repo.</p>
</li>
<li>
<p>Make the required updates that caused the vote to be canceled.</p>
</li>
<li>
<p>Spin another release candidate!</p>
</li>
</ol>
<p><a name="ReleaseProcess-Verifyingreleasesignatures"></a></p>
<h3 id="verifying-release-signatures">Verifying release signatures<a class="headerlink" href="#verifying-release-signatures" title="Permalink">&para;</a></h3>
<p>On unix platforms the following command can be executed:</p>
<pre><code class="language-sh">for file in `find . -type f -iname '*.asc'`
do
    gpg --verify $  {file} 
done
</code></pre>
<p>You'll need to look at the output to ensure it contains only good signatures:</p>
<pre><code class="language-text">gpg: Good signature from ...
gpg: Signature made ...
</code></pre>


  </div>

  <hr>

  <div class="container">
    <footer>
      <p>Copyright © 2010-2021 The Apache Software Foundation. Licensed under <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a>.
        View our <a href="/privacy-policy.html">privacy policy</a>.
      </p>
      <p>Apache and the Apache feather logo are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.
      </p>
    </footer>

  </div> <!-- /container -->

  <!-- Le javascript
  ================================================== -->
  <!-- Placed at the end of the document so the pages load faster -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"; type="text/javascript"></script>
  <script src="/resources/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="/resources/css/docco.css">
  <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.0.1/build/highlight.min.js"></script>
  <script>hljs.highlightAll();</script>

</body>
</html>