| --- |
| layout: docpage |
| |
| title: "Documentation" |
| |
| is_homepage: false |
| is_sphinx_doc: true |
| |
| doc-parent: "Contributing to Cassandra" |
| |
| doc-title: "Release Process" |
| doc-header-links: ' |
| <link rel="top" title="Apache Cassandra Documentation v4.0-alpha5" href="../index.html"/> |
| <link rel="up" title="Contributing to Cassandra" href="index.html"/> |
| <link rel="next" title="Frequently Asked Questions" href="../faq/index.html"/> |
| <link rel="prev" title="Dependency Management" href="dependencies.html"/> |
| ' |
| doc-search-path: "../search.html" |
| |
| extra-footer: ' |
| <script type="text/javascript"> |
| var DOCUMENTATION_OPTIONS = { |
| URL_ROOT: "", |
| VERSION: "", |
| COLLAPSE_INDEX: false, |
| FILE_SUFFIX: ".html", |
| HAS_SOURCE: false, |
| SOURCELINK_SUFFIX: ".txt" |
| }; |
| </script> |
| ' |
| |
| --- |
| <div class="container-fluid"> |
| <div class="row"> |
| <div class="col-md-3"> |
| <div class="doc-navigation"> |
| <div class="doc-menu" role="navigation"> |
| <div class="navbar-header"> |
| <button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-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> |
| </div> |
| <div class="navbar-collapse collapse sidebar-navbar-collapse"> |
| <form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search"> |
| <div class="form-group"> |
| <input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs"> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </div> |
| </form> |
| |
| |
| |
| <ul class="current"> |
| <li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li> |
| <li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li> |
| <li class="toctree-l2 current"><a class="current reference internal" href="#">Release Process</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#prerequisites">Prerequisites</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#create-release-artifacts">Create Release Artifacts</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#call-for-a-vote">Call for a Vote</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#post-vote-operations">Post-vote operations</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li> |
| </ul> |
| |
| |
| |
| </div><!--/.nav-collapse --> |
| </div> |
| </div> |
| </div> |
| <div class="col-md-8"> |
| <div class="content doc-content"> |
| <div class="content-container"> |
| |
| <div class="section" id="release-process"> |
| <h1><a class="toc-backref" href="#id1">Release Process</a><a class="headerlink" href="#release-process" title="Permalink to this headline">¶</a></h1> |
| <div class="contents topic" id="contents"> |
| <p class="topic-title">Contents</p> |
| <ul class="simple"> |
| <li><a class="reference internal" href="#release-process" id="id1">Release Process</a><ul> |
| <li><a class="reference internal" href="#prerequisites" id="id2">Prerequisites</a><ul> |
| <li><a class="reference internal" href="#create-and-publish-your-gpg-key" id="id3">Create and publish your GPG key</a></li> |
| <li><a class="reference internal" href="#bintray-account-with-access-to-apache-organisation" id="id4">Bintray account with access to Apache organisation</a></li> |
| </ul> |
| </li> |
| <li><a class="reference internal" href="#create-release-artifacts" id="id5">Create Release Artifacts</a><ul> |
| <li><a class="reference internal" href="#perform-the-release" id="id6">Perform the Release</a></li> |
| </ul> |
| </li> |
| <li><a class="reference internal" href="#call-for-a-vote" id="id7">Call for a Vote</a></li> |
| <li><a class="reference internal" href="#post-vote-operations" id="id8">Post-vote operations</a><ul> |
| <li><a class="reference internal" href="#publish-artifacts" id="id9">Publish Artifacts</a></li> |
| <li><a class="reference internal" href="#promote-nexus-repository" id="id10">Promote Nexus Repository</a></li> |
| <li><a class="reference internal" href="#publish-the-bintray-uploaded-distribution-packages" id="id11">Publish the Bintray Uploaded Distribution Packages</a></li> |
| <li><a class="reference internal" href="#update-and-publish-website" id="id12">Update and Publish Website</a></li> |
| <li><a class="reference internal" href="#release-version-in-jira" id="id13">Release version in JIRA</a></li> |
| <li><a class="reference internal" href="#update-to-next-development-version" id="id14">Update to Next Development Version</a></li> |
| <li><a class="reference internal" href="#wait-for-artifacts-to-sync" id="id15">Wait for Artifacts to Sync</a></li> |
| <li><a class="reference internal" href="#send-release-announcement" id="id16">Send Release Announcement</a></li> |
| <li><a class="reference internal" href="#update-slack-cassandra-topic" id="id17">Update Slack Cassandra topic</a></li> |
| <li><a class="reference internal" href="#tweet-from-cassandra" id="id18">Tweet from @Cassandra</a></li> |
| <li><a class="reference internal" href="#delete-old-releases" id="id19">Delete Old Releases</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="line-block"> |
| <div class="line"><br /></div> |
| <div class="line"><br /></div> |
| </div> |
| <p>The steps for Release Managers to create, vote and publish releases for Apache Cassandra.</p> |
| <p>While a committer can perform the initial steps of creating and calling a vote on a proposed release, only a PMC member can complete the process of publishing and announcing the release.</p> |
| <div class="section" id="prerequisites"> |
| <h2><a class="toc-backref" href="#id2">Prerequisites</a><a class="headerlink" href="#prerequisites" title="Permalink to this headline">¶</a></h2> |
| <dl class="docutils"> |
| <dt>Background docs</dt> |
| <dd><ul class="first last simple"> |
| <li><a class="reference external" href="http://www.apache.org/legal/release-policy.html">ASF Release Policy</a></li> |
| <li><a class="reference external" href="http://www.apache.org/dev/release-distribution">ASF Release Distribution Policy</a></li> |
| <li><a class="reference external" href="http://www.eu.apache.org/dev/release-publishing.html">ASF Release Best Practices</a></li> |
| </ul> |
| </dd> |
| </dl> |
| <p>A debian based linux OS is required to run the release steps from. Debian-based distros provide the required RPM, dpkg and repository management tools.</p> |
| <div class="section" id="create-and-publish-your-gpg-key"> |
| <h3><a class="toc-backref" href="#id3">Create and publish your GPG key</a><a class="headerlink" href="#create-and-publish-your-gpg-key" title="Permalink to this headline">¶</a></h3> |
| <p>To create a GPG key, follow the <a class="reference external" href="http://www.apache.org/dev/openpgp.html">guidelines</a>. |
| The key must be 4096 bit RSA. |
| Include your public key in:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>https://dist.apache.org/repos/dist/release/cassandra/KEYS |
| </pre></div> |
| </div> |
| <p>Publish your GPG key in a PGP key server, such as <a class="reference external" href="http://pgp.mit.edu/">MIT Keyserver</a>.</p> |
| </div> |
| <div class="section" id="bintray-account-with-access-to-apache-organisation"> |
| <h3><a class="toc-backref" href="#id4">Bintray account with access to Apache organisation</a><a class="headerlink" href="#bintray-account-with-access-to-apache-organisation" title="Permalink to this headline">¶</a></h3> |
| <p>Publishing a successfully voted upon release requires bintray access to the Apache organisation. Please verify that you have a bintray account and the Apache organisation is listed <a class="reference external" href="https://bintray.com/profile/edit/organizations">here</a>.</p> |
| </div> |
| </div> |
| <div class="section" id="create-release-artifacts"> |
| <h2><a class="toc-backref" href="#id5">Create Release Artifacts</a><a class="headerlink" href="#create-release-artifacts" title="Permalink to this headline">¶</a></h2> |
| <p>Any committer can perform the following steps to create and call a vote on a proposed release.</p> |
| <p>Check that there are no open urgent jira tickets currently being worked on. Also check with the PMC that there’s security vulnerabilities currently being worked on in private.’ |
| Current project habit is to check the timing for a new release on the dev mailing lists.</p> |
| <div class="section" id="perform-the-release"> |
| <h3><a class="toc-backref" href="#id6">Perform the Release</a><a class="headerlink" href="#perform-the-release" title="Permalink to this headline">¶</a></h3> |
| <p>Run the following commands to generate and upload release artifacts, to the ASF nexus staging repository and dev distribution location:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git |
| git clone https://github.com/apache/cassandra-builds.git |
| git clone https://github.com/apache/cassandra.git |
| |
| # Edit the variables at the top of the `prepare_release.sh` file |
| edit cassandra-builds/cassandra-release/prepare_release.sh |
| |
| # Ensure your 4096 RSA key is the default secret key |
| edit ~/.gnupg/gpg.conf # update the `default-key` line |
| edit ~/.rpmmacros # update the `%gpg_name <key_id>` line |
| |
| # Ensure DEBFULLNAME and DEBEMAIL is defined and exported, in the debian scripts configuration |
| edit ~/.devscripts |
| |
| # The prepare_release.sh is run from the actual cassandra git checkout, |
| # on the branch/commit that we wish to tag for the tentative release along with version number to tag. |
| cd cassandra |
| git switch cassandra-<version-branch> |
| |
| # The following cuts the release artifacts (including deb and rpm packages) and deploy to staging environments |
| ../cassandra-builds/cassandra-release/prepare_release.sh -v <version> |
| </pre></div> |
| </div> |
| <p>Follow the prompts.</p> |
| <p>If building the deb or rpm packages fail, those steps can be repeated individually using the <cite>-d</cite> and <cite>-r</cite> flags, respectively.</p> |
| </div> |
| </div> |
| <div class="section" id="call-for-a-vote"> |
| <h2><a class="toc-backref" href="#id7">Call for a Vote</a><a class="headerlink" href="#call-for-a-vote" title="Permalink to this headline">¶</a></h2> |
| <p>Fill out the following email template and send to the dev mailing list:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>I propose the following artifacts for release as <version>. |
| |
| sha1: <git-sha> |
| |
| Git: https://gitbox.apache.org/repos/asf?p=cassandra.git;a=shortlog;h=refs/tags/<version>-tentative |
| |
| Artifacts: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/org/apache/cassandra/apache-cassandra/<version>/ |
| |
| Staging repository: https://repository.apache.org/content/repositories/orgapachecassandra-<nexus-id>/ |
| |
| The distribution packages are available here: https://dist.apache.org/repos/dist/dev/cassandra/${version}/ |
| |
| The vote will be open for 72 hours (longer if needed). |
| |
| [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version>-tentative |
| [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version>-tentative |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="post-vote-operations"> |
| <h2><a class="toc-backref" href="#id8">Post-vote operations</a><a class="headerlink" href="#post-vote-operations" title="Permalink to this headline">¶</a></h2> |
| <p>Any PMC member can perform the following steps to formalize and publish a successfully voted release.</p> |
| <div class="section" id="publish-artifacts"> |
| <h3><a class="toc-backref" href="#id9">Publish Artifacts</a><a class="headerlink" href="#publish-artifacts" title="Permalink to this headline">¶</a></h3> |
| <p>Run the following commands to publish the voted release artifacts:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git |
| # edit the variables at the top of the `finish_release.sh` file |
| edit cassandra-builds/cassandra-release/finish_release.sh |
| |
| # After cloning cassandra-builds repo, `finish_release.sh` is run from the actual cassandra git checkout, |
| # on the tentative release tag that we wish to tag for the final release version number tag. |
| cd ~/git/cassandra/ |
| git checkout <version>-tentative |
| ../cassandra-builds/cassandra-release/finish_release.sh -v <version> |
| </pre></div> |
| </div> |
| <p>If successful, take note of the email text output which can be used in the next section “Send Release Announcement”. |
| The output will also list the next steps that are required.</p> |
| </div> |
| <div class="section" id="promote-nexus-repository"> |
| <h3><a class="toc-backref" href="#id10">Promote Nexus Repository</a><a class="headerlink" href="#promote-nexus-repository" title="Permalink to this headline">¶</a></h3> |
| <ul class="simple"> |
| <li>Login to <a class="reference external" href="https://repository.apache.org">Nexus repository</a> again.</li> |
| <li>Click on “Staging” and then on the repository with id “cassandra-staging”.</li> |
| <li>Find your closed staging repository, right click on it and choose “Promote”.</li> |
| <li>Select the “Releases” repository and click “Promote”.</li> |
| <li>Next click on “Repositories”, select the “Releases” repository and validate that your artifacts exist as you expect them.</li> |
| </ul> |
| </div> |
| <div class="section" id="publish-the-bintray-uploaded-distribution-packages"> |
| <h3><a class="toc-backref" href="#id11">Publish the Bintray Uploaded Distribution Packages</a><a class="headerlink" href="#publish-the-bintray-uploaded-distribution-packages" title="Permalink to this headline">¶</a></h3> |
| <p>Log into bintray and publish the uploaded artifacts.</p> |
| </div> |
| <div class="section" id="update-and-publish-website"> |
| <h3><a class="toc-backref" href="#id12">Update and Publish Website</a><a class="headerlink" href="#update-and-publish-website" title="Permalink to this headline">¶</a></h3> |
| <p>See <a class="reference external" href="https://svn.apache.org/repos/asf/cassandra/site/src/README">docs</a> for building and publishing the website.</p> |
| <p>Also update the CQL doc if appropriate.</p> |
| </div> |
| <div class="section" id="release-version-in-jira"> |
| <h3><a class="toc-backref" href="#id13">Release version in JIRA</a><a class="headerlink" href="#release-version-in-jira" title="Permalink to this headline">¶</a></h3> |
| <p>Release the JIRA version.</p> |
| <ul class="simple"> |
| <li>In JIRA go to the version that you want to release and release it.</li> |
| <li>Create a new version, if it has not been done before.</li> |
| </ul> |
| </div> |
| <div class="section" id="update-to-next-development-version"> |
| <h3><a class="toc-backref" href="#id14">Update to Next Development Version</a><a class="headerlink" href="#update-to-next-development-version" title="Permalink to this headline">¶</a></h3> |
| <p>Update the codebase to point to the next development version:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>cd ~/git/cassandra/ |
| git checkout cassandra-<version-branch> |
| edit build.xml # update `<property name="base.version" value="…"/> ` |
| edit debian/changelog # add entry for new version |
| edit CHANGES.txt # add entry for new version |
| git commit -m "Increment version to <next-version>" build.xml debian/changelog CHANGES.txt |
| |
| # …and forward merge and push per normal procedure |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="wait-for-artifacts-to-sync"> |
| <h3><a class="toc-backref" href="#id15">Wait for Artifacts to Sync</a><a class="headerlink" href="#wait-for-artifacts-to-sync" title="Permalink to this headline">¶</a></h3> |
| <p>Wait for the artifacts to sync at <a class="reference external" href="https://downloads.apache.org/cassandra/">https://downloads.apache.org/cassandra/</a></p> |
| </div> |
| <div class="section" id="send-release-announcement"> |
| <h3><a class="toc-backref" href="#id16">Send Release Announcement</a><a class="headerlink" href="#send-release-announcement" title="Permalink to this headline">¶</a></h3> |
| <p>Fill out the following email template and send to both user and dev mailing lists:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>The Cassandra team is pleased to announce the release of Apache Cassandra version <version>. |
| |
| Apache Cassandra is a fully distributed database. It is the right choice |
| when you need scalability and high availability without compromising |
| performance. |
| |
| http://cassandra.apache.org/ |
| |
| Downloads of source and binary distributions are listed in our download |
| section: |
| |
| http://cassandra.apache.org/download/ |
| |
| This version is <the first|a bug fix> release[1] on the <version-base> series. As always, |
| please pay attention to the release notes[2] and let us know[3] if you |
| were to encounter any problem. |
| |
| Enjoy! |
| |
| [1]: (CHANGES.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=CHANGES.txt;hb=<version> |
| [2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=<version> |
| [3]: https://issues.apache.org/jira/browse/CASSANDRA |
| </pre></div> |
| </div> |
| </div> |
| <div class="section" id="update-slack-cassandra-topic"> |
| <h3><a class="toc-backref" href="#id17">Update Slack Cassandra topic</a><a class="headerlink" href="#update-slack-cassandra-topic" title="Permalink to this headline">¶</a></h3> |
| <dl class="docutils"> |
| <dt>Update topic in <code class="docutils literal notranslate"><span class="pre">cassandra</span></code> <a class="reference internal" href="../contactus.html#slack"><span class="std std-ref">Slack room</span></a></dt> |
| <dd>/topic cassandra.apache.org | Latest releases: 3.11.4, 3.0.18, 2.2.14, 2.1.21 | ask, don’t ask to ask</dd> |
| </dl> |
| </div> |
| <div class="section" id="tweet-from-cassandra"> |
| <h3><a class="toc-backref" href="#id18">Tweet from @Cassandra</a><a class="headerlink" href="#tweet-from-cassandra" title="Permalink to this headline">¶</a></h3> |
| <p>Tweet the new release, from the @Cassandra account</p> |
| </div> |
| <div class="section" id="delete-old-releases"> |
| <h3><a class="toc-backref" href="#id19">Delete Old Releases</a><a class="headerlink" href="#delete-old-releases" title="Permalink to this headline">¶</a></h3> |
| <p>As described in <a class="reference external" href="http://www.apache.org/dev/release.html#when-to-archive">When to Archive</a>.</p> |
| <p>An example of removing old releases:</p> |
| <div class="highlight-none notranslate"><div class="highlight"><pre><span></span>svn co https://dist.apache.org/repos/dist/release/cassandra/ cassandra-dist |
| svn rm <previous_version> debian/pool/main/c/cassandra/<previous_version>* |
| svn st |
| # check and commit |
| </pre></div> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| |
| <div class="doc-prev-next-links" role="navigation" aria-label="footer navigation"> |
| |
| <a href="../faq/index.html" class="btn btn-default pull-right " role="button" title="Frequently Asked Questions" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a> |
| |
| |
| <a href="dependencies.html" class="btn btn-default" role="button" title="Dependency Management" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a> |
| |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |