---
title: Contribute | Release guide
layout: default
---

      <!-- Marketing messaging and featurettes
      ================================================== -->
      <!-- Wrap the rest of the page in another container to center all the content. -->

      <div class="container">
        <!-- CONTRIBUTE -->
        <div class="row mb-5 mt-5 pt-3">
          <div class="col-2 sidenav-menu pt-3">
            <div class="pb-3 text-uppercase"><strong>Contribute</strong></div>
            <ul class="list-unstyled mb-3">
              <li><a href="contribute.html">Get started contributing</a></li>
              <li class="sidenav-menu-sub-title">Technical Docs</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-testing.html">Testing guide</a></li>
                  <li><a href="contribute-dependencies-guide.html">Dependencies guide</a></li>
                </ul>
              </li>
              <li class="sidenav-menu-sub-title">Policies</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-pre-commit-test-policies.html">Pre-commit test policies</a></li>
                  <li><a href="contribute-post-commit-test-policies.html">Post-commit test policies</a></li>
                </ul>
              </li>
              <li class="sidenav-menu-sub-title">Committers</li>
              <li>
                <ul class="list-unstyled sidenav-menu-sub-list">
                  <li><a href="contribute-become-a-committer.html">Become a committer</a></li>
                  <li><a href="contribute-committer-guide.html">Committer guide</a></li>
                  <li><a href="contribute-release-guide.html">Release guide</a></li>
                </ul>
              </li>
            </ul>
          </div>
          <div class="col-8 pt-3 offset-4">
            <h2 id="apache-unomi-release-guide">Apache Unomi Release Guide</h2>

            <p>The Apache Unomi project periodically declares and publishes releases. A release is one or more packages of the project artifact(s) that are approved for general public distribution and use. They may come with various degrees of caveat regarding their perceived quality and potential for change, such as "alpha", "beta", "stable", etc.</p>

            <p>The Unomi community treats releases with great importance. They are a public face of the project and most users interact with the project only through the releases. Releases are signed off by the entire Unomi community in a public vote.</p>

            <p>Each release is executed by a <em>Release Manager</em>, who is selected among the Unomi committers. This document describes the process that the Release Manager follows to perform a release. Any changes to this process should be discussed and adopted on the <a href="community.html">dev@ mailing list</a>.</p>

            <p>Please remember that publishing software has legal consequences. This guide complements the foundation-wide <a href="https://www.apache.org/dev/release.html" target="_blank">Product Release Policy</a> and <a href="https://www.apache.org/dev/release-distribution" target="_blank">Release Distribution Policy</a>.</p>

            <h2 id="overview">Overview</h2>

            <p><img src="assets/images/release-guide.png" alt="Apache Unomi release guide" title="Release Process" class="img-fluid" /></p>

            <p>The release process consists of several steps:</p>

            <ol>
              <li>Decide to release</li>
              <li>Prepare for the release</li>
              <li>Build a release candidate</li>
              <li>Vote on the release candidate</li>
              <li>During vote process, run validation tests</li>
              <li>If necessary, fix any issues and go back to step 3.</li>
              <li>Finalize the release</li>
              <li>Promote the release</li>
            </ol>

            <hr />

            <h2 id="decide-to-release">Decide to release</h2>

            <p>Deciding to release and selecting a Release Manager is the first step of the release process. This is a consensus-based decision of the entire community.</p>

            <p>Anybody can propose a release on the dev@ mailing list, giving a solid argument and nominating a committer as the Release Manager (including themselves). There's no formal process, no vote requirements, and no timing requirements. Any objections should be resolved by consensus before starting the release.</p>

            <p>In general, the community prefers to have a rotating set of 3-5 Release Managers. Keeping a small core set of managers allows enough people to build expertise in this area and improve processes over time, without Release Managers needing to re-learn the processes for each release. That said, if you are a committer interested in serving the community in this way, please reach out to the community on the dev@ mailing list.</p>

            <p>Basically we will be following the procedure described <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">here</a> with a few more steps and details before and after.</p>


            <h3 id="checklist-to-proceed-to-the-next-step">Checklist to proceed to the next step</h3>

            <ol>
              <li>Community agrees to release</li>
              <li>Community selects a Release Manager</li>
            </ol>

            <hr />

            <h2 id="prepare-for-the-release">Prepare for the release</h2>

              <h3 id="prepare-source">Pre-flight checks</h3>
              <ol>
                  <li>Make sure all copyright years have been changed in NOTICE and any other file</li>
                  <li>Make sure that your default GPG key is configured to use an signature with an @apache.org email.
                  You can do this by adding the following to your ~/.gnupg/gpg.conf :
                      <pre class="alert alert-primary"><code>default-key &lt;key-uid&gt;</code></pre>
                      replacing &lt;key-uid&gt; with the key uid you want to use by default.
                      You should then check by signing a file and verifying its signature that you have the right
                      default key:
                      <pre class="alert alert-primary"><code>gpg -ab test.txt
