blob: ca8f2add6e0e390144260e08a683c3d276bc15a3 [file] [log] [blame]
<!doctype html>
<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-community docs-version-current docs-doc-page docs-doc-id-release/release" data-has-hydrated="false">
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.6.1">
<title data-rh="true">Create a release | Apache OpenDAL™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://opendal.apache.org/community/release/"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-community-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-community-current"><meta data-rh="true" property="og:title" content="Create a release | Apache OpenDAL™"><meta data-rh="true" name="description" content="This document mainly introduces how the release manager"><meta data-rh="true" property="og:description" content="This document mainly introduces how the release manager"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://opendal.apache.org/community/release/"><link data-rh="true" rel="alternate" href="https://opendal.apache.org/community/release/" hreflang="en"><link data-rh="true" rel="alternate" href="https://opendal.apache.org/community/release/" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache OpenDAL™ RSS Feed">
<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache OpenDAL™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.9369d349.css">
<script src="/assets/js/runtime~main.1757baa1.js" defer="defer"></script>
<script src="/assets/js/main.7e524140.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_mbPH" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" target="_self" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="Apache OpenDAL" class="themedComponent_uAN0 themedComponent--light_SXb1" height="32"><img src="/img/logo_dark.svg" alt="Apache OpenDAL" class="themedComponent_uAN0 themedComponent--dark_SjJw" height="32"></div></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/">Docs</a><a class="navbar__item navbar__link" href="/blog/">Blog</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/community/">Community</a><a class="navbar__item navbar__link" href="/download/">Download</a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li><li><a href="https://www.apache.org/foundation/policies/conduct.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Code of Conduct</a></li></ul></div><a href="https://github.com/apache/opendal" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><a href="https://discord.gg/XQy8yGR2dg" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-discord-link" aria-label="Discord"></a><div class="navbarSearchContainer_cX17"><div class="navbar__search"><span aria-label="expand searchbar" role="button" class="search-icon" tabindex="0"></span><input id="search_input_react" type="search" placeholder="Loading..." aria-label="Search" class="navbar__search-input search-bar" disabled=""></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_NfWm"><div class="docsWrapper_EXDp"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_FqST" type="button"></button><div class="docRoot_FdVe"><aside class="theme-doc-sidebar-container docSidebarContainer_MTQP"><div class="sidebarViewport_zfgy"><div class="sidebar_qrCB"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_Mn2C"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/community/">Community</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/community/maturity/">Maturity</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/community/security/">Security</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/community/category/events/">Events</a><button aria-label="Expand sidebar category &#x27;Events&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/community/category/release/">Release</a><button aria-label="Collapse sidebar category &#x27;Release&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/community/release/">Create a release</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/release/verify/">Verify a release candidate</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" tabindex="0" href="/community/category/reference/">Reference</a><button aria-label="Expand sidebar category &#x27;Reference&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/community/category/committers/">Committers</a><button aria-label="Collapse sidebar category &#x27;Committers&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/committers/onboarding/">Onboarding</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/committers/request_for_adding_secrets/">Request for adding secrets</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/community/category/pmc-members/">PMC Members</a><button aria-label="Collapse sidebar category &#x27;PMC Members&#x27;" aria-expanded="true" type="button" class="clean-btn menu__caret"></button></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/pmc_members/onboarding/">Onboarding</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/pmc_members/nominate-committer/">Nominate Committer</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/pmc_members/nominate-pmc-member/">Nominate PMC Member</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/community/pmc_members/board-reporting/">Board reporting</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_Ztw0"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_fzqc"><div class="docItemContainer_mgxp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_jTIh" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_crCa"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/community/category/release/"><span itemprop="name">Release</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Create a release</span><meta itemprop="position" content="2"></li></ul></nav><div class="tocCollapsible__3CD theme-doc-toc-mobile tocMobile_l2EP"><button type="button" class="clean-btn tocCollapsibleButton_Vl9O">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Create a release</h1></header><p>This document mainly introduces how the release manager
releases a new version of Apache OpenDAL™ in accordance with the Apache requirements.</p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction"></a></h2>
<p><code>Source Release</code> is the key point which Apache values, and is also necessary for an ASF release.</p>
<p>Please remember that publishing software has legal consequences.</p>
<p>This guide complements the foundation-wide policies and guides:</p>
<ul>
<li><a href="https://www.apache.org/legal/release-policy.html" target="_blank" rel="noopener noreferrer">Release Policy</a></li>
<li><a href="https://infra.apache.org/release-distribution" target="_blank" rel="noopener noreferrer">Release Distribution Policy</a></li>
<li><a href="https://infra.apache.org/release-publishing.html" target="_blank" rel="noopener noreferrer">Release Creation Process</a></li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="some-terminology-of-release">Some Terminology of release<a href="#some-terminology-of-release" class="hash-link" aria-label="Direct link to Some Terminology of release" title="Direct link to Some Terminology of release"></a></h2>
<p>In the context of our release, we use several terms to describe different stages of the release process.</p>
<p>Here&#x27;s an explanation of these terms:</p>
<ul>
<li><code>opendal_version</code>: the version of OpenDAL to be released, like <code>0.46.0</code>.</li>
<li><code>release_version</code>: the version of release candidate, like <code>0.46.0-rc.1</code>.</li>
<li><code>rc_version</code>: the minor version for voting round, like <code>rc.1</code>.</li>
<li><code>maven_artifact_number</code>: the number for Maven staging artifacts, like <code>1010</code>. The number can be found by searching &quot;opendal&quot; on <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener noreferrer">https://repository.apache.org/#stagingRepositories</a>. And the Maven staging artifacts will be created automatically when we push a git tag to GitHub for now.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="preparation">Preparation<a href="#preparation" class="hash-link" aria-label="Direct link to Preparation" title="Direct link to Preparation"></a></h2>
<div class="theme-admonition theme-admonition-caution admonition_oBR_ alert alert--warning"><div class="admonitionHeading_BquS"><span class="admonitionIcon_bL4W"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_TttM"><p>This section is the requirements for individuals who are new to the role of release manager.</p></div></div>
<p>Refer to <a href="/community/release/reference/setup_gpg/">Setup GPG Key</a> to make sure the GPG key has been set up.</p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="start-discussion-about-the-next-release">Start discussion about the next release<a href="#start-discussion-about-the-next-release" class="hash-link" aria-label="Direct link to Start discussion about the next release" title="Direct link to Start discussion about the next release"></a></h2>
<p>Start a discussion at <a href="https://github.com/apache/opendal/discussions/categories/general" target="_blank" rel="noopener noreferrer">OpenDAL Discussion General</a>:</p>
<p>Title:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">[DISCUSS] Release Apache OpenDAL ${release_version}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Content:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">Hello, Apache OpenDAL Community,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">This is a call for a discussion to release Apache OpenDAL version ${opendal_version}.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The change lists about this release:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://github.com/apache/opendal/compare/v${opendal_last_version}...main</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Please leave your comments here about this release plan. We will bump the version in the repo and start the release process after the discussion.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thanks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${name}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="start-a-tracking-issue-about-the-next-release">Start a tracking issue about the next release<a href="#start-a-tracking-issue-about-the-next-release" class="hash-link" aria-label="Direct link to Start a tracking issue about the next release" title="Direct link to Start a tracking issue about the next release"></a></h2>
<p>Start a <a href="https://github.com/apache/opendal/issues/new?template=3-new-release.md" target="_blank" rel="noopener noreferrer">tracking issue on GitHub</a> for the upcoming release to track all tasks that need to be completed.</p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="release-list">Release List<a href="#release-list" class="hash-link" aria-label="Direct link to Release List" title="Direct link to Release List"></a></h2>
<p>Update the version list in the <code>dev/src/release/package.rs</code> file.</p>
<p>For example:</p>
<ul>
<li>If there is any breaking change, please bump the <code>minor</code> version instead of the <code>patch</code> version.</li>
<li>If this package is not ready for release, please skip.</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="github-side">GitHub Side<a href="#github-side" class="hash-link" aria-label="Direct link to GitHub Side" title="Direct link to GitHub Side"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="bump-version-in-project">Bump version in project<a href="#bump-version-in-project" class="hash-link" aria-label="Direct link to Bump version in project" title="Direct link to Bump version in project"></a></h3>
<p>Run <code>just update-version</code> to bump the version in the project.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="update-docs">Update docs<a href="#update-docs" class="hash-link" aria-label="Direct link to Update docs" title="Direct link to Update docs"></a></h3>
<ul>
<li>Update <code>CHANGELOG.md</code>, refer to <a href="/community/release/reference/generate_release_note/">Generate Release Note</a> for more information.</li>
<li>Update <code>core/src/docs/upgrade.md</code> if there are breaking changes in <code>core</code></li>
<li>Make sure every released bindings&#x27; <code>upgrade.md</code> has been updated.
<ul>
<li>java: <code>bindings/java/upgrade.md</code></li>
<li>node.js: <code>bindings/nodejs/upgrade.md</code></li>
<li>python: <code>bindings/python/upgrade.md</code></li>
</ul>
</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="generate-dependencies-list">Generate dependencies list<a href="#generate-dependencies-list" class="hash-link" aria-label="Direct link to Generate dependencies list" title="Direct link to Generate dependencies list"></a></h3>
<p>Download and setup <code>cargo-deny</code>. You can refer to <a href="https://embarkstudios.github.io/cargo-deny/cli/index.html" target="_blank" rel="noopener noreferrer">cargo-deny</a>.</p>
<p>Running <code>python3 ./scripts/dependencies.py generate</code> to update the dependency list of every package.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="push-release-candidate-tag">Push release candidate tag<a href="#push-release-candidate-tag" class="hash-link" aria-label="Direct link to Push release candidate tag" title="Direct link to Push release candidate tag"></a></h3>
<p>After bump version PR gets merged, we can create a GitHub release for the release candidate:</p>
<ul>
<li>Create a tag at <code>main</code> branch on the <code>Bump Version</code> / <code>Patch up version</code> commit: <code>git tag -s &quot;v0.46.0-rc.1&quot;</code>, please correctly check out the corresponding commit instead of directly tagging on the main branch.</li>
<li>Push tags to GitHub: <code>git push --tags</code>.</li>
</ul>
<div class="theme-admonition theme-admonition-note admonition_oBR_ alert alert--secondary"><div class="admonitionHeading_BquS"><span class="admonitionIcon_bL4W"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_TttM"><p>Pushing a Git tag to GitHub repo will trigger a GitHub Actions workflow that creates a staging Maven release on <a href="https://repository.apache.org" target="_blank" rel="noopener noreferrer">https://repository.apache.org</a> which can be verified on voting.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="check-the-github-action-status">Check the GitHub action status<a href="#check-the-github-action-status" class="hash-link" aria-label="Direct link to Check the GitHub action status" title="Direct link to Check the GitHub action status"></a></h3>
<p>After pushing the tag, we need to check the GitHub action status to make sure the release candidate is created successfully.</p>
<ul>
<li>Python: <a href="https://github.com/apache/opendal/actions/workflows/bindings_python.yml" target="_blank" rel="noopener noreferrer">Bindings Python CI</a></li>
<li>Java: <a href="https://github.com/apache/opendal/actions/workflows/bindings_java.yml" target="_blank" rel="noopener noreferrer">Bindings Java CI</a> and <a href="https://github.com/apache/opendal/actions/workflows/release_java.yml" target="_blank" rel="noopener noreferrer">Bindings Java Release</a></li>
<li>Node.js: <a href="https://github.com/apache/opendal/actions/workflows/bindings_nodejs.yml" target="_blank" rel="noopener noreferrer">Bindings Node.js CI</a></li>
</ul>
<p>In the most cases, it would be great to rerun the failed workflow directly when you find some failures. But if a new code patch is needed to fix the failure, you should create a new release candidate tag, increase the rc number and push it to GitHub.</p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="asf-side">ASF Side<a href="#asf-side" class="hash-link" aria-label="Direct link to ASF Side" title="Direct link to ASF Side"></a></h2>
<p>If any step in the ASF Release process fails and requires code changes,
we will abandon that version and prepare for the next one.
Our release page will only display ASF releases instead of GitHub Releases.</p>
<p>Additionally, we should also drop the staging Maven artifacts on <a href="https://repository.apache.org" target="_blank" rel="noopener noreferrer">https://repository.apache.org</a>.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="create-an-asf-release">Create an ASF Release<a href="#create-an-asf-release" class="hash-link" aria-label="Direct link to Create an ASF Release" title="Direct link to Create an ASF Release"></a></h3>
<p>After GitHub Release has been created, we can start to create ASF Release.</p>
<ul>
<li>Checkout to released tag. (e.g. <code>git checkout v0.46.0-rc.1</code>, tag is created in the previous step)</li>
<li>Use the release script to create a new release: <code>just release</code>
<ul>
<li>This script will generate the release candidate artifacts under <code>dist</code>, including:
<ul>
<li><code>apache-opendal-{package}-{version}-src.tar.gz</code></li>
<li><code>apache-opendal-{package}-{version}-src.tar.gz.asc</code></li>
<li><code>apache-opendal-{package}-{version}-src.tar.gz.sha512</code></li>
</ul>
</li>
</ul>
</li>
<li>Push the newly created branch to GitHub</li>
</ul>
<p>This script will create a new release under <code>dist</code>.</p>
<p>For example:</p>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">dist</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-bindings-c-0.44.2-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-bindings-c-0.44.2-src.tar.gz.asc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-bindings-c-0.44.2-src.tar.gz.sha512</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-core-0.45.0-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-core-0.45.0-src.tar.gz.asc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-core-0.45.0-src.tar.gz.sha512</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz.asc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-integrations-dav-server-0.0.0-src.tar.gz.sha512</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-integrations-object_store-0.42.0-src.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── apache-opendal-integrations-object_store-0.42.0-src.tar.gz.asc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── apache-opendal-integrations-object_store-0.42.0-src.tar.gz.sha512</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1 directory, 60 files</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="upload-artifacts-to-the-svn-dist-repo">Upload artifacts to the SVN dist repo<a href="#upload-artifacts-to-the-svn-dist-repo" class="hash-link" aria-label="Direct link to Upload artifacts to the SVN dist repo" title="Direct link to Upload artifacts to the SVN dist repo"></a></h3>
<div class="theme-admonition theme-admonition-info admonition_oBR_ alert alert--info"><div class="admonitionHeading_BquS"><span class="admonitionIcon_bL4W"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_TttM"><p>SVN is required for this step.</p></div></div>
<p>The svn repository of the dev branch is: <a href="https://dist.apache.org/repos/dist/dev/opendal" target="_blank" rel="noopener noreferrer">https://dist.apache.org/repos/dist/dev/opendal</a></p>
<p>First, checkout OpenDAL to local directory:</p>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain"># As this step will copy all the versions, it will take some time. If the network is broken, please use svn cleanup to delete the lock before re-execute it.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn co https://dist.apache.org/repos/dist/dev/opendal opendal-dist-dev</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Then, upload the artifacts:</p>
<blockquote>
<p>The <code>${release_version}</code> here should be like <code>0.46.0-rc.1</code></p>
</blockquote>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">cd opendal-dist-dev</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># create a directory named by version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">mkdir ${release_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># copy source code and signature package to the versioned directory</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cp ${repo_dir}/dist/* ${release_version}/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># check svn status</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn status</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># add to svn</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn add ${release_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># check svn status</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn status</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># commit to SVN remote server</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn commit -m &quot;Prepare for ${release_version}&quot;</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Visit <a href="https://dist.apache.org/repos/dist/dev/opendal/" target="_blank" rel="noopener noreferrer">https://dist.apache.org/repos/dist/dev/opendal/</a> to make sure the artifacts are uploaded correctly.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="close-the-nexus-staging-repo">Close the Nexus staging repo<a href="#close-the-nexus-staging-repo" class="hash-link" aria-label="Direct link to Close the Nexus staging repo" title="Direct link to Close the Nexus staging repo"></a></h3>
<p>To verify the Maven staging artifacts in the next step, close the Nexus staging repo as below.</p>
<ol>
<li>Open <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener noreferrer">https://repository.apache.org/#stagingRepositories</a> with your Apache ID login.</li>
<li>Find the artifact <code>orgapacheopendal-${maven_artifact_number}</code>, click the &quot;Close&quot; button.</li>
</ol>
<p>The <code>close</code> operation means that the artifacts are ready for voting.</p>
<div class="theme-admonition theme-admonition-caution admonition_oBR_ alert alert--warning"><div class="admonitionHeading_BquS"><span class="admonitionIcon_bL4W"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_TttM"><p>If the vote failed, click &quot;Drop&quot; to drop the staging Maven artifacts.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="rescue">Rescue<a href="#rescue" class="hash-link" aria-label="Direct link to Rescue" title="Direct link to Rescue"></a></h3>
<p>If you accidentally published wrong or unexpected artifacts, like wrong signature files, wrong sha256 files,
please cancel the release for the current <code>release_version</code>,
<em>increase th RC counting</em> and re-initiate a release with the new <code>release_version</code>.
And remember to delete the wrong artifacts from the SVN dist repo.
Additionally, you should also drop the staging Maven artifacts on <a href="https://repository.apache.org" target="_blank" rel="noopener noreferrer">https://repository.apache.org</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="voting">Voting<a href="#voting" class="hash-link" aria-label="Direct link to Voting" title="Direct link to Voting"></a></h2>
<p>OpenDAL requires votes from both the OpenDAL Community.</p>
<p>Start a VOTE at <a href="https://github.com/apache/opendal/discussions/categories/general" target="_blank" rel="noopener noreferrer">OpenDAL Discussion General</a>:</p>
<p>Title:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">[VOTE] Release Apache OpenDAL ${release_version} - Vote Round 1</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Content:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">Hello, Apache OpenDAL Community,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">This is a call for a vote to release Apache OpenDAL version ${opendal_version}.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The tag to be voted on is ${opendal_version}.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The release candidate:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://dist.apache.org/repos/dist/dev/opendal/${release_version}/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Keys to verify the release candidate:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://downloads.apache.org/opendal/KEYS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Git tag for the release:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://github.com/apache/opendal/releases/tag/v${release_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Maven staging repo:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://repository.apache.org/content/repositories/orgapacheopendal-${maven_artifact_number}/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Pypi testing repo:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://test.pypi.org/project/opendal/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Website staged:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://opendal-v${release_version | replace(&#x27;.&#x27;, &#x27;-&#x27;)}.staged.apache.org/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Please download, verify, and test.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The VOTE will be open for at least 72 hours and until the necessary</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">number of votes are reached.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] +1 approve</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] +0 no opinion</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] -1 disapprove with the reason</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">To learn more about apache opendal, please see https://opendal.apache.org/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Checklist for reference:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] Download links are valid.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] Checksums and signatures.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] LICENSE/NOTICE files exist</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] No unexpected binary files</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] All source files have ASF headers</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- [ ] Can compile from source</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Use our verify.py to assist in the verify process:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> svn co https://dist.apache.org/repos/dist/dev/opendal/${release_version}/ opendal-dev</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> cd opendal-dev</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> curl -sSL https://github.com/apache/opendal/raw/v${release_version}/scripts/verify.py -o verify.py</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> python verify.py</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thanks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${name}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Example: <a href="https://github.com/apache/opendal/discussions/5211" target="_blank" rel="noopener noreferrer">https://github.com/apache/opendal/discussions/5211</a></p>
<p>The vote should be open for <strong>at least 72 hours</strong> except the following cases:</p>
<ol>
<li>Security issues</li>
<li>The wild user affected bug fixes</li>
<li>Any other emergency cases</li>
</ol>
<p>The Release manager should claim the emergency cases in the vote email if he wants to vote it rapidly.</p>
<blockquote>
<p>Tips: The 72 hours is the minimum time for voting, so we can ensure that community members from various time zones can participate in the verification process.</p>
</blockquote>
<p>After at least 3 <code>+1</code> binding vote (<a href="https://people.apache.org/phonebook.html?project=opendal" target="_blank" rel="noopener noreferrer">from OpenDAL PMC member</a>) and more +1 bindings than -1 bindings, claim the vote result:</p>
<p>Title:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">[RESULT][VOTE] Release Apache OpenDAL ${release_version} - Vote Round 1</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Content:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">Hello, Apache OpenDAL Community,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The vote to release Apache OpenDAL ${release_version} has passed.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The vote PASSED with 3 +1 binding and 1 +1 non-binding votes, no +0 or -1 votes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Binding votes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- xxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- yyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- zzz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Non-Binding votes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- aaa</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vote thread: ${vote_thread_url}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thanks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">${name}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>It&#x27;s better to use the real name or the public name which is displayed on the voters&#x27; profile page,
or Apache ID of the voter, to show who voted in the vote result email,
and avoid using nicknames, it will make the vote result hard for others to track the voter.
We should make sure the binding votes are from the people who have the right to vote the binding one.</p>
<p>Example: <a href="https://lists.apache.org/thread/xk5myl10mztcfotn59oo59s4ckvojds6" target="_blank" rel="noopener noreferrer">https://lists.apache.org/thread/xk5myl10mztcfotn59oo59s4ckvojds6</a></p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="official-release">Official Release<a href="#official-release" class="hash-link" aria-label="Direct link to Official Release" title="Direct link to Official Release"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="push-the-release-git-tag">Push the release git tag<a href="#push-the-release-git-tag" class="hash-link" aria-label="Direct link to Push the release git tag" title="Direct link to Push the release git tag"></a></h3>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain"># Checkout the tags that passed VOTE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">git checkout ${release_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Tag with the opendal version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">git tag -s ${opendal_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># Push tags to GitHub to trigger releases</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">git push origin ${opendal_version}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="publish-artifacts-to-svn-release-branch">Publish artifacts to SVN RELEASE branch<a href="#publish-artifacts-to-svn-release-branch" class="hash-link" aria-label="Direct link to Publish artifacts to SVN RELEASE branch" title="Direct link to Publish artifacts to SVN RELEASE branch"></a></h3>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">svn mv https://dist.apache.org/repos/dist/dev/opendal/${release_version} https://dist.apache.org/repos/dist/release/opendal/${opendal_version} -m &quot;Release ${opendal_version}&quot;</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="release-maven-artifacts">Release Maven artifacts<a href="#release-maven-artifacts" class="hash-link" aria-label="Direct link to Release Maven artifacts" title="Direct link to Release Maven artifacts"></a></h3>
<ol>
<li>Open <a href="https://repository.apache.org/#stagingRepositories" target="_blank" rel="noopener noreferrer">https://repository.apache.org/#stagingRepositories</a>.</li>
<li>Find the artifact <code>orgapacheopendal-${maven_artifact_number}</code>, click the &quot;Release&quot; button.</li>
</ol>
<p>It will take some time to sync the Maven artifacts to the Maven Central.</p>
<div class="theme-admonition theme-admonition-caution admonition_oBR_ alert alert--warning"><div class="admonitionHeading_BquS"><span class="admonitionIcon_bL4W"><svg viewBox="0 0 16 16"><path fill-rule="evenodd" d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"></path></svg></span>caution</div><div class="admonitionContent_TttM"><p>If the vote failed, click &quot;Drop&quot; to drop the staging Maven artifacts.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="check-the-language-binding-artifacts">Check the language binding artifacts<a href="#check-the-language-binding-artifacts" class="hash-link" aria-label="Direct link to Check the language binding artifacts" title="Direct link to Check the language binding artifacts"></a></h3>
<p>We need to check the language binding artifacts in the language package repo to make sure they are released successfully.</p>
<ul>
<li>Python: <a href="https://pypi.org/project/opendal/" target="_blank" rel="noopener noreferrer">https://pypi.org/project/opendal/</a></li>
<li>Java: <a href="https://repository.apache.org/#nexus-search;quick~opendal" target="_blank" rel="noopener noreferrer">https://repository.apache.org/#nexus-search;quick~opendal</a></li>
<li>Node.js: <a href="https://www.npmjs.com/package/opendal" target="_blank" rel="noopener noreferrer">https://www.npmjs.com/package/opendal</a></li>
</ul>
<p>For Java binding, if we cannot find the latest version of artifacts in the repo,
we need to check the <code>orgapacheopendal-${maven_artifact_number}</code> artifact status in staging repo.</p>
<p>For non-Java bindings, if we cannot find the latest version of artifacts in the repo,
we need to check the GitHub action status.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="create-a-github-release">Create a GitHub Release<a href="#create-a-github-release" class="hash-link" aria-label="Direct link to Create a GitHub Release" title="Direct link to Create a GitHub Release"></a></h3>
<ul>
<li>Click <a href="https://github.com/apache/opendal/releases/new" target="_blank" rel="noopener noreferrer">here</a> to create a new release.</li>
<li>Pick the git tag of this release version from the dropdown menu.</li>
<li>Make sure the branch target is <code>main</code>.</li>
<li>Generate the release note by clicking the <code>Generate release notes</code> button.</li>
<li>Add the release note from every component&#x27;s <code>upgrade.md</code> if there are breaking changes before the content generated by GitHub. Check them carefully.</li>
<li>Publish the release.</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="send-the-announcement">Send the announcement<a href="#send-the-announcement" class="hash-link" aria-label="Direct link to Send the announcement" title="Direct link to Send the announcement"></a></h3>
<p>Start an announcement to <a href="https://github.com/apache/opendal/discussions/categories/announcements" target="_blank" rel="noopener noreferrer">OpenDAL Discussion Announcements</a> and send the same content to <code>announce@apache.org</code>.</p>
<blockquote>
<p>Tips: Please follow the <a href="https://infra.apache.org/committer-email.html" target="_blank" rel="noopener noreferrer">Committer Email</a> guide to make sure you have already set up the email SMTP. Otherwise, your email cannot be sent to the announcement mailing list.</p>
</blockquote>
<p>Instead of adding breaking changes, let&#x27;s include the new features as &quot;notable changes&quot; in the announcement.</p>
<p>Title:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">[ANNOUNCE] Release Apache OpenDAL ${opendal_version}</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Content:</p>
<div class="codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-text codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain">Hi all,</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The Apache OpenDAL community is pleased to announce</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">that Apache OpenDAL ${opendal_version} has been released!</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OpenDAL is a data access layer that allows users to easily and efficiently</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">retrieve data from various storage services in a unified way.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">The notable changes since ${opendal_version} include:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">1. xxxxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. yyyyyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. zzzzzz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Please refer to the change log for the complete list of changes:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">https://github.com/apache/opendal/releases/tag/v${opendal_version}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Apache OpenDAL website: https://opendal.apache.org/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Download Links: https://opendal.apache.org/download</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">OpenDAL Resources:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Issue: https://github.com/apache/opendal/issues</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- Mailing list: dev@opendal.apache.org</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thanks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">On behalf of Apache OpenDAL community</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>
<p>Example: <a href="https://lists.apache.org/thread/oy77n55brvk72tnlb2bjzfs9nz3cfd0s" target="_blank" rel="noopener noreferrer">https://lists.apache.org/thread/oy77n55brvk72tnlb2bjzfs9nz3cfd0s</a></p>
<h2 class="anchor anchorWithStickyNavbar_hDRy" id="post-release">Post release<a href="#post-release" class="hash-link" aria-label="Direct link to Post release" title="Direct link to Post release"></a></h2>
<p>After the official release out, you may perform a few post-actions.</p>
<h3 class="anchor anchorWithStickyNavbar_hDRy" id="remove-the-old-releases">Remove the old releases<a href="#remove-the-old-releases" class="hash-link" aria-label="Direct link to Remove the old releases" title="Direct link to Remove the old releases"></a></h3>
<p>Remove the old releases if any. You only need the latest release there, and older releases are available through the Apache archive.</p>
<p>To clean up old releases, run:</p>
<div class="language-shell codeBlockContainer_HoUO theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_fLNQ"><pre tabindex="0" class="prism-code language-shell codeBlock_OwT2 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_CaTV"><span class="token-line" style="color:#393A34"><span class="token plain"># 1. Get the list of releases</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn ls https://dist.apache.org/repos/dist/release/opendal</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 2. Delete each release (except for the last one)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">svn del -m &quot;Archiving OpenDAL release X.Y.Z&quot; https://dist.apache.org/repos/dist/release/opendal/X.Y.Z</span><br></span></code></pre><div class="buttonGroup_ry9d"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_hlAx" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_e2oV"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_Kvv3"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col"><a href="https://github.com/apache/opendal/tree/main/website/community/release/release.md" target="_blank" rel="noopener noreferrer" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_vgs4" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_l9Jf"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/community/category/release/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Release</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/community/release/verify/"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Verify a release candidate</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_f6Mq thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link toc-highlight">Introduction</a></li><li><a href="#some-terminology-of-release" class="table-of-contents__link toc-highlight">Some Terminology of release</a></li><li><a href="#preparation" class="table-of-contents__link toc-highlight">Preparation</a></li><li><a href="#start-discussion-about-the-next-release" class="table-of-contents__link toc-highlight">Start discussion about the next release</a></li><li><a href="#start-a-tracking-issue-about-the-next-release" class="table-of-contents__link toc-highlight">Start a tracking issue about the next release</a></li><li><a href="#release-list" class="table-of-contents__link toc-highlight">Release List</a></li><li><a href="#github-side" class="table-of-contents__link toc-highlight">GitHub Side</a><ul><li><a href="#bump-version-in-project" class="table-of-contents__link toc-highlight">Bump version in project</a></li><li><a href="#update-docs" class="table-of-contents__link toc-highlight">Update docs</a></li><li><a href="#generate-dependencies-list" class="table-of-contents__link toc-highlight">Generate dependencies list</a></li><li><a href="#push-release-candidate-tag" class="table-of-contents__link toc-highlight">Push release candidate tag</a></li><li><a href="#check-the-github-action-status" class="table-of-contents__link toc-highlight">Check the GitHub action status</a></li></ul></li><li><a href="#asf-side" class="table-of-contents__link toc-highlight">ASF Side</a><ul><li><a href="#create-an-asf-release" class="table-of-contents__link toc-highlight">Create an ASF Release</a></li><li><a href="#upload-artifacts-to-the-svn-dist-repo" class="table-of-contents__link toc-highlight">Upload artifacts to the SVN dist repo</a></li><li><a href="#close-the-nexus-staging-repo" class="table-of-contents__link toc-highlight">Close the Nexus staging repo</a></li><li><a href="#rescue" class="table-of-contents__link toc-highlight">Rescue</a></li></ul></li><li><a href="#voting" class="table-of-contents__link toc-highlight">Voting</a></li><li><a href="#official-release" class="table-of-contents__link toc-highlight">Official Release</a><ul><li><a href="#push-the-release-git-tag" class="table-of-contents__link toc-highlight">Push the release git tag</a></li><li><a href="#publish-artifacts-to-svn-release-branch" class="table-of-contents__link toc-highlight">Publish artifacts to SVN RELEASE branch</a></li><li><a href="#release-maven-artifacts" class="table-of-contents__link toc-highlight">Release Maven artifacts</a></li><li><a href="#check-the-language-binding-artifacts" class="table-of-contents__link toc-highlight">Check the language binding artifacts</a></li><li><a href="#create-a-github-release" class="table-of-contents__link toc-highlight">Create a GitHub Release</a></li><li><a href="#send-the-announcement" class="table-of-contents__link toc-highlight">Send the announcement</a></li></ul></li><li><a href="#post-release" class="table-of-contents__link toc-highlight">Post release</a><ul><li><a href="#remove-the-old-releases" class="table-of-contents__link toc-highlight">Remove the old releases</a></li></ul></li></ul></div></div></div></div></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" rel="noopener noreferrer" class="footerLogoLink_iEtV"><img src="/./img/asf_logo_wide.svg" alt="Apache Software Foundation" class="footer__logo themedComponent_uAN0 themedComponent--light_SXb1" width="300"><img src="/./img/asf_logo_wide.svg" alt="Apache Software Foundation" class="footer__logo themedComponent_uAN0 themedComponent--dark_SjJw" width="300"></a></div><div class="footer__copyright">Copyright © 2022-2025, The Apache Software Foundation<br>Apache OpenDAL, OpenDAL, Apache, the Apache feather and the Apache OpenDAL project logo are either registered trademarks or trademarks of the Apache Software Foundation.</div></div></div></footer></div>
</body>
</html>