blob: c7a2dd8916a60d9fc90c070493786ed084ecb296 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Creating an official Apache James release :: Apache James</title>
<meta name="generator" content="Antora 2.3.4">
<link rel="stylesheet" href="../../../_/css/site.css">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://james.apache.org"><img src="/_/img/james.svg" alt="james logo"> Apache James</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<div class="navbar-end">
<a class="navbar-item" href="#">Home</a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Products</a>
<div class="navbar-dropdown">
<div class="navbar-item"><strong>James server</strong></div>
<a class="navbar-item" href="https://github.com/apache/james-project">Repository</a>
<a class="navbar-item" href="https://issues.apache.org/jira/projects/JAMES/issues">Issue Tracker</a>
<hr class="navbar-divider">
<a class="navbar-item" href="https://james.apache.org/mime4j/index.html">Mime4J</a>
<a class="navbar-item" href="https://james.apache.org/jsieve/index.html">jSieve</a>
<a class="navbar-item" href="https://james.apache.org/jspf/index.html">jSPF</a>
<a class="navbar-item" href="https://james.apache.org/jdkim/index.html">jDKIM</a>
<a class="navbar-item" href="https://james.apache.org/hupa/index.html">HUPA</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Community</a>
<div class="navbar-dropdown">
<!-- Not ideal but dropping the version in the href requires tweaking james-projet docs module first -->
<a class="navbar-item" href="/james-project/3.6.0/community/mailing-lists.html">Mailing lists</a>
<a class="navbar-item" href="https://gitter.im/apache/james-project"><svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 32 32" class="logo-gitter-sign" data-v-44ebcb1a=""><rect x="15" y="5" width="2" height="10"></rect> <rect x="10" y="5" width="2" height="20"></rect> <rect x="5" y="5" width="2" height="20"></rect> <rect width="2" height="15"></rect></svg> Gitter</a>
<a class="navbar-item" href="https://twitter.com/ApacheJames">
<span class="icon">
<svg aria-hidden="true" data-icon="twitter" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
<path fill="#57aaee" d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path>
</svg>
</span> Twitter
</a>
<a class="navbar-item" href="#"> <svg class="octicon octicon-mark-github v-align-middle" viewBox="0 0 16 16" version="1.1" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg> Github</a>
</div>
</div>
<!-- <div class="navbar-item">
<span class="control">
<a class="button is-primary" href="#">Download</a>
</span>
</div> -->
</div>
</div>
</nav>
</header>
<div class="body">
<div class="nav-container" data-component="james-project" data-version="3.8.1">
<aside class="nav">
<div class="panels">
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<button class="nav-menu-toggle" aria-label="Toggle expand/collapse all" style="display: none"></button>
<h3 class="title"><a href="../index.html">Apache James Server</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/index.html">Concepts</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/user/index.html">User Model</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/mail/index.html">Emails</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/messages/index.html">Messages</a>
<ul class="nav-list">
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../concepts/messages/imf.html">IMF</a>
</li>
<li class="nav-item" data-depth="4">
<a class="nav-link" href="../concepts/messages/mime.html">MIME</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/protocols/index.html">Protocols</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/smtp.html">SMTP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/pop.html">POP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/imap.html">IMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/jmap.html">JMAP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/esmtp.html">ESMTP</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/protocols/lmtp.html">LMTP</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../concepts/storage/index.html">Storage</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/storage/mailbox.html">Mailboxes</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../concepts/storage/users.html">Users</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/processing/index.html">Processing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/configuration.html">Configuration</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../concepts/glossary.html">Glossary</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/index.html">Servers</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/demo.html">Demo</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/5-minute-demo.html">Short Demo</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/15-minute-demo.html">Long Demo</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../servers/basic/index.html">Basic</a>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/context.html">Context</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/objectives.html">Objectives</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/concepts.html">Concepts</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/architecture.html">Architecture</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/conf/index.html">Configuration</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="../servers/basic/help.html">Help</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../servers/extendable.html">Extendable</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../servers/test.html">Test</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="../customization/index.html">Customization</a>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="../development/index.html">Developer Guide</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="../development/logging.html">Logging in Apache James</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<button class="nav-item-toggle"></button>
<a class="nav-link" href="index.html">Community</a>
<ul class="nav-list">
<li class="nav-item" data-depth="2">
<a class="nav-link" href="mailing-lists.html">Mailing lists</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="contributing.html">Contributing</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="guidelines.html">Guidelines</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="download.html">Download releases</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="website.html">Building and publishing the website</a>
</li>
<li class="nav-item is-current-page" data-depth="2">
<a class="nav-link" href="release.html">Creating an official Apache James release</a>
</li>
<li class="nav-item" data-depth="2">
<a class="nav-link" href="support.html">Professional support</a>
</li>
<li class="nav-item" data-depth="2">
<button class="nav-item-toggle"></button>
<span class="nav-text">Apache Software Foundation</span>
<ul class="nav-list">
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/">ASF</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/getinvolved.html">Get involved</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/licenses/">Licenses</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/security/">Security</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li class="nav-item" data-depth="3">
<a class="nav-link" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Apache James Server</span>
<span class="version">3.8.1 SNAPSHOT</span>
</div>
<ul class="components">
<li class="component is-current">
<div class="title"><a href="../index.html">Apache James Server</a></div>
<ul class="versions">
<li class="version is-current is-latest">
<a href="../index.html">3.8.1 SNAPSHOT</a>
</li>
</ul>
</li>
<li class="component">
<div class="title"><a href="../../../james-site/latest/index.html">Apache James Site</a></div>
<ul class="versions">
<li class="version is-latest">
<a href="../../../james-site/latest/index.html">latest</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main class="article">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../../james-site/latest/homepage.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="../index.html">Apache James Server</a></li>
<li><a href="index.html">Community</a></li>
<li><a href="release.html">Creating an official Apache James release</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/james-project/blob/master/docs/modules/community/pages/release.adoc">Edit this Page</a></div>
</div>
<div class="content">
<aside class="toc sidebar" data-title="Contents" data-levels="2">
<div class="toc-menu"></div>
</aside>
<article class="doc">
<h1 class="page">Creating an official Apache James release</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Read details about <a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Publishing Maven releases to Maven Central Repository</a></p>
</div>
<div class="paragraph">
<p>In short, just follow the 'standard' process:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>prepare pom for release</p>
</li>
<li>
<p>publish snapshot</p>
</li>
<li>
<p>prepare release</p>
</li>
<li>
<p>stage the release for a vote (don&#8217;t forget to close the staging repository)</p>
</li>
<li>
<p>vote</p>
</li>
<li>
<p>release</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Don&#8217;t forget to add your key to <a href="https://downloads.apache.org/james/KEYS" class="bare">https://downloads.apache.org/james/KEYS</a></p>
</div>
<div class="literalblock">
<div class="content">
<pre>$ ssh people.apache.org
$ cd /www/www.apache.org/dist/james</pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_release_cheat_sheet"><a class="anchor" href="#_release_cheat_sheet"></a>Release cheat sheet</h2>
<div class="sectionbody">
<div class="paragraph">
<p>First, discuss your intention to perform a release on server-dev mailing list, to ensure a consensus would be reached
before starting this time-consuming process.</p>
</div>
<div class="paragraph">
<p>Then you can prepare the release materials:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Ensure the <code>CHANGELOG.md</code> and <code>upgrade-instructions.md</code> files are up to date.</p>
</li>
<li>
<p>Freeze your version in it and initiate a new iteration.</p>
</li>
<li>
<p>Write a blog post within <code>/src/homepage/_post</code> about your release.</p>
</li>
<li>
<p>Update the documentation website <code>/docs</code>, <code>src/site</code>, and <code>README.md</code> to point to your new release.</p>
</li>
<li>
<p>Update the <code>/dockerfiles</code></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Open a pull request to validate the changes.</p>
</div>
<div class="sect2">
<h3 id="_running_a_maven_release"><a class="anchor" href="#_running_a_maven_release"></a>Running a maven release</h3>
<div class="paragraph">
<p>Once merged, it is time for the maven release.</p>
</div>
<div class="paragraph">
<p>Set up your maven configuration in <code>~/.m2/settings.xml</code> :</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">&lt;settings&gt;
&lt;servers&gt;
&lt;server&gt;
&lt;id&gt;apache.snapshots.https&lt;/id&gt;
&lt;username&gt;apacheId&lt;/username&gt;
&lt;password&gt;xxxxxx&lt;/password&gt;
&lt;/server&gt;
&lt;!-- To stage a release of some part of Maven --&gt;
&lt;server&gt;
&lt;id&gt;apache.releases.https&lt;/id&gt;
&lt;username&gt;apacheId&lt;/username&gt;
&lt;password&gt;xxxxxxxx&lt;/password&gt;
&lt;/server&gt;
&lt;server&gt;
&lt;id&gt;svn.apache.org&lt;/id&gt;
&lt;username&gt;apacheId&lt;/username&gt;
&lt;password&gt;xxxxxx&lt;/password&gt;
&lt;/server&gt;
&lt;/servers&gt;
&lt;/settings&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Ensure that released branch HEAD have a clean green build on the CI.</p>
</div>
<div class="paragraph">
<p>Run these commands to perform a release, from the master branch:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn clean install -DskipTests -Djib.skip -Dmaven.javadoc.skip=true -T 4
mvn deploy -DskipTests -Dskip.jib -Dmaven.javadoc.skip=true -T 8
mvn release:clean
mvn release:prepare -Darguments="-Dmaven.javadoc.skip=true -DskipTests -Dskip.jib" -DautoVersionSubmodules=true
mvn release:perform -Darguments="-Dmaven.javadoc.skip=true -DskipTests -Dskip.jib" -DautoVersionSubmodules=true</code></pre>
</div>
</div>
<div class="paragraph">
<p>Failure to react when being prompted for git or GPG credentials might abort the release. GPG agent with a reasonable session time can be used to unlock the key before hand and reduce this risk.</p>
</div>
<div class="paragraph">
<p>Then visit <a href="https://repository.apache.org/#stagingRepositories">Apache maven repository</a>, go in staging repository, close
the corresponding artifact before performing the vote.</p>
</div>
</div>
<div class="sect2">
<h3 id="_voting_procedure"><a class="anchor" href="#_voting_procedure"></a>Voting procedure</h3>
<div class="paragraph">
<p>Send the following voting template on the server-dev mailing list to call the vote:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>Subject: Call for vote: Apache James x.x.x
Hi,
I would like to propose a new vote for x.x.x release of the Apache James server.
You can find:
- The maven release staged in repository.apache.org as the
artifact #xxx:
https://repository.apache.org/content/repositories/orgapachejames-xxx/
- The changelog for
x.x.x:
https://github.com/apache/james-project/blob/master/CHANGELOG.md
- The compatibility instructions/upgrade
recommendation:
https://github.com/apache/james-project/blob/master/upgrade-instructions.md#360-version
[You can comment on major changes ]
Voting rules:
- This is a majority approval: this release may not be vetoed.
- A quorum of 3 binding votes is required
- The vote starts at XXXXXX xxxth of xxxxx xxxx, xxxx UTC+x
- The vote ends at XXXXXX xxxth of xxxxx xxxx, xxxx UTC+x
You can answer to it just with +1 and -1. Down-votes may be motivated.
3 binding votes are expected move forward on this release.
Cheers,
PMC member name</code></pre>
</div>
</div>
<div class="paragraph">
<p>After the voting period, do the voting aftermaths. Reply in the voting thread:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>Hi all,
I am happy to announce you the vote for the x.x.x release did succeed.
The release received X positive votes, X of them being binding.
Thanks to all contributors, developers and committers who made this
possible!
In the coming hours, I will finalize the release process, namely:
- Publish the maven artifacts
- Upgrade the download page and the (old) website
- Announce the release
Cheers,
PMC member name</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_convenience_downloads_for_your_release"><a class="anchor" href="#_convenience_downloads_for_your_release"></a>Convenience downloads for your release</h3>
<div class="paragraph">
<p>Clone this SVN repository: <code><a href="https://dist.apache.org/repos/dist/release/james" class="bare">https://dist.apache.org/repos/dist/release/james</a></code></p>
</div>
<div class="paragraph">
<p>Create a folder for your release:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>mkdir server/3.x.x
cd server/3.x.x
svn add .</code></pre>
</div>
</div>
<div class="paragraph">
<p>Move the release zipped data in this folder:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The convenience ZIPs needs to be downloaded from there staged repository. This includes server/app.</p>
</li>
<li>
<p>sources can be obtained from GitHub tag</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>I use the following script to set up the uploads:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>% cat /usr/local/bin/auto_sig
#/bin/bash
# This quick bash scipt intend to help commiters
# preparing artifacts for SVN upload.
#
# Performs:
# - Hashing (sha1 + sha512)
# - Signing (main)
# - Position SVN properties
#
# $1: file to prepare
# $2: Key footprint to use for signing
sha512sum $1 &gt; $1.sha512
gpg -u $2 --output $1.asc --detach-sig --armor $1
svn add $1
svn propset svn:mime-type application/octet-stream $1
svn add $1.sha512
svn add $1.asc
svn propset svn:mime-type application/octet-stream $1.asc</code></pre>
</div>
</div>
<div class="paragraph">
<p>Once done it is time to commit! <code>svn commit -m "Upload convenience artifacts for James release 3.x.x"</code></p>
</div>
<div class="paragraph">
<p>The convenience binaries will then be available. Check that the links of the download page works.</p>
</div>
<div class="paragraph">
<p>Cleanup: Only supported release lines should be maintained. Archive the previous release by deleting them from <code>repos/dist/release</code> - the INFRA will automatically move them to archive:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>svn rm 3.5.0
svn commit -m "Archive James release 3.5.0"</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_push_docker_containers"><a class="anchor" href="#_push_docker_containers"></a>Push docker containers</h3>
<div class="admonitionblock warning">
<table>
<tr>
<td class="icon">
<i class="fa icon-warning" title="Warning"></i>
</td>
<td class="content">
Docker images are not considered as an official Apache release materials yet the Apache JAMES PMC members decided
to offer their community with a set of maintained docker images, for convenience.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Docker images includes:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>apache/james:memory-3.x.x built from <a href="https://github.com/apache/james-project/tree/master/server/apps/memory-app" class="bare">https://github.com/apache/james-project/tree/master/server/apps/memory-app</a></p>
</li>
<li>
<p>apache/james:jpa-3.x.x built from <a href="https://github.com/apache/james-project/tree/master/server/apps/jpa-app" class="bare">https://github.com/apache/james-project/tree/master/server/apps/jpa-app</a></p>
</li>
<li>
<p>apache/james:demo-3.x.x built from <a href="https://github.com/apache/james-project/tree/master/server/apps/provisioned-app" class="bare">https://github.com/apache/james-project/tree/master/server/apps/provisioned-app</a></p>
</li>
<li>
<p>apache/james:cassandra-3.x.x build from <a href="https://github.com/apache/james-project/tree/master/server/apps/cassandra-app" class="bare">https://github.com/apache/james-project/tree/master/server/apps/cassandra-app</a></p>
</li>
<li>
<p>apache/james:distributed-3.x.x built from <a href="https://github.com/apache/james-project/tree/master/server/apps/distributed-app" class="bare">https://github.com/apache/james-project/tree/master/server/apps/distributed-app</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>As a committer contact the INFRA and hand them your docker-hub account to get the permission.</p>
</div>
</div>
<div class="sect2">
<h3 id="_other_steps"><a class="anchor" href="#_other_steps"></a>Other steps</h3>
<div class="paragraph">
<p>Once done:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Deploy website changes</p>
</li>
<li>
<p>Send an announce on server-user</p>
</li>
<li>
<p>Send an Apache foundation wide announce</p>
</li>
</ul>
</div>
</div>
</div>
</div>
</article>
</div>
</main>
</div>
<footer class="footer">
<p>This page was built using the Antora default UI.</p>
<p>The source code for this UI is licensed under the terms of the MPL-2.0 license.</p>
</footer>
<script id="site-script" src="../../../_/js/site.js" data-ui-root-path="../../../_"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
</body>
</html>