gpg --verify test.txt.asc test.txt
                      </code></pre>
                      This should tell you which key was used and display the email address.
                  </li>
                  <li>Check that all SNAPSHOT versions are correct by searching for SNAPSHOT in all XML files</li>
              </ol>

            <h3 id="prepare-jira">Jira</h3>
            <ol>
              <li>Setup new version in JIRA project</li>
              <li>Update all JIRAs, close the ones that are still not closed, review tickets that can be closed, postpone to another release tickets that are not managed now</li>
            </ol>

            <h3 id="prepare-git">Git</h3>
            <ol>
              <li>Clone and checkout the project using:
                <pre class="alert alert-primary"><code>git clone https://gitbox.apache.org/repos/asf/unomi.git</code></pre>
                 in a separate directory, to make sure you don’t have any additional files in the build
                  (such as allCountries.zip or other binary files that should not be there)</li>
                <li>
                    Simply checkout an existing branch for release
                    <pre class="alert alert-primary"><code>cd unomi
git checkout unomi-1.5.x
                    </code></pre>
                </li>
                <li>OR Create a new branch if needed for the release using:
                    <pre class="alert alert-primary"><code>cd unomi
git checkout -b unomi-1.5.x
                    </code></pre>
                </li>
            </ol>

            <h3 id="prepare-build">Build the project</h3>
            <ol>
              <li>Make sure you have a Docker installation properly configured on the machine building the project,
                  as it is required to build everything.
              </li>
              <li>Tests source, javadocs, docker and signature generation using:
                <pre class="alert alert-primary"><code>mvn clean install -P apache-release,performance-tests,integration-tests,docker</code></pre>
              </li>
              <li>Make sure we generate all sub-projects using:
                <pre class="alert alert-primary"><code>mvn clean install -DskipITs=true -DskipTests=true -P integration-tests,performance-tests,rat,apache-release,docker,\!run-tests</code></pre>
              </li>
              <li>Check that there are no JARs or ZIP files in the source code, you can do this by looking at the generated RAT report here :
                <pre class="alert alert-primary"><code>less target/unomi-root-${next.development.version}.rat</code></pre>
              </li>
              <li>Check that the KEYS file only contains signatures with @apache.org addresses (if there are non @apache.org don’t remove them because they have
                been used to sign older releases)
              </li>
              <li>Check the Copyright notice years in the NOTICE file and anywhere else where it might be (by using search and replace)</li>
              <li>If you get JavaDoc errors or other errors you must correct all of them before proceeding further</li>
              <li>If you get a error while signing despite having the proper keys install that looks like this:
                <pre class="alert alert-primary"><code>[INFO] --- maven-gpg-plugin:1.5:sign (default) @ unomi-root ---
gpg: 'echec de la signature : Inappropriate ioctl for device
gpg: signing failed: Inappropriate ioctl for device</code></pre>
                you can either try to sign a file like this:
                <pre class="alert alert-primary"><code>gpg -ab test.txt</code></pre>
                this will ask for your password and remember it in the agent for a while, or if you want a more permanent solution: <a href="https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors" target="_blank">https://dan.cx/2016/11/gpg-inappropriate-ioctl-for-device-errors</a>
              </li>
            </ol>

            <h2 id="publish-the-release">Publish the release</h2>
            <h3 id="publish-repository">Repository</h3>

            <ol>
              <li>Setup server passwords for publishing as document here:
                <a href="https://www.apache.org/dev/publishing-maven-artifacts.html" target="_blank">https://www.apache.org/dev/publishing-maven-artifacts.html</a> and <a href="https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords" target="_blank">https://maven.apache.org/guides/mini/guide-encryption.html#How_to_encrypt_server_passwords</a>
              </li>
              <li>Check into the target directory and unzip the source release and compile it using:
                <pre class="alert alert-primary"><code>pushd
cd target
gpg --verify unomi-root-${next.development.version}-source-release.zip.asc unomi-root-${next.development.version}-source-release.zip
shasum -a 512 unomi-root-${next.development.version}-source-release.zip
cat unomi-root-${next.development.version}-source-release.zip.sha512
unzip unomi-root-${next.development.version}-source-release.zip
cd unomi-root-${next.development.version}
mvn clean install
popd</code></pre>
                to check that the packaged source build properly
              </li>
              <li>Go back to the root project directory (pushd/popd did that for you normally) and run:
                <pre class="alert alert-primary"><code>mvn release:prepare -DskipITs=true -DskipTests=true -Drelease.arguments="-Papache-release,integration-tests -DskipITs=true -DskipTests=true"  -DdryRun=true -P apache-release,integration-tests,performance-tests,docker,\!run-tests</code></pre>
              </li>
              <li>Publish a snapshot to test the deployment passwords:
                <pre class="alert alert-primary"><code>mvn deploy -DskipITs=true -DskipTests=true -P \!run-tests</code></pre>
              </li>
                <li>Delete the release.properties file
                    <pre class="alert alert-primary"><code>rm release.properties</code></pre>
                </li>
              <li>
                <pre class="alert alert-primary"><code>mvn -P apache-release,integration-tests,performance-tests,docker,\!run-tests release:prepare</code></pre>
              </li>
              <li>
                <pre class="alert alert-primary"><code>mvn -DskipITs=true -DskipTests=true -Drelease.arguments="-Papache-release,integration-tests -DskipITs=true -DskipTests=true" -P integration-tests,docker,performance-tests,\!run-tests release:perform</code></pre>
              </li>
              <li>If something fails, make sure you first drop the staging repository created here: <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a>.<br>
If you need to relaunch the <code>release:perform</code> and don’t have a release.properties, create a <code>release.properties</code> file with the following contents:
                <pre class="alert alert-primary"><code>scm.url=scm:git:https://gitbox.apache.org/repos/asf?p=unomi.git
scm.tag=unomi-root-${next.stable.version}
and run mvn release:perform</code></pre>
              </li>
              <li>Make sure you uploaded your public PGP key using:
                <pre class="alert alert-primary"><code>gpg --keyserver hkp://pgp.mit.edu --send-keys KEY_IDENTIFIER</code></pre>(get the identifier using gpg --list-secret-keys).<br>This will be used by the Apache Nexus Repository Manager to validate the JARs uploaded in the staging repository.
              </li>
              <li>Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache
                  .org/#stagingRepositories</a> and look for the open staging repositories, you should have two (one for everything and the other for KAR/features) for releases &lt;= 1.2 and just one for versions &gt;= 1.3.0 (because of changes in the Karaf plugins). Close the repositories and given a meaningful comment when closing such as:<br>
                <strong>Apache Unomi ${next.stable.version} Release Candidate 1</strong>
              </li>
            </ol>

            <h3 id="publish-vote">Vote</h3>
            <ol>
              <li>Upload the source and binary distributions to the Apache Dist repository before the PMC vote:
                <pre class="alert alert-primary"><code>svn checkout https://dist.apache.org/repos/dist/dev/unomi unomi-dev</code></pre>
              </li>
              <li>
                <pre class="alert alert-primary"><code>cd unomi-dev
mkdir ${next.stable.version}</code></pre>
              </li>
              <li>
                Copy all the Zip and Tarbars including ASC (but do not copy the SHA1 or MD5 sum) files from:
                <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/${next.stable.version}/" target="_blank">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi/${next.stable.version}/</a>
                and
                <a href="https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/${next.stable.version}/" target="_blank">https://repository.apache.org/content/repositories/orgapacheunomi-1014/org/apache/unomi/unomi-root/${next.stable.version}/</a>
                  using commands such as : <pre class="alert alert-primary"><code>wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi-root/${next.stable.version}/unomi-root-${next.stable.version}-source-release.zip
wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi-root/${next.stable.version}/unomi-root-${next.stable.version}-source-release.zip.asc
wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi/${next.stable.version}/unomi-${next.stable.version}.tar.gz
wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi/${next.stable.version}/unomi-${next.stable.version}.tar.gz.asc
wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi/${next.stable.version}/unomi-${next.stable.version}.zip
wget https://repository.apache.org/content/repositories/orgapacheunomi-1030/org/apache/unomi/unomi/${next.stable.version}/unomi-${next.stable.version}.zip.asc</code></pre>

              </li>
              <li>
                Rename the source and binary files to something shorter and consistent with previous releases and generate
                  the SHA 512 checksum manually:
                <pre class="alert alert-primary"><code>
