blob: 5318b9d73f46350ca2f1b5e6b4ded8c691260d4d [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
<title>Apache Tamaya Release Guide</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="Homepage of Apache Tamaya (incubating)"/>
<meta name="author" content="Apache Tamaya Project Team"/>
<meta name="keywords" content="Apache Tamaya Incubating, configuration, Java, ASF, Apache Software Foundation"/>
<meta name="generator" content="JBake ${content.version}"/>
<!-- Le styles -->
<link href="css/bootstrap.min.css" rel="stylesheet"/>
<link href="css/asciidoctor.css" rel="stylesheet"/>
<link href="css/base.css" rel="stylesheet"/>
<link href="css/prettify.css" rel="stylesheet"/>
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<![endif]-->
<!-- Fav and touch icons from ASF -->
<link rel="shortcut icon" href="favicon.ico"/>
<link rel="apple-touch-icon" sizes="57x57" href="favicons/apple-touch-icon-57x57.png"/>
<link rel="apple-touch-icon" sizes="60x60" href="favicons/apple-touch-icon-60x60.png"/>
<link rel="apple-touch-icon" sizes="72x72" href="favicons/apple-touch-icon-72x72.png"/>
<link rel="apple-touch-icon" sizes="76x76" href="favicons/apple-touch-icon-76x76.png"/>
<link rel="apple-touch-icon" sizes="114x114" href="favicons/apple-touch-icon-114x114.png"/>
<link rel="apple-touch-icon" sizes="120x120" href="favicons/apple-touch-icon-120x120.png"/>
<link rel="apple-touch-icon" sizes="144x144" href="favicons/apple-touch-icon-144x144.png"/>
<link rel="apple-touch-icon" sizes="152x152" href="favicons/apple-touch-icon-152x152.png"/>
<link rel="apple-touch-icon" sizes="180x180" href="favicons/apple-touch-icon-180x180.png"/>
<link rel="icon" type="image/png" href="favicons/favicon-32x32.png" sizes="32x32"/>
<link rel="icon" type="image/png" href="favicons/favicon-194x194.png" sizes="194x194"/>
<link rel="icon" type="image/png" href="favicons/favicon-96x96.png" sizes="96x96"/>
<link rel="icon" type="image/png" href="favicons/android-chrome-192x192.png" sizes="192x192"/>
<link rel="icon" type="image/png" href="favicons/favicon-16x16.png" sizes="16x16"/>
<link rel="manifest" href="favicons/manifest.json"/>
<link rel="shortcut icon" href="favicons/favicon.ico"/>
<meta name="msapplication-TileColor" content="#603cba"/>
<meta name="msapplication-TileImage" content="favicons/mstile-144x144.png"/>
<meta name="msapplication-config" content="favicons/browserconfig.xml"/>
<meta name="theme-color" content="#303284"/>
</head>
<body onload="prettyPrint()">
<div id="wrap">
<div>
<!-- Fixed navbar -->
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Tamaya Home</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="start.html">Tamaya in 5 minutes</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="documentation/usecases.html">Use Cases and Requirements</a></li>
<li><a href="documentation/quickstart.html">Quickstart</a></li>
<li><a href="documentation/api.html">API</a></li>
<li><a href="documentation/core.html">Core</a></li>
<li><a href="documentation/extensions.html">Extension Guide</a></li>
<li class="divider"></li>
<li><a href="apidocs/stable/index.html">Javadoc 0.4-incubating (release/stable)</a></li>
<li><a href="apidocs/development/index.html">Javadoc 0.5-incubating-SNAPSHOT (development)</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">
<li><a href="development/source.html">Sources</a></li>
<li><a href="development/community.html">Community</a></li>
<li><a href="development/team.html">Project Team</a></li>
<li><a target="_blank" href="https://builds.apache.org/view/S-Z/view/Tamaya/">CI / ASF Jenkins</a></li>
<li><a target="_blank" href="https://issues.apache.org/jira/browse/TAMAYA">Issues / ASF Jira</a></li>
<li><a href="devguide.html">Development Guide</a></li>
<li><a href="release-guide.html">Release Guide</a></li>
<li class="divider"></li>
<li><a href="development/possible-contributions.html">Possible Contributions</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Releases <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="download.html">Download</a></li>
<li><a href="history.html">Release History</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://www.apache.org/">Apache Software Foundation (ASF)</a></li>
<li><a href="https://www.apache.org/foundation/how-it-works.html">How the ASF works</a></li>
<li><a href="https://www.apache.org/foundation/getinvolved.html">Get Involved</a></li>
<li><a href="https://www.apache.org/dev/">Developer Resources</a></li>
<li><a href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="https://www.apache.org/licenses/">License</a></li>
<li><a href="https://www.apache.org/security">Security</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<hr/>
<li><a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-125x125.png" alt="Current Apache event"/></a></li>
</ul>
</li>
<!-- Example:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
-->
<li><a href="sitemap.xml">Sitemap</a></li>
<li><a href="feed.xml">Subscribe</a></li>
<li><a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
<img class="incubator-logo" src="logos/apache-incubator.png"/></a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container">
<div class="page-header">
<h1>Apache Tamaya Release Guide</h1>
</div>
<p><em>2019-11-17</em></p>
<p><div id="preamble">
<div class="sectionbody">
<div class="paragraph lead">
<p>This document describes how to perform a release of Apache Tamaya
API&amp;Core and Apache Tamaya Extensions during
its incubation. It contains a step by step description of each step,
so everybody in the commiters&#8217;s team will be able to perform
the release procedure during the incubation phase.
Differences in the procedure between Tamaya API&amp;Core and Tamaya
Extensions are mentioned.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_prerequisites">1. Prerequisites</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This section describes the prerequisite which must be given to
perform the release procedure.</p>
</div>
<div class="olist upperroman">
<ol class="upperroman" type="I">
<li>
<p>Subversion client, needed to upload the source distribution.</p>
</li>
<li>
<p>Git</p>
</li>
<li>
<p>A valid GPG key, needed to sign all artifacts created during
the release process.</p>
</li>
</ol>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_performing_the_release">2. Performing the release</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_tell_the_others_you_would_proceed_with_the_release_procedure">2.1. Tell the others you would proceed with the release procedure</h3>
<div class="paragraph">
<p>The first step is to announce on developer mailing list that
you plan to release a new version of Tamaya API&amp;Core as well
as of the Tamaya Extensions.</p>
</div>
<div class="paragraph">
<p>Take the mail template below, adapt it if necessary, an send it
to <a href="mailto:dev@tamaya.incubator.apache.org">dev@tamaya.incubator.apache.org</a>.</p>
</div>
<div class="listingblock">
<div class="title">Subject of the announcement of an upcomming release</div>
<div class="content">
<pre>Starting with the preparation of the next release of &lt;&lt;project&gt;&gt;</pre>
</div>
</div>
<div class="listingblock">
<div class="title">Body of the announcement of an upcomming release.</div>
<div class="content">
<pre>Dear all,
If there are no objections, I'll start with the first steps for
the next release of &lt;&lt;project&gt;&gt; (review, documentation,...).
It would be great to start with the release procedure next week.
Best regards,
&lt;&lt;your name&gt;&gt;</pre>
</div>
</div>
<div class="paragraph">
<p>Don&#8217;t expect that everyone will response immediately as we all are very
busy. So be patient with you team members. Meanwhile you can
proceed with the release preparations.</p>
</div>
</div>
<div class="sect2">
<h3 id="_check_if_everything_is_ready">2.2. Check if everything is ready</h3>
<div class="paragraph">
<p>The following items must be done before you can start with the
actual release process.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Check if the build chains in
<a href="https://builds.apache.org/view/Tamaya/" target="_blank" rel="noopener">Apache&#8217;s Jenkins</a>
of the project in to be released are fine and where are
no problems with the build and quality of the project.</p>
</li>
<li>
<p>Ensure that all
<a href="https://issues.apache.org/jira/projects/TAMAYA" target="_blank" rel="noopener">JIRA</a> issues
targeting the upcomming release are resolved.
If not, get in contact with the issue assignee or the reporter to
check</p>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>if the issue can be postponed for the next release</p>
</li>
<li>
<p>how long it takes to resolve it and if someone can help.</p>
</li>
</ol>
</div>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_prepare_the_release_notes">2.3. Prepare the release notes</h3>
<div class="ulist">
<ul>
<li>
<p>Create release notes and commit them to the <code>/readme/</code>
directory of the project. The file name of the release
notes document should be <code>ReleaseNotes-[version].html</code>.</p>
</li>
</ul>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<div class="title">Tip</div>
</td>
<td class="content">
<div class="paragraph">
<p>Ensure that you include only notes an the release notes
which affect the project you are releasing.
For instance a notes on an issues which affects Tamaya Extensions
should not be included in the release notes of Tamaya API&amp;Core.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_preparing_the_vote_of_the_ppmc_on_the_release">2.4. Preparing the vote of the PPMC on the release</h3>
<div class="paragraph">
<p>If you are sure that everything is ready for the
next release you can start the vote of the PPMC
on the proposed release.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<div class="title">Important</div>
</td>
<td class="content">
<div class="paragraph">
<p>Keep in mind that preparing the release
really means only to prepare the release by
uploading it to the dev area of the
<a href="https://dist.apache.org" target="_blank" rel="noopener">distribution
server of the Apache project</a> and to a staging
repository of <a href="https://repository.apache.org" target="_blank" rel="noopener">Apache&#8217;s Nexus</a>.</p>
</div>
<div class="paragraph">
<p>You must not publish the artifacts created during
the preparation of the release until the IPMC as well
as the PPMC of Apache Tamaya have approved the release.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Before you can present the proposed release to the
IPMC of the Apache Incubator, the proposed release must be
approved by the PPMC of the Tamaya project.</p>
</div>
<div class="paragraph">
<p>Therefore you must run a vote on the proposed release
by creating a vote candidat in the Git repository of
the project, uploading the source distribution
to the dev area of the distribution server of the Apache
project and uploading the Maven artifacts to a staging
repository in Apache&#8217;s Nexus. This sounds complicated
but it isn&#8217;t that complicated if you follow the steps
of this guide.</p>
</div>
<div class="paragraph">
<p>In case the vote candidate does not pass the vote of
the PPMC or the IPMC you can choose between
canceling the current attempt for the next release
or you try to fix the issues which hinders people to
vote with yes. If you have choosen the second
way then you have to prepare a new vote candidat.</p>
</div>
</div>
<div class="sect2">
<h3 id="_preparing_the_release_without_the_release_plugin">2.5. Preparing the release without the Release Plugin</h3>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
<div class="paragraph">
<p>We tried to use the <a href="http://maven.apache.org/maven-release/maven-release-plugin/" target="_blank" rel="noopener">Maven Release Plugin</a>
to increase the level of automatisation of the release process, but
we were not able to get the Maven Release Plugin working as we
need it for our release process. Therefore we decided not to use
it.</p>
</div>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The first step is to create a separate branch for the release canidate.
The name should consist of the release version and the number of the
voting candidate.</p>
</div>
<div class="paragraph">
<p>For example if you would like to run a vote for the 1.0 release of
Tamaya API&amp;Core during its incubation for the second time, the usual
branch name would be <code>vote-1.0-incubating-02</code>.</p>
</div>
<div class="paragraph">
<p>Follow the instructions below to create the branch for the vote
and to build the vote candidate.</p>
</div>
<div class="listingblock">
<div class="title">Creating the vote branch and building the vote candidat</div>
<div class="content">
<pre>$ git checkout -b vote-[release version]-[attempt] <b class="conum">(1)</b> <b class="conum">(2)</b>
$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=200m"
$ mvn versions:set versions:commit -DnewVersion=[release version] -DperformRelease=true
$ mvn clean install -DperformRelease=true -Dgpg.keyname=[key] -Dgpg.passphrase=[passphrase] <b class="conum">(3)</b> <b class="conum">(4)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>The version number of the planed release, e.g. <code>0.4-incubating</code></p>
</li>
<li>
<p>The number of the current vote, e.g. <code>03</code></p>
</li>
<li>
<p>The id of your GPG key.</p>
</li>
<li>
<p>The passphrase of you GPG key.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Now you can check the source distribution and the Maven artifacts created
during the build.</p>
</div>
<div class="paragraph">
<p>If everything is correct, deploy them to a staging repository on Apache&#8217;s
Nexus.</p>
</div>
<div class="listingblock">
<div class="title">Deploying the vote candidate to Apache&#8217;s Nexus'</div>
<div class="content">
<pre>$ mvn deploy -DperformRelease=true</pre>
</div>
</div>
<div class="admonitionblock caution">
<table>
<tr>
<td class="icon">
<div class="title">Caution</div>
</td>
<td class="content">
If you forget the <em>performRelease</em> flag the signature files will be missing.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">
Ensure you have configured your Apache <em>userid</em> and <em>password</em> in your <code>settings.xml</code> for the Apache
Nexus server (id: <code>apache.releases.https</code>). Without uploading of your artifacts will fail.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>After deploying the artifacts you have to check the staging repository
created in Apache&#8217;s Nexus:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Login to <a href="https://repository.apache.org/" class="bare" target="_blank" rel="noopener">https://repository.apache.org/</a> and go to <em>Staging Repositories</em>.</p>
</li>
<li>
<p>Check the Contents of the newly create staging repository for you release.</p>
</li>
<li>
<p>Close the staging repository to let Nexus do its validations on the deployed
artifacts.</p>
</li>
</ol>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<div class="title">Important</div>
</td>
<td class="content">
Do not release the content of the stating repository right now.
Releasing means to publish the artifacts. This will be done
after a successful vote of the IPMC.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If everything is correct until now, commit your local changes, create a tag for
the voting candidate and push the tag and your commits to the Git
repository.</p>
</div>
<div class="listingblock">
<div class="title">Commiting the changes done for the vote candidate</div>
<div class="content">
<pre>$ git add -A
$ git commit -m "Release Prepare: Set release version."
$ git tag vote-[release version]-[attempt]
$ git push --tags</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>The version number of the planed release, e.g. <code>0.4-incubating</code></p>
</li>
<li>
<p>The number of the current vote, e.g. <code>03</code></p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Finally open the next development version of the project.</p>
</div>
<div class="listingblock">
<div class="title">Set next development version of the project</div>
<div class="content">
<pre>$ mvn version:set versions:commit -DnewVersion=[development version] <b class="conum">(1)</b>
$ git add -A
$ git commit -m "Release Prepare: Open new development version."</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Next development version, e.g. <code>0.83-incubating-SNAPSHOT</code></p>
</li>
</ol>
</div>
<div class="paragraph">
<p>After setting the new development version you have to add the source
distribution to the distribution repository at <a href="https://dist.apache.org/repos/dist/" class="bare" target="_blank" rel="noopener">https://dist.apache.org/repos/dist/</a>.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<div class="title">Important</div>
</td>
<td class="content">
The source distribution and all required artifacts must be added
to the development directory of Apache&#8217;s distribution server.
After the approvement of the release candidate by the PPMC and
the IPMC they will be moved to the release directory.
</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">Adding all needed artifacts to distribution repository</div>
<div class="content">
<pre>$ svn co https://dist.apache.org/repos/dist/dev/incubator/tamaya/
$ mkdir [release version]/[project] <b class="conum">(1)</b>
$ set RELEASE_HOME=`pwd`/[release version]/[project]
$ set PROJECT_ROOT=[repository of the project] <b class="conum">(2)</b>
$ cd $PROJECT_ROOT
$ cp DISCLAIMER $RELEASE_HOME
$ cp NOTICE $RELEASE_HOME
$ cp LICENCE $RELEASE_HOME
$ cp keys/KEYS $RELEASE_HOME
$ cp $PROJECT_ROOT/cp distribution/target/*{.tar.gz,.zip,.asc} $RELEASE_HOME <b class="conum">(3)</b>
$ svn add [version]
$ svn add [version]/[project]</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>We store the artifacts of Tamaya API&amp;Core and Tamaya Extensions always
in different subdirectories. So <em>project</em> can be either
<code>apiandcore</code> or <code>extensions</code>.</p>
</li>
<li>
<p><code>PROJECT_ROOT</code> is the Git repository of the project which you want to
release.</p>
</li>
<li>
<p>This command copies both distribution archives to <code>$RELEASE_HOME</code>.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Additionally there must be a SHA-1 and MD5 sigature file for each distribution
archive and its GPG signature (<code>.asc</code>). To generate them you need programs
like <code>md5</code> and <code>shasum</code>. The name of these programs might vary from system to system.</p>
</div>
<div class="listingblock">
<div class="title">Generating the required SHA-1 and MD5 signatures</div>
<div class="content">
<pre>$ cd $RELEASE_HOME
$ for f in $(ls *{.tar.gz,.zip,.asc}); do shasum -a 1 $f &gt; ${f}.sha1; md5 $f &gt; ${f}.md5; done</pre>
</div>
</div>
<div class="paragraph">
<p>After generating the signature files you can add and commit all files and artifacts
of the source distribution.</p>
</div>
<div class="listingblock">
<div class="title">Adding and commiting the source distribution</div>
<div class="content">
<pre>$ cd $RELEASE_HOME
$ svn add [project]
$ svn add [version]
$ svn commit --username [Apache ID]</pre>
</div>
</div>
<div class="paragraph">
<p>All commited files and artifacts should be now available via
<a href="https://dist.apache.org/repos/dist/dev/incubator/tamaya/" target="_blank" rel="noopener">https://dist.apache.org/repos/dist/dev/incubator/tamaya/&#91;version&#93;/&#91;project&#93;</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_run_the_vote_on_the_release_candidate">3. Run the vote on the release candidate</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_run_the_internally">3.1. Run the internally</h3>
<div class="paragraph">
<p>The next step is to prepare the vote on <a href="mailto:dev@tamaya.incubator.apache.org" target="_blank" rel="noopener">dev@tamaya.incubator.apache.org</a>.
The mail must contain serveral links, e.g. a link to the source distribution
and a link to the tag in the Git repository.</p>
</div>
<div class="paragraph">
<p>The following links are needed for the mail:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>A link to the source distribution in the dev section of the distribution repository
at <a href="https://dist.apache.org/repos/dist/dev/incubator/tamaya/" class="bare" target="_blank" rel="noopener">https://dist.apache.org/repos/dist/dev/incubator/tamaya/</a>.</p>
</li>
<li>
<p>A link to the tag of the release candidate, taken from
<a href="https://git1-us-west.apache.org/repos/asf?p=incubator-tamaya.git;a=summary" class="bare" target="_blank" rel="noopener">https://git1-us-west.apache.org/repos/asf?p=incubator-tamaya.git;a=summary</a>.</p>
</li>
<li>
<p>A link to the staging repository for the release candidate of the intended
relase at <a href="http://repository.apache.org/content/repositories" class="bare" target="_blank" rel="noopener">http://repository.apache.org/content/repositories</a>.</p>
</li>
<li>
<p>A link to to the <a href="http://www.apache.org/foundation/voting.html#ReleaseVotes" target="_blank" rel="noopener">rules for release votes</a>
in the <em>Apache Voting Process</em> document.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Take the mail template below, insert the links, an send it
to <a href="mailto:dev@tamaya.incubator.apache.org">dev@tamaya.incubator.apache.org</a>.</p>
</div>
<div class="listingblock">
<div class="title">Subject of the vote on the release candidate</div>
<div class="content">
<pre>[Vote] Release of [project] [version] <b class="conum">(1)</b> <b class="conum">(2)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by either Apache Tamaya API&amp;Core or Apache Tamaya Extensions</p>
</li>
<li>
<p>Replace <em>version</em> by the version number of the release</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="title">Body of the vote on the release candidate</div>
<div class="content">
<pre>[VOTE] Release of [project] [version] <b class="conum">(1)</b> <b class="conum">(2)</b>
Hi,
I was running the needed tasks to get the [version] release of [project] out. <b class="conum">(1)</b> <b class="conum">(2)</b>
The artifacts available via the Apache distribution repository [1] and
also via Apache's Nexus [2].
The tag for this release candidate is available at [3] and will be renamed
once the vote passed.
Please take a look at the artifacts and vote!
Please note:
This vote is a "majority approval" with a minimum of three +1 votes (see [4]).
------------------------------------------------
[ ] +1 for community members who have reviewed the bits
[ ] +0
[ ] -1 for fatal flaws that should cause these bits not to be released, and why ...
------------------------------------------------
Thanks,
[name]
[1] [link to the source distribution] <b class="conum">(3)</b>
[2] [link to the staging repository at Apache's Nexus] <b class="conum">(4)</b>
[3] [link to the tag in the Git repository] <b class="conum">(5)</b>
[4] http://www.apache.org/foundation/voting.html#ReleaseVotes</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by the name of the project to be release, which can be
<em>Apache Tamaya API&amp;Core</em> or <em>Apache Tamaya Extensions</em>.</p>
</li>
<li>
<p>Replease <em>version</em> by the version number of the intended release.</p>
</li>
<li>
<p>Insert here the link to the source distribution of the project
in the dev section of distribution repository
at <a href="https://dist.apache.org/repos/dist/dev/incubator/tamaya/" class="bare" target="_blank" rel="noopener">https://dist.apache.org/repos/dist/dev/incubator/tamaya/</a>.</p>
</li>
<li>
<p>Insert here the link to the staging repository for the release candidate
at <a href="http://repository.apache.org/content/repositories" class="bare" target="_blank" rel="noopener">http://repository.apache.org/content/repositories</a>.</p>
</li>
<li>
<p>Insert here the link to the tag created for the release candidate
in the Git repository.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Wait at least 72 hours before you close the result. If there is not enough attention
at the mailing list to vote, send a nice reminder to the list. Please keep in mind
that people might be simple to busy to respond on your vote.</p>
</div>
<div class="paragraph">
<p>To close the vote count all single votes and send the result as reply to your
initial mail to the mailinglist by using the templates below.</p>
</div>
<div class="listingblock">
<div class="title">Subject of the mail with the result of the vote</div>
<div class="content">
<pre>[Result] (was: Re: [VOTE] Release of [project] [version]) <b class="conum">(1)</b> <b class="conum">(2)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by the name of the project to be release, which can be
<em>Apache Tamaya API&amp;Core</em> or <em>Apache Tamaya Extensions</em>.</p>
</li>
<li>
<p>Replease <em>version</em> by the version number of the intended release.</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="title">Body of the mail with the result of the vote</div>
<div class="content">
<pre>Thank you for voting!
X binding +1 votes (PPMC): <b class="conum">(1)</b>
[list] <b class="conum">(2)</b>
Y non-binding +1 votes: <b class="conum">(3)</b>
[list] <b class="conum">(4)</b>
Z -1 votes: <b class="conum">(5)</b>
[list] <b class="conum">(6)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>X</em> by the number of positive votes by PPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of PPMC members with a positive vote</p>
</li>
<li>
<p>Replace <em>Y</em> by the number of non-binding positive votes by
non-PPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of non-PPMC members with a positive vote</p>
</li>
<li>
<p>Replace <em>Z</em> by the number of negative votes by PPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of PPMC members with a negative vote</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>After the vote on the PPMC has been finished and is successful,
repeat the voting process on the incubator mailing list.</p>
</div>
</div>
<div class="sect2">
<h3 id="_let_the_ipmc_vote_on_the_release_candidate">3.2. Let the IPMC vote on the release candidate</h3>
<div class="paragraph">
<p>During the incubation phase of Tamaya, each release must be approved
by the IPMC.</p>
</div>
<div class="paragraph">
<p>The first step is to subscribe to the mailinglist
<a href="mailto:general@incubator.apache.org">general@incubator.apache.org</a>.
More information and how to do this can be found on
<a href="https://incubator.apache.org/guides/lists.html" class="bare" target="_blank" rel="noopener">https://incubator.apache.org/guides/lists.html</a>.</p>
</div>
<div class="paragraph">
<p>The mail, which must be send to the list, is quite similar
to the one for the PPMC, but it must also contain a link
to the mail thread of the successful vote of the PPMC.
The archive of the developers mailinglist of Apache Tamaya
can be found at <a href="https://lists.apache.org/list.html?dev@tamaya.apache.org">https://lists.apache.org</a>.</p>
</div>
<div class="paragraph">
<p>The mail to the IPMC can be composed by using these both
templates:</p>
</div>
<div class="listingblock">
<div class="title">Subject of the vote on the release candidate</div>
<div class="content">
<pre>[Vote] Release of [project] [version] <b class="conum">(1)</b> <b class="conum">(2)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by either Apache Tamaya API&amp;Core or Apache Tamaya Extensions</p>
</li>
<li>
<p>Replace <em>version</em> by the version number of the release</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="title">Body of the vote on the release candidate</div>
<div class="content">
<pre>[VOTE] Release of [project] [version] <b class="conum">(1)</b> <b class="conum">(2)</b>
Dear IPMC members,
The Apache Tamaya project was running the needed tasks to get
the [version] release of [project] out. <b class="conum">(1)</b> <b class="conum">(2)</b>
The artifacts available via the Apache distribution repository [1] and
also via Apache's Nexus [2].
The tag for this release candidate is available at [3]
The mail thread of the vote can be found at [4].
Please take a look at the artifacts and vote!
Please note:
This vote is a "majority approval" with a minimum of three +1 votes (see [5]).
------------------------------------------------
[ ] +1 for IPMC members who approve this release
[ ] +0 for IPMC members with no opinion on this release
[ ] -1 for IPMC members who reject this release, and why ...
------------------------------------------------
Thanks,
[name]
[1] [link to the source distribution] <b class="conum">(3)</b>
[2] [link to the staging repository at Apache's Nexus] <b class="conum">(4)</b>
[3] [link to the tag in the Git repository] <b class="conum">(5)</b>
[4] [link to the thread of the vote by the PPMC.] <b class="conum">(6)</b>
[5] http://www.apache.org/foundation/voting.html#ReleaseVotes</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by the name of the project to be release, which can be
<em>Apache Tamaya API&amp;Core</em> or <em>Apache Tamaya Extensions</em>.</p>
</li>
<li>
<p>Replease <em>version</em> by the version number of the intended release.</p>
</li>
<li>
<p>Insert here the link to the source distribution of the project
in the dev section of distribution repository
at <a href="https://dist.apache.org/repos/dist/dev/incubator/tamaya/" class="bare" target="_blank" rel="noopener">https://dist.apache.org/repos/dist/dev/incubator/tamaya/</a>.</p>
</li>
<li>
<p>Insert here the link to the staging repository for the release candidate
at <a href="http://repository.apache.org/content/repositories" class="bare" target="_blank" rel="noopener">http://repository.apache.org/content/repositories</a>.</p>
</li>
<li>
<p>Insert here the link to the tag created for the release candidate
in the Git repository.</p>
</li>
<li>
<p>Insert here the link to vote thread on Tamaya&#8217;s developer mailinglist
for this release candidate</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Send the mail to general@incubator.apache.org and let
the vote run for at least 72 hours.</p>
</div>
<div class="paragraph">
<p>To close the vote count all single votes and send the result as reply
to your initial mail to the mailinglist by using the templates below:</p>
</div>
<div class="listingblock">
<div class="title">Subject of the mail with the result of the vote</div>
<div class="content">
<pre>[Result] (was: Re: [VOTE] Release of [project] [version]) <b class="conum">(1)</b> <b class="conum">(2)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>project</em> by the name of the project to be release, which can be
<em>Apache Tamaya API&amp;Core</em> or <em>Apache Tamaya Extensions</em>.</p>
</li>
<li>
<p>Replease <em>version</em> by the version number of the intended release.</p>
</li>
</ol>
</div>
<div class="listingblock">
<div class="title">Body of the mail with the result of the vote</div>
<div class="content">
<pre>Thank you for voting!
X binding +1 votes (PPMC): <b class="conum">(1)</b>
[list] <b class="conum">(2)</b>
Y non-binding +1 votes: <b class="conum">(3)</b>
[list] <b class="conum">(4)</b>
Z -1 votes: <b class="conum">(5)</b>
[list] <b class="conum">(6)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>X</em> by the number of positive votes by IPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of IPMC members with a positive vote</p>
</li>
<li>
<p>Replace <em>Y</em> by the number of non-binding positive votes by
non-IPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of non-PPMC members with a positive vote</p>
</li>
<li>
<p>Replace <em>Z</em> by the number of negative votes by IPMC members</p>
</li>
<li>
<p>Replace <em>list</em> by the names of IPMC members with a negative vote</p>
</li>
</ol>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_performing_the_release_2">4. Performing the release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The actually release process can be started if the binding majority
of IPMC members have approved the release candidate.</p>
</div>
<div class="paragraph">
<p>The first task is to create branch for the new release
out of the branch, created for the vote on the release candidate.</p>
</div>
<div class="sect2">
<h3 id="_tag_and_branch_for_the_release">4.1. Tag and branch for the release</h3>
<div class="paragraph">
<p>Creating this branch requires multiple commands, as Git does not
allow to simply rename a remote branch. The listing below shows
which commands are needed to create a branch for the new release</p>
</div>
<div class="listingblock">
<div class="title">Renaming the branch of the release candidate</div>
<div class="content">
<pre>$ git checkout master <b class="conum">(1)</b>
$ git branch release-[version] vote-[version]-[attempt] <b class="conum">(2)</b> <b class="conum">(3)</b> <b class="conum">(4)</b>
$ git push origin release-[version]:refs/heads/release-[version] <b class="conum">(5)</b>
$ git push origin :vote-[version]-[attempt] <b class="conum">(6)</b>
$ git branch -D vote-[version]-[attempt] <b class="conum">(7)</b>
$ git checkout -b release-[version] --track origin/release-[version] <b class="conum">(8)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Switching back to <code>master</code></p>
</li>
<li>
<p>Creating a release branch out of the vote branch</p>
</li>
<li>
<p>Replace <em>version</em> by the version number of the release</p>
</li>
<li>
<p>Replace <em>attempt</em> by the number of the successful vote attempt</p>
</li>
<li>
<p>Pushing the new branch under the same name to the blessed repository</p>
</li>
<li>
<p>Delete the vote branch in the blessed remote repository</p>
</li>
<li>
<p>Delete the branch locally</p>
</li>
<li>
<p>Checkout the new release branch and set the corresponding
remote branch as upstream branch</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Now create a new tag for the release based on the exsting tag
for the release candidate and delete the tag made for
the release candidate:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ git tag release-[version] vote-[version]-[attempt] <b class="conum">(1)</b> <b class="conum">(2)</b> <b class="conum">(3)</b>
$ git tag -d vote-[version]-[attempt] <b class="conum">(4)</b>
$ git push origin :vote-[version]-[attempt] <b class="conum">(5)</b>
$ git push --tags origin <b class="conum">(6)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Creating a release tag for the release</p>
</li>
<li>
<p>Replace <em>version</em> by the version number of the release</p>
</li>
<li>
<p>Replace <em>attempt</em> by the number of the successful vote attempt</p>
</li>
<li>
<p>Delete the tag made for the vote locally</p>
</li>
<li>
<p>Delete tag tag mode for the vote in the blessed remote repository</p>
</li>
<li>
<p>Push the new tag to the remote repository</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Now you can merge the new release branch with the prepared
development version to master.</p>
</div>
<div class="listingblock">
<div class="title">Merging the release branch to <code>master</code></div>
<div class="content">
<pre>$ git checkout master
$ git merge release-[version]
$ git push origin master</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_cleanup_jira">4.2. Cleanup Jira</h3>
<div class="paragraph">
<p>Login into <a href="https://issues.apache.org/jira/browse/tamaya">Apache&#8217;s Jira</a> and
close all issues in the
<a href="https://issues.apache.org/jira/browse/tamaya" target="_blank" rel="noopener">Tamaya project</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_release_the_staging_repository">4.3. Release the staging repository</h3>
<div class="paragraph">
<p>Login into <a href="https://repository.apache.org/" target="_blank" rel="noopener">Apaches Nexus</a> and
release to staging repository for the new release.</p>
</div>
<div class="paragraph">
<p>Then wait some minutes and check if the artifacts have become
available at <a href="http://repo2.maven.org/maven2/org/apache/tamaya" class="bare" target="_blank" rel="noopener">http://repo2.maven.org/maven2/org/apache/tamaya</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="_releasing_the_distribution_artifacts">4.4. Releasing the distribution artifacts</h3>
<div class="paragraph">
<p>The source distribution of the release candidate must now be
moved from the dev section of the distribution repository
to the release section.</p>
</div>
<div class="paragraph">
<p>An easy way to achive this is to use the <code>svn mv</code> command
only with remote URLs. Before you move the distribution artifacts,
make sure the the directory for the version of the projects exists.</p>
</div>
<div class="listingblock">
<div class="title">Checking if the target directory exists in SVN</div>
<div class="content">
<pre>$ svn ls https://dist.apache.org/repos/dist/release/incubator/tamaya</pre>
</div>
</div>
<div class="paragraph">
<p>If the directory does not exists, create it.</p>
</div>
<div class="listingblock">
<div class="title">Creating the directory for the version of the release</div>
<div class="content">
<pre>$ svn mkdir https://dist.apache.org/repos/dist/release/incubator/tamaya/[version] <b class="conum">(1)</b></pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>version</em> by the version number of the release.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Now move all distribution artifacts from the dev section to the release
section.</p>
</div>
<div class="listingblock">
<div class="title">Moving the source distribution to the release section with SVN</div>
<div class="content">
<pre>$ svn mv \
https://dist.apache.org/repos/dist/dev/incubator/tamaya/[version]/[project] \ <b class="conum">(1)</b> <b class="conum">(2)</b>
https://dist.apache.org/repos/dist/release/incubator/tamaya/[version]/[project]</pre>
</div>
</div>
<div class="colist arabic">
<ol>
<li>
<p>Replace <em>version</em> by the version number of the release.</p>
</li>
<li>
<p>Replace <em>project</em> by the name of the project.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>To be sure that everything wents well, perform a checkout of the SVN
repository for the release section and check if everything is there.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>$ svn checkout https://dist.apache.org/repos/dist/release/incubator/tamaya
$ cd tamaya
$ ls -Rlah</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_updating_the_website_and_announcing_the_release">5. Updating the website and announcing the release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Coordindate on the developers mailinglist the update of the website
for the new version and the announcement of the new version.</p>
</div>
</div>
</div></p>
<hr />
</div>
</div>
<div>
<div id="push"></div>
<div id="footer">
<div class="container">
<p class="muted credit">&copy; 2014-<span>2019</span> Apache Software Foundation | Mixed with <a href="https://getbootstrap.com/">Bootstrap v3.1.1</a>
| Baked with <a href="https://jbake.org">JBake <span>v2.6.4</span></a>
at <span>2019-11-17</span> |
<a class="twitter-follow-button" data-show-count="false" href="https://twitter.com/tamayaconf">Follow @tamayaconf</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</p>
<p>
<b>Disclaimer</b>
Apache Tamaya (incubating) is an effort undergoing
incubation at
The Apache Software Foundation (ASF), sponsored by
the Apache Incubator. Incubation is required of
all newly accepted projects until a further review indicates
that the infrastructure, communications, and decision making
process have stabilized in a manner consistent with other
successful ASF projects. While incubation status is not
necessarily a reflection of the completeness or stability of
the code, it does indicate that the project has yet to
be fully endorsed by the ASF.<br />
Apache, Apache Tamaya, and the Apache Tamaya logo are registered trademarks or trademarks of The Apache Software Foundation in the U.S. and/or other countries.<br />
<a href="https://incubator.apache.org/guides/website.html" style="border:0px;" target="_target">
<img class="incubator-logo" src="logos/apache-incubator.png" style="height: 50px;"/>
</a>
</p>
</div>
</div>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="js/jquery-1.11.1.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/prettify.js"></script>
</div>
</body>
</html>