blob: cd53c552334df0fc52f86a03d41d2da6448412a0 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>Apache Cassandra | Apache Cassandra Documentation</title>
<link rel="stylesheet" href="../../assets/css/site.css">
<link rel="schema.dcterms" href="https://purl.org/dc/terms/">
<meta name="dcterms.subject" content="_">
<meta name="dcterms.identifier" content="master">
<meta name="generator" content="Antora 2.3.4">
<link rel="icon" href="../../assets/img/favicon.ico" type="image/x-icon">
<script>
const script = document.createElement("script");
const domain = window.location.hostname;
script.type = "text/javascript";
script.src = "https://plausible.cassandra.apache.org/js/plausible.js";
script.setAttribute("data-domain",domain);
script.setAttribute("defer",'true');
script.setAttribute("async",'true');
document.getElementsByTagName("head")[0].appendChild(script);
</script> </head>
<body class="basic ">
<div class="container mx-auto relative">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<meta property="og:type" content="website" />
<meta property="og:url" content="/" />
<meta property="og:site_name" content="Apache Cassandra" />
<header id="top-nav">
<div class="inner relative">
<div class="header-social-icons text-right">
<a href="https://twitter.com/cassandra?lang=en" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
<a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
<a href="https://www.youtube.com/c/PlanetCassandra" target="_blank" styles="margin-left: 20px;"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
</div>
<div class="cf">
<div class="logo left"><a href="/"><img src="../../assets/img/logo-white-r.png" alt="cassandra logo"></a></div>
<div class="mobile-nav-icon right">
<img class="toggle-icon" src="../../assets/img/hamburger-nav.svg">
</div>
<ul class="main-nav nav-links right flex flex-vert-center flex-space-between">
<li>
<a class="nav-link hide-mobile">Get Started</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/cassandra-basics.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-basics.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Cassandra Basics
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/quickstart.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-rocket.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Quickstart
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/ecosystem.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-ecosystem.png" alt="cassandra basics icon">
</div>
<div class="sub-nav-text teal py-small">
Ecosystem
</div>
</a>
</li>
</ul>
</li>
<li><a class="nav-link" href="/doc/latest/">Documentation</a></li>
<li>
<a class="nav-link" href="/_/community.html">Community</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/community.html#code-of-conduct">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-welcome.png" alt="welcome icon">
</div>
<div class="sub-nav-text teal py-small">
Welcome
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#discussions">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-discussions.png" alt="discussions icon">
</div>
<div class="sub-nav-text teal py-small">
Discussions
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#project-governance">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-governance.png" alt="Governance icon">
</div>
<div class="sub-nav-text teal py-small">
Governance
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#how-to-contribute">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-contribute.png" alt="Contribute icon">
</div>
<div class="sub-nav-text teal py-small">
Contribute
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/community.html#meet-the-community">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-community.png" alt="Meet the Community icon">
</div>
<div class="sub-nav-text teal py-small">
Meet the Community
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/cassandra-catalyst-program.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-catalyst.png" alt="Catalyst icon">
</div>
<div class="sub-nav-text teal py-small">
Catalyst Program
</div>
</a>
</li>
<li class="pa-micro hide-mobile">
<a href="/_/events.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-events.png" alt="Events icon">
</div>
<div class="sub-nav-text teal py-small">
Events
</div>
</a>
</li>
</ul>
</li>
<li>
<a class="nav-link hide-mobile">Learn</a>
<ul class="sub-menu bg-white">
<li class="pa-micro">
<a href="/_/Apache-Cassandra-5.0-Moving-Toward-an-AI-Driven-Future.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-basics.png" alt="Basics icon">
</div>
<div class="sub-nav-text teal py-small">
Cassandra 5.0
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/case-studies.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-case-study.png" alt="Case Studies icon">
</div>
<div class="sub-nav-text teal py-small">
Case Studies
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/resources.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-resources.png" alt="Resources icon">
</div>
<div class="sub-nav-text teal py-small">
Resources
</div>
</a>
</li>
<li class="pa-micro">
<a href="/_/blog.html">
<div class="sub-nav-icon">
<img src="../../assets/img/sub-menu-blog.png" alt="Blog icon">
</div>
<div class="sub-nav-text teal py-small">
Blog
</div>
</a>
</li>
</ul>
</li>
<li><a class="nav-link btn btn--filled" href="/_/download.html">Download Now</a></li>
</ul>
</div>
</div>
</header>
<div class="hero hero--home grad">
<div class="eye"></div>
<div id="home-content" class="text-center flex flex-center flex-column relative z2 ma-xlarge">
<h1></h1>
</div>
</div>
<div class="flex-center py-large arrow">
<div class="inner inner--narrow">
<div class="sect1">
<h2 id="release-process"><a class="anchor" href="#release-process"></a>Release Process</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The steps for Release Managers to create, vote, and publish releases for
Apache Cassandra.</p>
</div>
<div class="paragraph">
<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>
<div class="sect2">
<h3 id="prerequisites"><a class="anchor" href="#prerequisites"></a>Prerequisites</h3>
<div class="dlist">
<dl>
<dt class="hdlist1">Background docs</dt>
<dd>
<div class="ulist">
<ul>
<li>
<p><a href="http://www.apache.org/legal/release-policy.html">ASF Release Policy</a></p>
</li>
<li>
<p><a href="http://www.apache.org/dev/release-distribution">ASF Release
Distribution Policy</a></p>
</li>
<li>
<p><a href="https://infra.apache.org/release-publishing.html">ASF Release
Best Practices</a></p>
</li>
</ul>
</div>
</dd>
</dl>
</div>
<div class="paragraph">
<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>
<div class="sect3">
<h4 id="create-and-publish-your-gpg-key"><a class="anchor" href="#create-and-publish-your-gpg-key"></a>Create and publish your GPG key</h4>
<div class="paragraph">
<p>To create a GPG key, follow the
<a href="http://www.apache.org/dev/openpgp.html">guidelines</a>. <strong>The key must be 4096
bit RSA.</strong></p>
</div>
<div class="paragraph">
<p>Publish your GPG key in a PGP key server, such as
<a href="http://pgp.mit.edu/">MIT Keyserver</a>. Some <code>gpg</code> clients are publishing the keys <a href="https://keys.openpgp.org/">here</a>. You are
welcome to set the server where the keys will be published by following <a href="https://keys.openpgp.org/about/usage">this guide</a>.</p>
</div>
<div class="paragraph">
<p>Once completed, you need to create a ticket <a href="https://issues.apache.org/jira/browse/CASSANDRA-18205">like this</a>
and ask a PMC to add your key to <code>KEYS</code> file.</p>
</div>
<div class="paragraph">
<p>A PMC will include your public key to this file:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">https://dist.apache.org/repos/dist/release/cassandra/KEYS</code></pre>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="create-release-artifacts"><a class="anchor" href="#create-release-artifacts"></a>Create Release Artifacts</h3>
<div class="paragraph">
<p>Any committer can perform the following steps to create and call a vote
on a proposed release.</p>
</div>
<div class="paragraph">
<p>Check that there are no open urgent Jira tickets currently being worked
on. Also check with the PMC that there&#8217;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>
<div class="paragraph">
<p>For successful building process, install this tooling locally:
svn, git, ant, devscripts, reprepro, rpmsign, docker, createrepo (the script is checking this tooling is present
before proceeding any further). The names of these "packages" are Debian-centric,
but equivalents should be discoverable in other systems too.</p>
</div>
<div class="paragraph">
<p>There is a package called <a href="https://packages.debian.org/bullseye/createrepo-c">createrepo-c</a> in Debian Bullseye.
Please beware that <code>createrepo</code> package is not located in Ubuntu 20.04 LTS. <code>createrepo</code> package is present in
Ubuntu Bionic (18.04), <code>createrepo-c</code> is in Ubuntu Jammy (22.04 LTS) and more recent.</p>
</div>
<div class="sect3">
<h4 id="perform-the-release"><a class="anchor" href="#perform-the-release"></a>Perform the Release</h4>
<div class="paragraph">
<p>Run the following commands to generate and upload release artifacts, to
the ASF nexus staging repository and dev distribution location:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">cd ~/git
git clone https://github.com/apache/cassandra-builds.git
git clone https://github.com/apache/cassandra.git</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none"># Edit the variables at the top of the `prepare_release.sh` file
edit cassandra-builds/cassandra-release/prepare_release.sh</code></pre>
</div>
</div>
<div class="paragraph">
<p>You must specify your ASF username to <code>asf_username</code> variable. Next, <code>gpg_key</code> environment variable must be
set to a fingerprint of your gpg key. Execute <code>gpg --list-keys</code> or a similar command to get the value. Finally, you must
add ASF remote to your cloned repository and <code>git_asf_remote</code> variable needs to be set to point to that. For example, when this command is executed:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">git remote add asf https://gitbox.apache.org/repos/asf/cassandra.git</code></pre>
</div>
</div>
<div class="paragraph">
<p>then <code>git_asf_remote</code> variable needs to be set to <code>asf</code>.
NOTE: This is very important step as tags are pushed to ASF repository and they are synchronized to GitHub automatically.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none"># Ensure your 4096 RSA key is the default secret key
edit ~/.gnupg/gpg.conf # update the `default-key` line</code></pre>
</div>
</div>
<div class="paragraph">
<p>A reference configuration should look like these examples:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">default-key &lt;fingerprint of your key&gt;
personal-digest-preferences SHA512
cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">edit ~/.rpmmacros # update the `%_gpg_name &lt;key_id&gt;` line
# Ensure DEBFULLNAME and DEBEMAIL is defined and exported, in the debian scripts configuration
edit ~/.devscripts</code></pre>
</div>
</div>
<div class="paragraph">
<p>The reference content of these files is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">$ cat ~/.rpmmacros
%_gpg_name email@youusedforyourkey.org
$ cat ~/.devscripts
DEBFULLNAME="Your Name"
DEBEMAIL=email@youusedforyourkey.org</code></pre>
</div>
</div>
<div class="paragraph">
<p>Empirical testing shows that you also must have the above <code>DEB*</code> environemnt variables exported before proceeding.</p>
</div>
<div class="paragraph">
<p>Additionally, you must configure <code>$HOME/.m2/settings.xml</code> to contain the credentials used to upload artifacts to <a href="https://repository.apache.org/">staging repository</a>. The credentials are your ASF credentials.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">$ cat ~/.m2/settings.xml
&lt;settings&gt;
&lt;servers&gt;
&lt;server&gt;
&lt;id&gt;apache.releases.https&lt;/id&gt;
&lt;username&gt;yourasflogin&lt;/username&gt;
&lt;password&gt;yourasfpassword&lt;/password&gt;
&lt;/server&gt;
&lt;server&gt;
&lt;id&gt;apache.snapshots.https&lt;/id&gt;
&lt;username&gt;yourasflogin&lt;/username&gt;
&lt;password&gt;yourasfpassword&lt;/password&gt;
&lt;/server&gt;
&lt;/servers&gt;
&lt;/settings&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>The script will eventually ask you for a username and password to push artifacts to SVN. The default prompt for user
will be equal to a username of an account at your machine. If your ASF login is not same as your username locally, just error out the prompt
(put there wrong password and confirm), and it will ask you for username again without providing any default value.</p>
</div>
<div class="paragraph">
<p>The <code>prepare_release.sh</code> 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.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">cd cassandra
git switch cassandra-&lt;version-branch&gt;
# The following cuts the release artifacts (including deb and rpm packages) and deploy to staging environments
../cassandra-builds/cassandra-release/prepare_release.sh -v &lt;version&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<p>Follow the prompts.</p>
</div>
<div class="paragraph">
<p>Once artifacts are built and pushed to the staging area, the script will pause and require you to go to the
<a href="https://repository.apache.org/#stagingRepositories">Staging repositories</a>, where you will find the repository.
Select the Cassandra repository and push the "Close" button.
Please take a note of the number of that repository like <code>orgapachecassandra-1283</code> - number is 1283.
The script will require the repo number to proceed. It will use this number in the rendered e-mail template sent to the dev list, etc.</p>
</div>
<div class="paragraph">
<p>If building the deb or rpm packages fail, those steps can be repeated
individually using the <span class="title-ref">-d</span> and <span class="title-ref">-r</span> flags,
respectively.</p>
</div>
<div class="paragraph">
<p>Once DEBs and RPMs are also uploaded, do not forget to merge your commit to prepare the release to trunk
and push after all artifacts are uploaded finish the process. You will be also reminded to do that by
the script itself at the end.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="call-for-a-vote"><a class="anchor" href="#call-for-a-vote"></a>Call for a Vote</h3>
<div class="paragraph">
<p>Fill out the following email template you find in <code>$HOME/Mail</code> directory and send to the dev mailing list:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">I propose the following artifacts for release as &lt;version&gt;.
sha1: &lt;git-sha&gt;
Git: https://gitbox.apache.org/repos/asf?p=cassandra.git;a=shortlog;h=refs/tags/&lt;version&gt;-tentative
Artifacts: https://repository.apache.org/content/repositories/orgapachecassandra-&lt;nexus-id&gt;/org/apache/cassandra/apache-cassandra/&lt;version&gt;/
Staging repository: https://repository.apache.org/content/repositories/orgapachecassandra-&lt;nexus-id&gt;/
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=&lt;version&gt;-tentative
[2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=&lt;version&gt;-tentative</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="post-vote-operations"><a class="anchor" href="#post-vote-operations"></a>Post-vote operations</h3>
<div class="paragraph">
<p>Any PMC member can perform the following steps to formalize and publish
a successfully voted release.</p>
</div>
<div class="sect3">
<h4 id="publish-artifacts"><a class="anchor" href="#publish-artifacts"></a>Publish Artifacts</h4>
<div class="paragraph">
<p>Run the following commands to publish the voted release artifacts:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">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 &lt;version&gt;-tentative
../cassandra-builds/cassandra-release/finish_release.sh -v &lt;version&gt;</code></pre>
</div>
</div>
<div class="paragraph">
<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>
<div class="sect3">
<h4 id="promote-nexus-repository"><a class="anchor" href="#promote-nexus-repository"></a>Promote Nexus Repository</h4>
<div class="ulist">
<ul>
<li>
<p>Login to <a href="https://repository.apache.org">Nexus repository</a> again.</p>
</li>
<li>
<p>Click on "Staging Repositories" and then on the repository with id
"cassandra-staging".</p>
</li>
<li>
<p>Find your closed staging repository, select it and choose "Release". This
may take some time, but eventually the repository will no longer show in
Staging Repositories.</p>
</li>
<li>
<p>Next click on "Repositories", and select "Public Repositories" and
validate that your artifacts exist as you expect them.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="update-and-publish-website"><a class="anchor" href="#update-and-publish-website"></a>Update and Publish Website</h3>
<div class="paragraph">
<p>See <a href="https://svn.apache.org/repos/asf/cassandra/site/src/README">docs</a> for
building and publishing the website.</p>
</div>
<div class="paragraph">
<p>Also update the CQL doc if appropriate.</p>
</div>
</div>
<div class="sect2">
<h3 id="release-version-in-jira"><a class="anchor" href="#release-version-in-jira"></a>Release version in JIRA</h3>
<div class="paragraph">
<p>Release the JIRA version.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>In JIRA go to the version that you want to release and release it.</p>
</li>
<li>
<p>Create a new version, if it has not been done before.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="update-to-next-development-version"><a class="anchor" href="#update-to-next-development-version"></a>Update to Next Development Version</h3>
<div class="paragraph">
<p>Update the codebase to point to the next development version:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">cd ~/git/cassandra/
git checkout cassandra-&lt;version-branch&gt;
edit build.xml # update `&lt;property name="base.version" value="…"/&gt; `
edit debian/changelog # add entry for new version
edit CHANGES.txt # add entry for new version
git commit -m "Increment version to &lt;next-version&gt;" build.xml debian/changelog CHANGES.txt
# …and forward merge and push per normal procedure</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="wait-for-artifacts-to-sync"><a class="anchor" href="#wait-for-artifacts-to-sync"></a>Wait for Artifacts to Sync</h3>
<div class="paragraph">
<p>Wait for the artifacts to sync at
<a href="https://downloads.apache.org/cassandra/" class="bare">downloads.apache.org/cassandra/</a></p>
</div>
</div>
<div class="sect2">
<h3 id="send-release-announcement"><a class="anchor" href="#send-release-announcement"></a>Send Release Announcement</h3>
<div class="paragraph">
<p>Fill out the following email template and send to both user and dev
mailing lists:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">The Cassandra team is pleased to announce the release of Apache Cassandra version &lt;version&gt;.
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 &lt;the first|a bug fix&gt; release[1] on the &lt;version-base&gt; 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=&lt;version&gt;
[2]: (NEWS.txt) https://git1-us-west.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=&lt;version&gt;
[3]: https://issues.apache.org/jira/browse/CASSANDRA</code></pre>
</div>
</div>
<div class="paragraph">
<p>Update Slack Cassandra topic ---------------------------</p>
</div>
<div class="dlist">
<dl>
<dt class="hdlist1">Update topic in <code>cassandra</code> <code>Slack room &lt;slack&gt;</code></dt>
<dd>
<p>/topic cassandra.apache.org | Latest releases: 4.1.0, 4.0.7, 3.11.4, 3.0.18 | ask, don&#8217;t ask to ask</p>
</dd>
</dl>
</div>
</div>
<div class="sect2">
<h3 id="tweet-from-cassandra"><a class="anchor" href="#tweet-from-cassandra"></a>Tweet from @Cassandra</h3>
<div class="paragraph">
<p>Tweet the new release, from the @Cassandra account</p>
</div>
</div>
<div class="sect2">
<h3 id="delete-old-releases"><a class="anchor" href="#delete-old-releases"></a>Delete Old Releases</h3>
<div class="paragraph">
<p>As described in
<a href="http://www.apache.org/dev/release.html#when-to-archive">When to Archive</a>.</p>
</div>
<div class="paragraph">
<p>An example of removing old releases:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-none hljs" data-lang="none">svn co https://dist.apache.org/repos/dist/release/cassandra/ cassandra-dist
svn rm &lt;previous_version&gt; debian/pool/main/c/cassandra/&lt;previous_version&gt;*
svn st
# check and commit</code></pre>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer class="grad grad--two flex-center pb-xlarge">
<div class="inner text-center z2 relative">
<h2 class="white py-small">Get started with Cassandra, fast.</h2>
<a id="footer-cta" href="/_/quickstart.html" class="btn btn--filled ma-medium">Quickstart Guide</a>
</div>
<div class="inner flex flex-distribute-items mt-xlarge z2 relative">
<div class="col-2">
<div id="footer-logo" class="logo logo--footer mb-medium"><img src="../../assets/img/logo-white-r.png" alt="Cassandra Logo"></div>
<p>Apache Cassandra<img src="../../assets/img/registered.svg" alt="®" style="width:18px;"> powers mission-critical deployments with improved performance and unparalleled levels of scale in the cloud.</p>
<div class="footer-social-icons">
<a href="https://twitter.com/cassandra?lang=en" target="_blank"><img src="../../assets/img/twitter-icon-circle-white.svg" alt="twitter icon" width="24"></a>
<a href="https://www.linkedin.com/company/apache-cassandra/" target="_blank"><img src="../../assets/img/LI-In-Bug.png" alt="linked-in icon" width="24"></a>
<a href="https://www.youtube.com/c/PlanetCassandra" target="_blank"><img src="../../assets/img/youtube-icon.png" alt="youtube icon" width="24"></a>
</div>
</div>
<div class="col-2 flex flex-center">
<ul class="columns-2">
<li class="mb-small"><a href="/">Home</a></li>
<li class="mb-small"><a href="/_/cassandra-basics.html">Cassandra Basics</a></li>
<li class="mb-small"><a href="/_/quickstart.html">Quickstart</a></li>
<li class="mb-small"><a href="/_/ecosystem.html">Ecosystem</a></li>
<li class="mb-small"><a href="/doc/latest/">Documentation</a></li>
<li class="mb-small"><a href="/_/community.html">Community</a></li>
<li class="mb-small"><a href="/_/case-studies.html">Case Studies</a></li>
<li class="mb-small"><a href="/_/resources.html">Resources</a></li>
<li class="mb-small"><a href="/_/blog.html">Blog</a></li>
</ul>
</div>
</div>
</footer>
<div class="lower-footer bg-white pa-medium">
<div class="flex flex-row flex-vert-center">
<div class="pr-medium"><img src="../../assets/img//feather-small.png" alt="ASF" width="20"></div>
<div class="pr-medium"><a href="http://www.apache.org/" target="_blank">Foundation</a></div>
<div class="pr-medium"><a href="https://www.apache.org/events/current-event.html" target="_blank">Events</a></div>
<div class="pr-medium"><a href="https://www.apache.org/licenses/" target="_blank">License</a></div>
<div class="pr-medium"><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></div>
<div class="pr-medium"><a href="https://www.apache.org/security" target="_blank">Security</a></div>
<div class="pr-medium"><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank">Privacy</a></div>
<div class="pr-medium"><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></div>
</div>
<p class="my-medium">© 2009-<script>document.write(new Date().getFullYear())</script> <a href="https://apache.org" target="_blank">The Apache Software Foundation</a> under the terms of the Apache License 2.0. Apache, the Apache feather logo, Apache Cassandra, Cassandra, and the Cassandra logo, are either registered trademarks or trademarks of The Apache Software Foundation.</p>
</div>
<div id="fade" class="hidden"></div>
<div id="modal" class="hidden">
<div id="close-modal" class="cursor-pointer"><svg viewBox="0 0 24 24" width="24" height="24" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg></div>
<div id="mod-content" class="vid-mod-content resp-container"></div>
</div>
<script>
jQuery(function(){
var windowW = $(window).width();
$(document)
.on('click','.mobile-nav-icon',function(){
$('.main-nav').fadeIn();
})
.on('click','.main-nav',function(){
if(windowW <= 1000){
$(this).fadeOut();
}
})
.on('click','#version-toggle',function(){
$(this).toggleClass('active');
$(this).next().fadeToggle();
})
.on('click','#mobile-docs-nav-burger', function(){
$(this).toggleClass('active');
$('.docs-nav').toggleClass('active');
});
var url = window.location.pathname;
var isQuickstart = url.includes('quickstart.html');
if(isQuickstart){
var footerCTA = document.getElementById('footer-cta');
footerCTA.innerHTML = 'Get latest updates';
footerCTA.setAttribute('href', '/_/blog.html');
}
});
</script>
</div>
</body>
<script>
jQuery(function(){
jQuery(document)
.on('click','.cassandra-cloud h3',function(){
var el = jQuery(this);
el.toggleClass('active');
el.next().slideToggle();
})
.on('click','.image-expand img', function(){
$(this).clone().appendTo('#mod-content');
$('#fade,#modal,#close-modal').fadeIn();
$('body,html').addClass('no-scroll');
})
.on('click','#fade,#close-modal', function(){
$('#fade,#modal,#close-modal').fadeOut();
$('body,html').removeClass('no-scroll');
$('#mod-content').html('');
});
});
</script>
</html>