blob: 7140d5f7ea834601144dbf778b68afb34145c514 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>Releasing Process / Apache Celix</title>
<link rel="icon" href="/assets/img/favicon.ico">
<link href="/assets/css/bootstrap.min.css" rel="stylesheet">
<link href="/assets/css/style.css" rel="stylesheet">
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '9']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
</head>
<body class="light-grey">
<a href="https://github.com/apache/celix" class="github-ribbon">
<img src="/assets/img/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</a>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary fixed-top">
<div class="container">
<a class="navbar-brand" href="/">
<img src="/assets/img/celix-white.svg" height="40" class="d-inline-block align-top" alt="Celix Logo">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/download.cgi">Download</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="ddDocs" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Docs
</a>
<div class="dropdown-menu" aria-labelledby="ddDocs">
<a class="dropdown-item" href="/docs/2.4.0/docs.html">2.4.0 (latest)</a>
<a class="dropdown-item" href="/docs/2.2.1/docs.html">2.2.1</a>
<a class="dropdown-item" href="/docs/2.1.0/docs.html">2.1.0</a>
</div>
</li>
<li class="nav-item dropdown active">
<a class="nav-link dropdown-toggle" href="#" id="ddContributing" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Contributing
</a>
<div class="dropdown-menu" aria-labelledby="ddContributing">
<a class="dropdown-item" href="/contributing/youatcelix.html">You at Celix</a>
<a class="dropdown-item" href="/contributing/submitting-patches.html">Submitting patches</a>
<a class="dropdown-item" href="/contributing/source-and-builds.html">Source code and builds</a>
<hr>
<a class="dropdown-item" href="/contributing/releasing.html">Releasing</a>
<a class="dropdown-item" href="/contributing/volunteers.html">Volunteers</a>
<a class="dropdown-item" href="https://whimsy.apache.org/board/minutes/Celix.html">Board Reports</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="ddSupport" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Support
</a>
<div class="dropdown-menu" aria-labelledby="ddSupport">
<a class="dropdown-item" href="/support/mailing-list.html">Mailing Lists</a>
<a class="dropdown-item" href="/support/issue-tracking.html">Issue Tracking</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="ddFoundation" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
ASF
</a>
<div class="dropdown-menu" aria-labelledby="ddFoundation">
<a class="dropdown-item" href="https://www.apache.org/">ASF Home</a>
<a class="dropdown-item" href="https://www.apache.org/foundation/how-it-works.html">How it works</a>
<a class="dropdown-item" href="https://www.apache.org/licenses/">License</a>
<a class="dropdown-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="dropdown-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<a class="dropdown-item" href="https://www.apache.org/security/">Security</a>
<a class="dropdown-item" href="https://www.apache.org/foundation/policies/conduct">Code of Conduct</a>
</div>
</li>
</ul>
</div>
</div>
</nav>
<div class="section">
<div class="container">
<div class="row py-4">
<div class="col-sm-12 card">
<div class="card-body pt-5">
<a class="edit-on-gh" href="https://github.com/apache/celix-site/edit/master/source/contributing/releasing.md" title="Edit this page on GitHub">Edit on GitHub</a>
<h1 id="releasing-apache-celix">Releasing Apache Celix</h1>
<p>Note: This information is only of use to Apache Celix Release Managers!</p>
<p>Steps to follow:</p>
<nav id="TableOfContents">
<ul>
<li><a href="#create-signing-keys">Create signing KEYS</a></li>
<li><a href="#create-release-branch">Create release branch</a></li>
<li><a href="#update-release-related-files">Update release related files</a></li>
<li><a href="#compile-and-test">Compile and test</a></li>
<li><a href="#create-sign-and-publish-artifacts">Create, sign and publish artifacts</a></li>
<li><a href="#run-the-vote">Run the vote</a></li>
<li><a href="#post-the-vote-results">Post the vote results</a></li>
<li><a href="#vote-passed">Vote Passed</a>
<ul>
<li><a href="#create-git-tag-and-merge-to-master">Create Git tag and merge to master</a></li>
<li><a href="#move-release-artifacts-from-dev-to-release-area">Move release artifacts from &ldquo;dev&rdquo; to &ldquo;release&rdquo; area</a></li>
<li><a href="#roll-out-release-artifacts">Roll out release artifacts</a></li>
<li><a href="#publish-release-documentation">Publish release documentation</a></li>
<li><a href="#update-the-website">Update the website</a></li>
<li><a href="#announce-the-release">Announce the release</a></li>
</ul>
</li>
</ul>
</nav>
<p>Interesting links:</p>
<ul>
<li><a href="https://www.apache.org/dev/release.html">Apache Release Guide</a></li>
<li><a href="https://www.apache.org/dev/release-signing.html">Apache Release Signing</a></li>
<li><a href="https://creadur.apache.org/rat/apache-rat/index.html">Apache RAT</a></li>
<li><a href="https://www.apache.org/dev/openpgp.html">Apache OpenPGP HowTo</a></li>
</ul>
<h2 id="create-signing-keys">Create signing KEYS</h2>
<p>Each Release Manager must have his own signing keys. Information about and instruction for the generation
of these keys can be found on the <a href="https://www.apache.org/dev/release-signing.html#generate">Signing Releases page</a>
and <a href="https://www.apache.org/dev/openpgp.html#generate-key">How To OpenPGP</a>. Be sure to follow the information
provided on that site and its references.</p>
<p>The generated key can be uploaded to the <a href="https://pgp.mit.edu/">MIT PGP Public Key Server</a>.</p>
<p>Next, the public key signature must be added to the <a href="https://downloads.apache.org/celix/KEYS">Celix KEYS file</a>.
Again, read the <a href="https://www.apache.org/dev/release-signing.html#keys-policy">Signing Releases page</a> for more
information. This updated file needs to be uploaded to SVN at the following location:</p>
<ul>
<li><a href="https://dist.apache.org/repos/dist/release/celix/KEYS">Apache Celix release distribution area KEYS</a></li>
</ul>
<h2 id="create-release-branch">Create release branch</h2>
<p>A release will be prepared in a release branch. This branch is created from the <code>master</code> branch.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git checkout master
</span></span><span style="display:flex;"><span>git checkout -b release-X.Y.Z
</span></span><span style="display:flex;"><span>git push origin release-X.Y.Z
</span></span></code></pre></div><h2 id="update-release-related-files">Update release related files</h2>
<p>For every release the related files must be updated. The following files are relevant:</p>
<ul>
<li>CHANGES
<ul>
<li>Add a list of fixed issues which can be created using JIRA.</li>
</ul>
</li>
<li>RELEASE_NOTES
<ul>
<li>Add additional notes regarding this release, eg known short comings.</li>
</ul>
</li>
<li>BUILDING
<ul>
<li>Even though the BUILDING file doesn&rsquo;t have any specific release information, it should be verified before making a release.</li>
</ul>
</li>
<li>NOTICE
<ul>
<li>If needed, add any new license related information to this file.</li>
</ul>
</li>
</ul>
<p>Besides this information, the version needs to be bumped. Even though every bundle has its own version, a release is made with one
overall version. This version is defined in the top-level CMakeLists.txt file and conanfile.py. Update the following pieces:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C" data-lang="C"><span style="display:flex;"><span><span style="color:#080">#top level CMakeList.txt
</span></span></span><span style="display:flex;"><span><span style="color:#080"></span><span style="color:#00a000">set</span>(CELIX_MAJOR <span style="color:#b44">&#34;X&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#00a000">set</span>(CELIX_MINOR <span style="color:#b44">&#34;Y&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#00a000">set</span>(CELIX_MICRO <span style="color:#b44">&#34;Z&#34;</span>)
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-Python" data-lang="Python"><span style="display:flex;"><span><span style="color:#080;font-style:italic">#conanfile.py</span>
</span></span><span style="display:flex;"><span><span style="color:#666">...</span>
</span></span><span style="display:flex;"><span><span style="color:#a2f;font-weight:bold">class</span> <span style="color:#00f">CelixConan</span>(ConanFile):
</span></span><span style="display:flex;"><span> name <span style="color:#666">=</span> <span style="color:#b44">&#34;celix&#34;</span>
</span></span><span style="display:flex;"><span> version <span style="color:#666">=</span> <span style="color:#b44">&#34;X.Y.Z&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#666">...</span>
</span></span></code></pre></div><p class="alert alert-primary">Note: The DEFAULT_VERSION property is used as default version for new bundles and as
such does not need to be updated when making a release.</p>
<h2 id="compile-and-test">Compile and test</h2>
<p>Before creating a branch, be sure that the source compiles and tests run successfully. If there are any known shortcomings,
make sure they are listed in the RELEASE_NOTES. Details for compiling and testing are available in the BUILDING file.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Create a directory as sibling of the celix release directory</span>
</span></span><span style="display:flex;"><span>$ mkdir celix-build
</span></span><span style="display:flex;"><span>$ <span style="color:#a2f">cd</span> celix-build
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Run CMake to generate the makefiles. Enable all BUILD options.</span>
</span></span><span style="display:flex;"><span>$ ccmake ../celix
</span></span><span style="display:flex;"><span>$ make
</span></span><span style="display:flex;"><span>$ make deploy
</span></span><span style="display:flex;"><span>$ make <span style="color:#a2f">test</span>
</span></span></code></pre></div><p>Also verify that the provides examples work as expected. If needed ask other committers to test parts.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Go to the deploy directory to see all examples</span>
</span></span><span style="display:flex;"><span>$ <span style="color:#a2f">cd</span> deploy
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Test the different examples, eg</span>
</span></span><span style="display:flex;"><span>$ <span style="color:#a2f">cd</span> hello_world
</span></span><span style="display:flex;"><span>$ sh run.sh
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Depending on the example the output might be different. Most examples provide a shell to inspect the framework.</span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># To list the commands use the &#34;help&#34; command.</span>
</span></span><span style="display:flex;"><span>-&gt; <span style="color:#a2f">help</span>
</span></span></code></pre></div><p>After verifying the build, run Apache RAT to check for any licensing problems. If Apache RAT is configured in the CMake build the &ldquo;rat&rdquo; target can be used to run the check.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># From the celix-build directory</span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Run CMake to set the APACHE_RAT library (path to the JAR file).</span>
</span></span><span style="display:flex;"><span>$ ccmake ../celix
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Run RAT</span>
</span></span><span style="display:flex;"><span>$ make rat
</span></span></code></pre></div><p>Apache RAT should not raise any concerns, if there are, check the source files for a license header. If it is a false positive update
the rat-excludes.txt file in the root of the project. Be sure it is a false positive! If in doubt, ask the mailing list! Third party
licenses may need to be mentioned in the NOTICE file.</p>
<h2 id="create-sign-and-publish-artifacts">Create, sign and publish artifacts</h2>
<p>Since Celix only releases source artifacts, creating the artifact is simple and straightforward.
First verify that all changes are committed to the release branch and the branch is pushed to GitHub.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Checkout a clean celix repo (to prevent accidential adding IDE and/or build files)</span>
</span></span><span style="display:flex;"><span>$ git clone --branch release-X.Y.Z --single-branch https://github.com/apache/celix.git
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Create symbolic link so the archive has a directory with version information</span>
</span></span><span style="display:flex;"><span>$ ln -s celix celix-X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Create GZip archive, exluding the git, github and asf.yaml files.</span>
</span></span><span style="display:flex;"><span>$ tar --exclude-vcs --exclude-vcs-ignores --exclude<span style="color:#666">=</span><span style="color:#b44">&#34;.github&#34;</span> --exclude<span style="color:#666">=</span><span style="color:#b44">&#34;.asf.yaml&#34;</span> -hczf celix-X.Y.Z.tar.gz celix-X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># The create symbolic link can be removed</span>
</span></span><span style="display:flex;"><span>$ unlink celix-X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Test the created tarball using conan</span>
</span></span><span style="display:flex;"><span>$ tar xzf celix-X.Y.Z.tar.gz
</span></span><span style="display:flex;"><span>$ conan create celix-X.Y.Z --build missing -o <span style="color:#b8860b">build_all</span><span style="color:#666">=</span>True
</span></span></code></pre></div><p>After creating the artifact, the file has to be signed. More information about signing can be found at
<a href="https://infra.apache.org/release-signing.html">Release signing</a>.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Generate SHA512 checksum</span>
</span></span><span style="display:flex;"><span>$ gpg --print-md SHA512 celix-X.Y.Z.tar.gz &gt; celix-X.Y.Z.tar.gz.sha512
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Generate ASCII signature</span>
</span></span><span style="display:flex;"><span>$ gpg --armor --output celix-X.Y.Z.tar.gz.asc --detach-sig celix-X.Y.Z.tar.gz
</span></span></code></pre></div><p>Copy the archive of the source to the <a href="https://dist.apache.org/repos/dist/dev/celix">Apache Celix release development area</a> (using SVN).</p>
<p>See the <a href="https://www.apache.org/legal/release-policy.html#host-rc">Apache Release Guide</a> for more information.</p>
<h2 id="run-the-vote">Run the vote</h2>
<p>Before a release is official a vote has to be held. More information on voting can be found on <a href="https://www.apache.org/foundation/voting.html">Apache Voting Process</a>.</p>
<p>The first vote has to be done on the public <a href="/support/mailing-list.html">mailing list</a> of the project. The following template must be used for this vote:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>To: dev@celix.apache.org
</span></span><span style="display:flex;"><span>Subject: [VOTE] Release Apache Celix version X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>This is the release vote for Apache Celix, version X.Y.Z.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>It includes the following changes:
</span></span><span style="display:flex;"><span>https://github.com/apache/celix/tree/COMMITID/CHANGES.md
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Source files:
</span></span><span style="display:flex;"><span>https://dist.apache.org/repos/dist/dev/celix/celix-X.Y.Z/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The commit ID to be voted upon:
</span></span><span style="display:flex;"><span>COMMIT ID
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>https://github.com/apache/celix/tree/COMMITID
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Celix&#39;s keys can be found at:
</span></span><span style="display:flex;"><span>https://dist.apache.org/repos/dist/release/celix/KEYS
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Information for voting on a release can be found at:
</span></span><span style="display:flex;"><span>https://www.apache.org/legal/release-policy.html#approving-a-release
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Please vote to approve this release:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[ ] +1 Approve the release
</span></span><span style="display:flex;"><span>[ ] -1 Disapprove the release (please provide specific comments)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Note that an Apache release needs to be a Majority Approval (requires
</span></span><span style="display:flex;"><span>at-least 3 binding +1 votes and more +1 votes than -1 votes).
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>If this release is approved I will promote it to an official release
</span></span><span style="display:flex;"><span>(e.g. move from dist/dev to dist/release and tagging the release in git)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>This vote will be open for at least 72 hours.
</span></span></code></pre></div><p>After this first vote the results must be posted to the &ldquo;dev&rdquo; list, see below for more information.</p>
<p class="alert alert-primary">Note: Be sure to use the [VOTE] tag, this is used by the automated vote tracking
system to keep track of outstanding vote threads.</p>
<h2 id="post-the-vote-results">Post the vote results</h2>
<p>As mentioned before, after each vote the results must be posted to the corresponding list. This &ldquo;Result&rdquo; vote contains the number
of votes made, including whether a vote is binding or not. For a successful vote the following template can be used.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>To: dev@celix.apache.org
</span></span><span style="display:flex;"><span>Subject: [RESULT][VOTE] Release Celix version X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The vote has passed with the following result:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>+1 Name of Approvers (binding)
</span></span><span style="display:flex;"><span>+1 Name of Approvers (not binding)
</span></span><span style="display:flex;"><span>...
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The released artifact will be moved to the release area for mirroring.
</span></span><span style="display:flex;"><span>The X.Y.Z tag will be created on the release branch and
</span></span><span style="display:flex;"><span>the release branch will be merged with the master branch.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>After the mirroring period the news &amp; downloads of the website will be
</span></span><span style="display:flex;"><span>updated and the release will be announced.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Thanks for voting.
</span></span></code></pre></div><p class="alert alert-primary">
Note: Be sure to post the vote result with the same topic as the original message. Also prepend the subject with [RESULT].
This is, again, needed to be able to keep track of vote threads.
</p>
<h2 id="vote-passed">Vote Passed</h2>
<p>If the vote is passed sucessfully the release branch can be merged to master, a release tag needs to be created, the release must be moved from the &ldquo;dev&rdquo; area to the &ldquo;release&rdquo; area
and the release can be announced.</p>
<h3 id="create-git-tag-and-merge-to-master">Create Git tag and merge to master</h3>
<p>After changing all files a tag for the new release must be made. Before doing so, make sure all changed files are committed.
A tag - named like rel/celix-X.Y.Z - needs to created and the release branch needs to be merged into master.</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#080;font-style:italic"># To sign a tag using your GPG key, it is necessary to configure git with the key you want to use</span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Configure git by issuing the following command, where E43F742E needs to be replaced with your key id</span>
</span></span><span style="display:flex;"><span>$ git config --global user.signingkey E43F742E
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Create the tag</span>
</span></span><span style="display:flex;"><span>$ git tag -s rel/celix-X.Y.Z -m <span style="color:#b44">&#39;Apache Celix Release X.Y.Z&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#080;font-style:italic"># Next thing to do is pushing the tag to the remote</span>
</span></span><span style="display:flex;"><span>$ git push origin rel/celix-X.Y.Z
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ git checkout master
</span></span><span style="display:flex;"><span>$ git merge release-X.Y.Z
</span></span><span style="display:flex;"><span>$ git push origin master
</span></span></code></pre></div><h3 id="move-release-artifacts-from-dev-to-release-area">Move release artifacts from &ldquo;dev&rdquo; to &ldquo;release&rdquo; area</h3>
<p>First remove the previous release from the &ldquo;release&rdquo; area.</p>
<p>Then use the following svn command to move the release artifacts from &ldquo;dev&rdquo; to &ldquo;release&rdquo;:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>svn move https://dist.apache.org/repos/dist/dev/celix/celix-X.Y.Z https://dist.apache.org/repos/dist/release/celix/
</span></span></code></pre></div><p>Note that a svn move ensures that the voted released artifacts are moved as-is.</p>
<h3 id="roll-out-release-artifacts">Roll out release artifacts</h3>
<p>When a release is moved from the &ldquo;dev&rdquo; area to &ldquo;release&rdquo; area. The automated
svnpubsub will move the artifact to the correct server for mirroring. Mirroring typically can take up to 24 hours.</p>
<p>Besides uploading the new release, the old release should be archived. Since archiving is already automated,
it is only needed to delete the previous version from the release area. See the
<a href="https://www.apache.org/legal/release-policy.html#when-to-archive">Apache Release Guide</a> for more information.</p>
<p>See the <a href="https://www.apache.org/legal/release-policy.html#upload-ci">Apache Release Guide</a> for more information.</p>
<p>After these 24 hours the release can be announced.</p>
<h3 id="publish-release-documentation">Publish release documentation</h3>
<p>After the release is available and tagged, the matching Doxygen documentation needs to be published.
The following Jenkins job can be used for that:
<a href="https://ci-builds.apache.org/job/Celix/job/doxygen-docs/">https://ci-builds.apache.org/job/Celix/job/doxygen-docs/</a></p>
<ul>
<li>Click on &lsquo;Build with parameters&rsquo;</li>
<li>In the <code>VERSION</code> field, enter the release number, e.g. <code>2.2.1</code></li>
<li>Because release documentation will be generated, also check the <code>RELEASE</code> checkbox.</li>
<li>Click on the <code>BUILD</code> button.</li>
</ul>
<p>A build will be started after which a new directory will be created <a href="https://nightlies.apache.org/celix/">here</a>.</p>
<h3 id="update-the-website">Update the website</h3>
<p>An important thing after the release has been created is updating the website.
The following needs to be updated:</p>
<ul>
<li>Update the <code>latestVersion</code> in the <a href="
https://github.com/apache/celix-site/blob/master/config.toml">config.toml</a></li>
<li>If the release is a new minor or major version, the documentation for the previous version can be retained
by updating the <a href="
https://github.com/apache/celix-site/blob/master/layouts/partials/header.html">header.html</a> and adding the release number to the <code>Docs</code> dropdown.</li>
<li>Update the <code>celix-src</code> submodule to the correct release tag</li>
<li>Run the <a href="
https://github.com/apache/celix-site/blob/master/extract_celix_docs.sh">extract_celix_docs.sh</a> script to copy the markdown documentation within the Celix code base
to the website.</li>
<li>Verify whether the documentation is correctly copied &amp; otherwise make some minor tweaks.</li>
<li>Create a <code>docs.md</code> file within the release documentation directory (example path: <code>source/docs/2.2.1/docs.md</code>, where 2.2.1 needs to be
substituted with the actual released version). This file can be copied and updated from e.g. a previous release.</li>
<li>Check-in the documentation and create a pull request to the <a href="https://github.com/apache/celix-site">celix-site</a> repository for the Celix team to review.</li>
</ul>
<p>Once the site is updated proceed with announcing the release.</p>
<h3 id="announce-the-release">Announce the release</h3>
<p>Additionally it is a good idea to post a message to &ldquo;<a href="mailto:announce@apache.org">announce@apache.org</a>&rdquo;.</p>
<p>The following template must be used:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>To: announce@apache.org, dev@celix.apache.org
</span></span><span style="display:flex;"><span>Subject: [ANNOUNCE] Apache Celix X.Y.Z released
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The Apache Celix team is pleased to announce the release of Apache Celix X.Y.Z.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Apache Celix is an implementation of the OSGi specification adapted to C and C++.
</span></span><span style="display:flex;"><span>It is a framework to develop (dynamic) modular software applications using component and service-oriented programming.
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>This new release focuses on .... {add additional information for this release}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The release is available here:
</span></span><span style="display:flex;"><span>https://celix.apache.org/download.cgi
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The full change log is available here: {add link to CHANGES.md}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>We welcome your help and feedback. For more information on how to report problems, and to get involved, visit the project website at https://celix.apache.org/
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>The Apache Celix Team
</span></span></code></pre></div><p class="alert alert-primary">Note: the email must be sent from an @apache.org address</p>
</div>
</div>
</div>
</div>
</div>
<footer class="py-3 bg-secondary">
<div class="container">
<div class="row">
<div class="col-md-8 text-center">
<p class="m-0 text-white">
Copyright &copy; 2023 The Apache Software Foundation, Licensed under
the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
<br>
Apache Celix, Celix, Apache, the Apache feather logo and the Apache Celix logo are trademarks of The Apache Software Foundation.
</p>
</div>
<div class="col-md-4 text-center">
<a href="https://www.apache.org/events/current-event.html" target="_blank">
<img src="https://www.apache.org/events/current-event-234x60.png" title="Apache Event" width="234" height="60" border="0">
</a>
</div>
</div>
</div>
</footer>
<script src="/assets/js/jquery.min.js"></script>
<script src="/assets/js/bootstrap.bundle.min.js"></script>
</body>
</html>