mv unomi-root-${next.stable.version}-source-release.zip unomi-${next.stable.version}-src.zip
mv unomi-root-${next.stable.version}-source-release.zip.asc unomi-${next.stable.version}-src.zip.asc
shasum -a 512 unomi-${next.stable.version}-src.zip > unomi-${next.stable.version}-src.zip.sha512

mv unomi-${next.stable.version}.zip unomi-${next.stable.version}-bin.zip
mv unomi-${next.stable.version}.zip.asc unomi-${next.stable.version}-bin.zip.asc
shasum -a 512 unomi-${next.stable.version}-bin.zip > unomi-${next.stable.version}-bin.zip.sha512

mv unomi-${next.stable.version}.tar.gz unomi-${next.stable.version}-bin.tar.gz
mv unomi-${next.stable.version}.tar.gz.asc unomi-${next.stable.version}-bin.tar.gz.asc
shasum -a 512 unomi-${next.stable.version}-bin.tar.gz > unomi-${next.stable.version}-bin.tar.gz.sha512
                </code></pre>
              </li>
              <li>
                <pre class="alert alert-primary"><code>cd ..
svn add ${next.stable.version}</code></pre>
              </li>
              <li>
                If needed, update the KEYS file (that is in the svn checkout <code>https://dist.apache.org/repos/dist/release/unomi</code>)
              </li>
              <li>
                <pre class="alert alert-primary"><code>svn commit -m "Apache ${next.stable.version} Release (for PMC voting)"</code></pre>
              </li>
                <li>Send out to the Unomi mailing list a mail to start the voting process, see <a href="#mail-1">[1]</a></li>
                <li>If the vote is refused or cancelled, peform the following steps to restart the release process:
                    <ol>
                        <li>Drop the release in <a href="https://repository.apache.org/#stagingRepositories" target="_blank">Nexus</a></li>
                        <li>Remove the tag in Git:
                            <pre class="alert alert-primary"><code>git push --delete origin unomi-root-${next.stable.version}
git tag -d unomi-root-${next.stable.version}</code></pre>
                        </li>
                        <li>Correct any problems in the source, make sure to do them in master and cherry-pick them to the relevant branches</li>
                        <li>Reset all versions with the following command:
                            <pre class="alert alert-primary"><code>mvn versions:set -DskipITs=true -DskipTests=true -P integration-tests,performance-tests,rat,apache-release,docker,\!run-tests</code></pre>
                        </li>
                        <li>Restart at the release:prepare step</li>
                    </ol>
                </li>
              <li>
                If the vote is refused, you will need to restart the release process. Make sure you remove the staging repositories as well as the release tag. You will also need to reset the version in the project using:
                <pre class="alert alert-primary"><code>mvn versions:set</code></pre>
              </li>
                <li>Send out a vote summary in the same thread to the Unomi mailing list once the voting period has expired, see <a href="#mail-2">[2]</a></li>
              <li>
                Promote the staging repositories now that the release is approved
              </li>
            </ol>

            <h2 id="finalize-release">Finalize the release</h2>
            <ol>
              <li>
                Move the files uploaded to the unomi-dev repository to the unomi-release repository by doing the following:
                <pre class="alert alert-primary"><code>svn mv https://dist.apache.org/repos/dist/dev/unomi/${next.stable.version} https://dist.apache.org/repos/dist/release/unomi/${next.stable.version} -m "Apache Unomi ${next.stable.version} Release"</code></pre>
              </li>
              <li>
                Update Jenkins
              </li>
              <li>
                In JIRA mark the version as released and add a release date
              </li>
              <li>
                Connect to <a href="https://repository.apache.org/#stagingRepositories" target="_blank">https://repository.apache.org/#stagingRepositories</a> and look for the open staging repositories, you should have one. Select the staging repositoriy and click on <code>release</code>.
              </li>
              <li>Update the website to point to the new release on the download page by first copying the current release to the archive page. Make sure you change the links to use the archive.apache.org instead of the closer.lua script (see other archived versions for example). Then you can update the download page with the proper links to the new release (no direct links to <code>www.apache.org/dist</code>, make sure you use the closer.lua script). Be careful with links that contain & (ampersand) characters, they must be replaced with &amp; Finally on the home page update the news section to add the release.
                  <pre class="alert alert-primary"><code>git clone https://gitbox.apache.org/repos/asf/unomi-site.git</code></pre>
                  Perform any modifications, notably change the versions in the pom.xml file:
                  <pre class="alert alert-primary"><code>    &lt;properties&gt;
        &lt;latest.stable.version&gt;1.5.4&lt;/latest.stable.version&gt;
        &lt;next.development.version&gt;1.5.5-SNAPSHOT&lt;/next.development.version&gt;
        &lt;next.stable.version&gt;1.5.5&lt;/next.stable.version&gt;
        &lt;latest.development.version&gt;2.0.0-SNAPSHOT&lt;/latest.development.version&gt;
    &lt;/properties&gt;
</code></pre>
                 Then modify the index.html, download.html to add the new files. For the documentation see the next step.
              </li>
                <li>
                  Test the site modifications using the generated site HTML using Jekyll serve
                    <pre class="alert alert-primary"><code>mvn clean install gem:exec@jekyll-serve-filtered</code></pre>
                    Connect to http://127.0.0.1:4000 to check the modifications. If you need to make more modifications,
                    simply relaunch the above line after modifying the HTML files.
                </li>
                <li>
                  Deploy the web site changes using:
                  <pre class="alert alert-primary"><code>mvn clean install
mvn install scm-publish:publish-scm -Dusername=YOUR_APACHE_USERNAME -Dpassword=YOUR_APACHE_PASSWORD</code></pre>
                </li>
                <li>
                  Then make sure to commit all the changes to the web site's git project:
                  <pre class="alert alert-primary"><code>git commit -m "Apache Unomi ${next.stable.version} Release website update"</code></pre>
              </li>
            </ol>

            <h3 id="final-documentation">Documentation</h3>

            <ol>
              <li>Check the generated site by opening <code>target/staging/index.html</code> and check your changes and verify that there are no broken links
              </li>
              <li>WAIT FOR THE MIRRORS TO SYNC (at least 24 hours)</li>
              <li>
                Upload the site modification by using:
                <pre class="alert alert-primary"><code>./generate-site-and-upload.sh APACHE_LDAP_USERNAME APACHE_LDAP_PASSWORD</code></pre>
              </li>
                <li>
                    You will now need to publish the new version of the manual as downloadable resources
                    <pre class="alert alert-primary"><code>cd manual
cd target
svn co https://dist.apache.org/repos/dist/release/unomi/${next.stable.version}
mv unomi-manual-1_5_x.pdf ${next.stable.version}
mv unomi-manual-1_5_x.pdf.asc ${next.stable.version}
mv unomi-manual-1_5_x.zip ${next.stable.version}
mv unomi-manual-1_5_x.pdf.sha512 ${next.stable.version}
mv unomi-manual-1_5_x.zip.asc ${next.stable.version}
mv unomi-manual-1_5_x.zip.sha512 ${next.stable.version}
cd ${next.stable.version}
svn add unomi-manual*
svn commit -m "Update Unomi manual packages"</code></pre>
                </li>
            </ol>

            <h3 id="final-docker">Docker image</h3>

            <ol>
                <li>
                    Checkout the tagged version:
                    <pre class="alert alert-primary"><code>git checkout tags/unomi-root-${next.stable.version}</code></pre>
                </li>
                <li>
                    Change to the Docker directory. Make sure you have docker running locally (start Docker Desktop for
                    example):
                    <pre class="alert alert-primary"><code>cd docker</code></pre>
                </li>
                <li>
                    Launch the docker build and push
                    <pre class="alert alert-primary"><code>mvn clean install
mvn docker:push</code></pre>
                </li>
            </ol>


            <h3 id="rollback">Rollback</h3>
            <ol>
              <li>Delete the tag:
                <pre class="alert alert-primary"><code>git push --delete origin unomi-root-${next.stable.version}
git tag --delete unomi-root-${next.stable.version}</code></pre>
              </li>
              <li>Reset to the previous commit before the release preparation:
                <pre class="alert alert-primary"><code>git reset --hard c65f9897ec5f31d9d22ad639738c7db9d109aa77
git push origin -f</code></pre>
              </li>
            </ol>

            <h2 id="final">Announce</h2>

            <ol>
              <li>Send an announce to the project mailing list and the incubator mailing list to announce the new release using mail template <a href="#mail-3">[3]</a></li>
              <li>If you were releasing from a branch, make sure you merge all the branch changes for the release back to the master.</li>
            </ol>

            <h3 id="social-media">Social media</h3>

            <p>Tweet, post on Facebook, LinkedIn, and other platforms. Ask other contributors to do the same.</p>

              <h3 id="remove-old-releases">Remove old releases</h3>

              <p>
                  In order to lighten the load on mirrors, remove old releases from the dist server once the new release
                  has properly been deployed to all the mirrors. Old releases are automatically archived so they are
                  not needed on the mirrors anymore. Just make sure that all the links in the download page do point
                  to the archive server.
              </p>

            <h3 id="checklist-to-declare-the-process-completed">Checklist to declare the process completed</h3>

            <ol>
              <li>Release announced on the user@ mailing list.</li>
              <li>Release recorded in reporter.apache.org.</li>
              <li>Release announced on social media.</li>
              <li>Completion declared on the dev@ mailing list.</li>
                <li>Check that old release where removed from the dist server</li>
            </ol>

            <h2 id="improve-the-process">Improve the process</h2>

            <p>It is important that we improve the release processes over time. Once you’ve finished the release, please take a step back and look what areas of this process and be improved. Perhaps some part of the process can be simplified. Perhaps parts of this guide can be clarified.</p>

            <p>If we have specific ideas, please start a discussion on the dev@ mailing list and/or propose a pull request to update this guide. Thanks!</p>

            <hr />

            <h2 id="mail-template">Mail templates</h2>

            <h6 id="mail-1" class="pt-3">[1] Mail template for the Unomi PMC vote:</h6>
            <pre class="alert alert-primary"><code>
Subject: [VOTE] Apache Unomi ${next.stable.version} release [TAKE2]
Body:
Hi all,

I submit Apache Unomi ${next.stable.version} release [TAKE2] to your vote.

The following corrections were done since TAKE 1:
NOTICE year (2016) has been updated to 2018
unexpected binaries inside zip file [1] : zip file has been completely removed
All artefacts are now signed in an apache email address

Staging Repository:
*https://repository.apache.org/content/repositories/orgapacheunomi-1021/
&lt;https://repository.apache.org/content/repositories/orgapacheunomi-1021/&gt;*

You can find the sources here :

*https://repository.apache.org/content/repositories/orgapacheunomi-1021/org/apache/
unomi/unomi-root/${next.stable.version}/unomi-root-${next.stable.version}-source-release.zip
&lt;https://repository.apache.org/content/repositories/orgapacheunomi-1021/org/apache/
unomi/unomi-root/${next.stable.version}/unomi-root-${next.stable.version}-source-release.zip&gt;*

Convenience binaries are also available here:
*https://repository.apache.org/content/repositories/orgapacheunomi-1021/org/apache/
unomi/unomi/${next.stable.version}/
&lt;https://repository.apache.org/content/repositories/orgapacheunomi-1021/org/apache/
unomi/unomi/${next.stable.version}/&gt;*

Git tag:
unomi-root-${next.stable.version}

Release Notes:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319220&
version=12341610

Please vote to approve this release:

[ ] +1 Approve the release
[ ] -1 Don't approve the release (please provide specific comments)

This vote will be open for at least 72 hours, or until the necessary number
of binding votes (3 +1) is reached.

Please let me know if you have any questions.

Thanks,
Regards
            </code></pre>

            <h6 id="mail-2" class="pt-3">[2] Mail template for the results of the Unomi PMC vote:</h6>
            <pre class="alert alert-primary"><code>
Subject: [RESULT][VOTE] Apache Unomi ${next.stable.version} release [TAKE2]
Body:
Hi,

Thank you for your votes.

Here's the summary :

3 binding votes +1:

John Doe 1
John Doe 2
John Doe 3

2 non-binding vote +1:
John Doe 4
John Doe 5

No 0 or -1.

The proposal to release Unomi ${next.stable.version} is approved by the team.

Thanks,
John Doe 1
            </code></pre>

            <h6 id="mail-3" class="pt-3">[3] Announce mailing list template:</h6>
            <pre class="alert alert-primary"><code>
Subject : [ANNOUNCE] Apache Unomi ${next.stable.version} Release
Body:
The Apache Unomi team would like to announce the release of Apache
Unomi ${next.stable.version}.

Release notes are here:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319220&
version=12338361

Apache Unomi is a Java Open Source customer data platform, a Java server
designed to manage customers, leads and visitors’ data and help personalize customers’
experiences.

More details regarding Apache Unomi can be found here:
http://unomi.apache.org/

The release artifacts can be downloaded here:
https://dist.apache.org/repos/dist/release/incubator/unomi/${next.stable.version}/

All JIRAs completed for this release are tagged with 'FixVersion =
${next.stable.version}'; the JIRA release notes can be found here:
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319220&
version=12338361

Thanks!
The Apache Unomi Team

            </code></pre>
          </div>
        </div>
      </div>
