| <!DOCTYPE html> |
| <html lang="cn" class="js csstransforms3d"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> |
| <meta name="generator" content="Hugo 0.70.0" /> |
| <meta name="description" content=""> |
| <meta name="buildDate" content="2022-08-12 13:01:24"> |
| |
| |
| <link rel="shortcut icon" href="https://shardingsphere.apache.org/document/current/img/favicon.png" type="image/x-icon" /> |
| |
| <title>ShardingSphere 发布指南 :: ShardingSphere</title> |
| |
| |
| <link href="https://shardingsphere.apache.org/community/css/nucleus.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/font-awesome.min.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/hybrid.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/featherlight.min.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/perfect-scrollbar.min.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/auto-complete.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/theme.css?1660280484" rel="stylesheet"> |
| <link href="https://shardingsphere.apache.org/community/css/hugo-theme.css?1660280484" rel="stylesheet"> |
| |
| <link href="https://shardingsphere.apache.org/community/css/theme-white.css?1660280484" rel="stylesheet"> |
| |
| |
| <script src="https://shardingsphere.apache.org/community/js/jquery-2.x.min.js?1660280484"></script> |
| |
| <script> |
| var _hmt = _hmt || []; |
| (function() { |
| var hm = document.createElement("script"); |
| hm.src = "https://hm.baidu.com/hm.js?d5a1dc8dcf63a64ee55b80de01c7fb1a"; |
| var s = document.getElementsByTagName("script")[0]; |
| s.parentNode.insertBefore(hm, s); |
| })(); |
| </script> |
| |
| <script async src="https://www.googletagmanager.com/gtag/js?id=G-HPVGEN405S"></script> |
| <script> |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){window.dataLayer.push(arguments);} |
| gtag('js', new Date()); |
| |
| gtag('config', 'G-HPVGEN405S'); |
| </script> |
| |
| <style type="text/css"> |
| :root #header + #content > #left > #rlblock_left{ |
| display:none !important; |
| } |
| |
| |
| |
| </style> |
| |
| |
| </head> |
| <body class="" data-url="/cn/contribute/release/"> |
| <div class="change-theme"> |
| <div class="wrap"> |
| |
| <span data-item="retro"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 复古 |
| </span> |
| <span data-item="eyehelp"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 护眼 |
| </span> |
| <span data-item="haitian"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 海天 |
| </span> |
| <span data-item="deep"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 深邃 |
| </span> |
| <span data-item="dark"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 暗黑 |
| </span> |
| <span class="active"> |
| <svg t="1649761460834" class="icon" viewBox="0 0 1243 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2052" width="16" height="16"><path d="M755.093336 61.436797a511.973304 511.973304 0 1 0 207.495466 693.650688l-99.615377-53.757197a398.827204 398.827204 0 1 1-161.637286-540.351253l53.757197-99.615378z" fill="#ffffff" p-id="2053"></path><path d="M1204.971593 188.84501L534.652259 736.217612l-285.242269-364.086159 86.304071-67.653615 216.199012 275.953611 583.649567-476.574007 69.335813 84.987568z" fill="#ffffff" p-id="2054"></path></svg> |
| 默认 |
| </span> |
| |
| </div> |
| </div> |
| |
| |
| |
| <header> |
| <div class="wrap"> |
| <a href="https://shardingsphere.apache.org/"><img src="https://shardingsphere.apache.org/document/current/img/logo_v3.png" /></a> |
| |
| |
| |
| |
| |
| <section id="prefooter"> |
| |
| <ul> |
| |
| <li> |
| <a class="padding"> |
| <i class="fa fa-fw fa-language"></i> |
| <div class="select-style"> |
| <select id="select-language" onchange="location = this.value;"> |
| |
| |
| |
| |
| |
| |
| |
| |
| <option id="en" value="/community/en/contribute/release/">English</option> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <option id="cn" value="/community/cn/contribute/release/" selected>简体中文</option> |
| |
| |
| |
| |
| </select> |
| <svg t="1645437162166" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2449" width="32" height="32"><path d="M483.072 714.496l30.165333 30.208 415.957334-415.829333a42.837333 42.837333 0 0 0 0-60.288 42.538667 42.538667 0 0 0-60.330667-0.042667l-355.541333 355.413333-355.242667-355.413333a42.496 42.496 0 0 0-60.288 0 42.837333 42.837333 0 0 0-0.085333 60.330667l383.701333 383.872 1.706667 1.749333z" fill="#3D3D3D" p-id="2450"></path></svg> |
| </div> |
| </a> |
| </li> |
| |
| |
| |
| </ul> |
| </section> |
| |
| </div> |
| </header> |
| <div class="wrap"> |
| <nav id="sidebar" class=""> |
| |
| |
| |
| <div id="header-wrapper"> |
| |
| |
| <div class="searchbox"> |
| <label for="search-by"><i class="fa fa-search"></i></label> |
| <input data-search-input id="search-by" type="text" placeholder="Search..."> |
| <span data-search-clear=""><i class="fa fa-close"></i></span> |
| </div> |
| |
| <script type="text/javascript" src="https://shardingsphere.apache.org/community/js/lunr.min.js?1660280484"></script> |
| <script type="text/javascript" src="https://shardingsphere.apache.org/community/js/auto-complete.js?1660280484"></script> |
| <script type="text/javascript"> |
| |
| var baseurl = "\/cn"; |
| |
| </script> |
| <script type="text/javascript" src="https://shardingsphere.apache.org/community/js/search.js?1660280484"></script> |
| |
| |
| </div> |
| |
| <div class="highlightable"> |
| <div class="leftMenu"> |
| <ul class="topics"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/" title="参与和贡献" class="dd-item |
| parent |
| |
| |
| "> |
| |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/"> |
| <i class="collapse" style="display:inline; font-family:'courier';"> |
| |
| <svg class="icon icon-down" |
| style="display: inline-block;" |
| viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777"> |
| <path d="M500.8 604.778667L267.306667 371.392l-45.226667 45.269333 278.741333 278.613334 278.485334-278.613334-45.248-45.248z" p-id="5376" ></path> |
| </svg> |
| <svg class="icon icon-right" |
| style="display: none;" |
| viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="#777"> |
| <path d="M593.450667 512.128L360.064 278.613333l45.290667-45.226666 278.613333 278.762666L405.333333 790.613333l-45.226666-45.269333z" p-id="5605" ></path> |
| </svg> |
| |
| </i> |
| <b>1. </b>参与和贡献 |
| |
| </a> |
| |
| |
| <ul> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/subscribe/" title="订阅指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/subscribe/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 订阅指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/establish-project/" title="开发环境指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/establish-project/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 开发环境指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/contributor/" title="贡献者指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/contributor/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 贡献者指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/committer/" title="提交者指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/committer/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 提交者指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/code-conduct/" title="开发规范" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/code-conduct/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 开发规范 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/issue-conduct/" title="Issue 提交与处理规范" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/issue-conduct/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| Issue 提交与处理规范 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/document-conduct/" title="文档规范" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/document-conduct/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 文档规范 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/document-contributor/" title="官方文档贡献指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/document-contributor/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 官方文档贡献指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/release/" title="ShardingSphere 发布指南" class="dd-item active"> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/release/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| ShardingSphere 发布指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/release-elasticjob/" title="ElasticJob 发布指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| ElasticJob 发布指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/release-elasticjob-ui/" title="ElasticJob-UI 发布指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob-ui/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| ElasticJob-UI 发布指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/2fa/" title="2FA" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/2fa/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 2FA |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/icla/" title="签署 iCLA 指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/icla/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 签署 iCLA 指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/contribute/vote/" title="提交者选举流程指南" class="dd-item "> |
| <a href="https://shardingsphere.apache.org/community/cn/contribute/vote/"> |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| 提交者选举流程指南 |
| |
| </a> |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| </ul> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/powered-by/" title="采用公司" class="dd-item |
| |
| |
| |
| "> |
| |
| <a href="https://shardingsphere.apache.org/community/cn/powered-by/"> |
| <i class="collapse" style="display:inline; font-family:'courier';"> |
| |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| |
| </i> |
| <b>2. </b>采用公司 |
| |
| </a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/team/" title="团队" class="dd-item |
| |
| |
| |
| "> |
| |
| <a href="https://shardingsphere.apache.org/community/cn/team/"> |
| <i class="collapse" style="display:inline; font-family:'courier';"> |
| |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| |
| </i> |
| <b>3. </b>团队 |
| |
| </a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <li data-nav-id="/cn/security/" title="安全" class="dd-item |
| |
| |
| |
| "> |
| |
| <a href="https://shardingsphere.apache.org/community/cn/security/"> |
| <i class="collapse" style="display:inline; font-family:'courier';"> |
| |
| <svg viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5375" width="20" height="20"></svg> |
| |
| </i> |
| <b>4. </b>安全 |
| |
| </a> |
| |
| |
| </li> |
| |
| |
| |
| |
| |
| </ul> |
| |
| |
| |
| </div> |
| |
| |
| |
| |
| |
| <a class="padding" href="https://shardingsphere.apache.org/pdf/shardingsphere_docs_cn.pdf"> |
| 下载PDF文档 |
| |
| </a> |
| |
| <section id="footer"> |
| <p></p> |
| |
| </section> |
| </div> |
| </nav> |
| |
| |
| |
| |
| |
| <section id="body"> |
| <div id="overlay"></div> |
| <div class="padding highlightable"> |
| |
| <div> |
| <div id="top-bar"> |
| |
| |
| |
| |
| <div id="top-github-link"> |
| <a class="github-link" title='Edit this page' href="https://github.com/apache/shardingsphere/tree/master/docs/community/content/contribute/release.cn.md" target="blank"> |
| <i class="fa fa-code-fork"></i> |
| <span id="top-github-link-text">Edit this page</span> |
| </a> |
| </div> |
| |
| |
| |
| <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"> |
| <span id="sidebar-toggle-span"> |
| <a href="#" id="sidebar-toggle" data-sidebar-toggle=""> |
| <i class="fa fa-bars"></i> |
| </a> |
| </span> |
| |
| <span class="links"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <a href='https://shardingsphere.apache.org/community/cn/'>ShardingSphere</a> > <a href='https://shardingsphere.apache.org/community/cn/contribute/'>参与和贡献</a> > ShardingSphere 发布指南 |
| |
| |
| |
| |
| |
| |
| </span> |
| </div> |
| |
| </div> |
| </div> |
| |
| |
| |
| <div id="chapter"> |
| |
| <div id="body-inner"> |
| |
| |
| |
| |
| |
| <nav id="TableOfContents"> |
| <ul> |
| <li><a href="#发布前准备工作">发布前准备工作</a> |
| <ul> |
| <li><a href="#1-确认-release-note">1. 确认 Release Note</a></li> |
| <li><a href="#2-确认-issue-列表">2. 确认 Issue 列表</a></li> |
| <li><a href="#3-确认-pull-request-列表">3. 确认 Pull request 列表</a></li> |
| <li><a href="#4-关闭-milestone">4. 关闭 Milestone</a></li> |
| <li><a href="#5-发送讨论邮件">5. 发送讨论邮件</a></li> |
| </ul> |
| </li> |
| <li><a href="#gpg-设置">GPG 设置</a> |
| <ul> |
| <li><a href="#1-安装-gpg">1. 安装 GPG</a></li> |
| <li><a href="#2-创建-key">2. 创建 key</a></li> |
| <li><a href="#3-查看生成的-key">3. 查看生成的 key</a></li> |
| <li><a href="#4-将公钥同步到服务器">4. 将公钥同步到服务器</a></li> |
| </ul> |
| </li> |
| <li><a href="#准备发布分支">准备发布分支</a> |
| <ul> |
| <li><a href="#1-创建发布分支">1. 创建发布分支</a></li> |
| <li><a href="#2-更新版本说明和示例版本">2. 更新版本说明和示例版本</a></li> |
| <li><a href="#3-更新下载页面">3. 更新下载页面</a></li> |
| <li><a href="#4-更新-shardingsphere-jdbc-spring-文档中-xsd-文件链接">4. 更新 ShardingSphere-JDBC Spring 文档中 xsd 文件链接</a></li> |
| <li><a href="#5-修改-readme-文件">5. 修改 README 文件</a></li> |
| <li><a href="#6-更新-helm-chart-版本">6. 更新 Helm Chart 版本</a></li> |
| </ul> |
| </li> |
| <li><a href="#发布-apache-maven-中央仓库">发布 Apache Maven 中央仓库</a> |
| <ul> |
| <li><a href="#1-设置-settingsxml-文件">1. 设置 settings.xml 文件</a></li> |
| <li><a href="#2-发布预校验">2. 发布预校验</a></li> |
| <li><a href="#3-准备发布">3. 准备发布</a></li> |
| <li><a href="#4-部署发布">4. 部署发布</a></li> |
| </ul> |
| </li> |
| <li><a href="#构建-helm-chart">构建 Helm Chart</a></li> |
| <li><a href="#发布-apache-svn-仓库">发布 Apache SVN 仓库</a> |
| <ul> |
| <li><a href="#1-检出-shardingsphere-发布目录">1. 检出 ShardingSphere 发布目录</a></li> |
| <li><a href="#2-添加-gpg-公钥">2. 添加 gpg 公钥</a></li> |
| <li><a href="#3-将待发布的内容添加至-svn-目录">3. 将待发布的内容添加至 SVN 目录</a></li> |
| <li><a href="#4-提交-apache-svn">4. 提交 Apache SVN</a></li> |
| </ul> |
| </li> |
| <li><a href="#检查发布结果">检查发布结果</a> |
| <ul> |
| <li><a href="#1-检查-sha512-哈希">1. 检查 sha512 哈希</a></li> |
| <li><a href="#2-检查-gpg-签名">2. 检查 gpg 签名</a></li> |
| <li><a href="#3-检查发布文件内容">3. 检查发布文件内容</a></li> |
| </ul> |
| </li> |
| <li><a href="#发起投票">发起投票</a></li> |
| <li><a href="#完成发布">完成发布</a> |
| <ul> |
| <li><a href="#1-将源码二进制包以及-keys-从-svn-的-dev-目录移动到-release-目录">1. 将源码、二进制包以及 KEYS 从 svn 的 dev 目录移动到 release 目录</a></li> |
| <li><a href="#2-在-apache-staging-仓库找到-shardingsphere-并点击-release">2. 在 Apache Staging 仓库找到 ShardingSphere 并点击 <code>Release</code></a></li> |
| <li><a href="#3-发布-docker">3. 发布 Docker</a></li> |
| <li><a href="#4-github版本发布">4. GitHub版本发布</a></li> |
| <li><a href="#5-从发布区移除上一版本内容">5. 从发布区移除上一版本内容</a></li> |
| <li><a href="#6-上传-spring-namespace-xsd-文件至官方网站">6. 上传 Spring namespace xsd 文件至官方网站</a></li> |
| <li><a href="#7-官网首页增加发布版本文档入口">7. 官网首页增加发布版本文档入口</a></li> |
| <li><a href="#8-合并-github-的-release-分支到-master合并完成后删除-release-分支">8. 合并 GitHub 的 release 分支到 <code>master</code>,合并完成后删除 release 分支</a></li> |
| <li><a href="#9-生成-helm-chart-索引文件并上传">9. 生成 Helm Chart 索引文件并上传</a></li> |
| <li><a href="#10-邮件通知版本发布完成">10. 邮件通知版本发布完成</a></li> |
| </ul> |
| </li> |
| <li><a href="#附录如何中止发布流程">附录:如何中止发布流程</a> |
| <ul> |
| <li><a href="#在投票邮件回复--1-并说明中止原因">在投票邮件回复 -1 并说明中止原因</a></li> |
| <li><a href="#从-dev-区域移除-release-candidates">从 dev 区域移除 release candidates</a></li> |
| <li><a href="#drop-maven-staging-repository">Drop Maven Staging Repository</a></li> |
| <li><a href="#reset-发布分支并删除-tag">Reset 发布分支并删除 tag</a></li> |
| </ul> |
| </li> |
| </ul> |
| </nav> |
| |
| <h2 id="发布前准备工作">发布前准备工作</h2> |
| <h3 id="1-确认-release-note">1. 确认 Release Note</h3> |
| <p>Release Note 需提供中文/英文两种版本,确认中文描述是否明确,英文翻译是否准确,并按以下标签进行分类:</p> |
| <ol> |
| <li>新功能。</li> |
| <li>API 变更。</li> |
| <li>功能增强。</li> |
| <li>重构。</li> |
| <li>漏洞修复。</li> |
| </ol> |
| <h3 id="2-确认-issue-列表">2. 确认 Issue 列表</h3> |
| <p>打开 <a href="https://github.com/apache/shardingsphere/issues">Github Issues</a> ,过滤 Milestone 为 <code>${RELEASE.VERSION}</code> 且状态为打开的 Issue:</p> |
| <ol> |
| <li>关闭已完成的 Issue;</li> |
| <li>未完成的 Issue 与负责人进行沟通,如果不影响本次发版,修改 Milestone 为下一个版本;</li> |
| <li>确认发布版本的 Milestone 下没有打开状态的 Issue。</li> |
| </ol> |
| <h3 id="3-确认-pull-request-列表">3. 确认 Pull request 列表</h3> |
| <p>打开 <a href="https://github.com/apache/shardingsphere/pulls">Github Pull requests</a> ,过滤 Milestone 为 <code>${RELEASE.VERSION}</code> 且状态为打开的 Pull request:</p> |
| <ol> |
| <li>对打开的 Pull request 进行 Review 并且 Merge;</li> |
| <li>无法 Merge 且不影响本次发版的 Pull request,修改 Milestone 为下一个版本;</li> |
| <li>确认发布版本的 Milestone 下没有打开状态的 Pull request。</li> |
| </ol> |
| <h3 id="4-关闭-milestone">4. 关闭 Milestone</h3> |
| <p>打开 <a href="https://github.com/apache/shardingsphere/milestones">Github Milestone</a></p> |
| <ol> |
| <li>确认 <code>${RELEASE.VERSION}</code> 的 Milestone 完成状态为 100%;</li> |
| <li>点击 <code>Close</code> 关闭 Milestone。</li> |
| </ol> |
| <h3 id="5-发送讨论邮件">5. 发送讨论邮件</h3> |
| <ol> |
| <li>创建 <a href="https://github.com/apache/shardingsphere/discussions">GitHub Discussion</a> 并在讨论内容中列出 Release Note;</li> |
| <li>发送邮件至 <a href="mailto:dev@shardingsphere.apache.org">dev@shardingsphere.apache.org</a>,在邮件正文中链接 GitHub Discussion;</li> |
| <li>关注邮件列表,确认社区开发者对 Release Note 没有任何疑问。</li> |
| </ol> |
| <h2 id="gpg-设置">GPG 设置</h2> |
| <h3 id="1-安装-gpg">1. 安装 GPG</h3> |
| <p>在 <a href="https://www.gnupg.org/download/index.html">GnuPG 官网</a>下载安装包。 |
| GnuPG 的 1.x 版本和 2.x 版本的命令有细微差别,下列说明以 <code>GnuPG-2.1.23</code> 版本为例。</p> |
| <p>安装完成后,执行以下命令查看版本号。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --version |
| </code></pre></div><h3 id="2-创建-key">2. 创建 key</h3> |
| <p>安装完成后,执行以下命令创建 key。</p> |
| <p><code>GnuPG-2.x</code> 可使用:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --full-gen-key |
| </code></pre></div><p><code>GnuPG-1.x</code> 可使用:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --gen-key |
| </code></pre></div><p>根据提示完成 key:</p> |
| <blockquote> |
| <p>注意:请使用 Apache mail 生成 GPG 的 Key。</p> |
| </blockquote> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg <span style="color:#f92672">(</span>GnuPG<span style="color:#f92672">)</span> 2.0.12; Copyright <span style="color:#f92672">(</span>C<span style="color:#f92672">)</span> <span style="color:#ae81ff">2009</span> Free Software Foundation, Inc. |
| This is free software: you are free to change and redistribute it. |
| There is NO WARRANTY, to the extent permitted by law. |
| |
| Please <span style="color:#66d9ef">select</span> what kind of key you want: |
| <span style="color:#f92672">(</span>1<span style="color:#f92672">)</span> RSA and RSA <span style="color:#f92672">(</span>default<span style="color:#f92672">)</span> |
| <span style="color:#f92672">(</span>2<span style="color:#f92672">)</span> DSA and Elgamal |
| <span style="color:#f92672">(</span>3<span style="color:#f92672">)</span> DSA <span style="color:#f92672">(</span>sign only<span style="color:#f92672">)</span> |
| <span style="color:#f92672">(</span>4<span style="color:#f92672">)</span> RSA <span style="color:#f92672">(</span>sign only<span style="color:#f92672">)</span> |
| Your selection? <span style="color:#ae81ff">1</span> |
| RSA keys may be between <span style="color:#ae81ff">1024</span> and <span style="color:#ae81ff">4096</span> bits long. |
| What keysize <span style="color:#66d9ef">do</span> you want? <span style="color:#f92672">(</span>2048<span style="color:#f92672">)</span> <span style="color:#ae81ff">4096</span> |
| Requested keysize is <span style="color:#ae81ff">4096</span> bits |
| Please specify how long the key should be valid. |
| 0 <span style="color:#f92672">=</span> key does not expire |
| <n> <span style="color:#f92672">=</span> key expires in n days |
| <n>w <span style="color:#f92672">=</span> key expires in n weeks |
| <n>m <span style="color:#f92672">=</span> key expires in n months |
| <n>y <span style="color:#f92672">=</span> key expires in n years |
| Key is valid <span style="color:#66d9ef">for</span>? <span style="color:#f92672">(</span>0<span style="color:#f92672">)</span> |
| Key does not expire at all |
| Is this correct? <span style="color:#f92672">(</span>y/N<span style="color:#f92672">)</span> y |
| |
| GnuPG needs to construct a user ID to identify your key. |
| |
| Real name: <span style="color:#e6db74">${</span>输入用户名<span style="color:#e6db74">}</span> |
| Email address: <span style="color:#e6db74">${</span>输入邮件地址<span style="color:#e6db74">}</span> |
| Comment: <span style="color:#e6db74">${</span>输入注释<span style="color:#e6db74">}</span> |
| You selected this USER-ID: |
| <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>输入的用户名<span style="color:#e6db74">}</span><span style="color:#e6db74"> (</span><span style="color:#e6db74">${</span>输入的注释<span style="color:#e6db74">}</span><span style="color:#e6db74">) <</span><span style="color:#e6db74">${</span>输入的邮件地址<span style="color:#e6db74">}</span><span style="color:#e6db74">>"</span> |
| |
| Change <span style="color:#f92672">(</span>N<span style="color:#f92672">)</span>ame, <span style="color:#f92672">(</span>C<span style="color:#f92672">)</span>omment, <span style="color:#f92672">(</span>E<span style="color:#f92672">)</span>mail or <span style="color:#f92672">(</span>O<span style="color:#f92672">)</span>kay/<span style="color:#f92672">(</span>Q<span style="color:#f92672">)</span>uit? O |
| You need a Passphrase to protect your secret key. <span style="color:#75715e"># 输入密码</span> |
| </code></pre></div><h3 id="3-查看生成的-key">3. 查看生成的 key</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --list-keys |
| </code></pre></div><p>执行结果:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">pub 4096R/700E6065 2019-03-20 |
| uid <span style="color:#e6db74">${</span>用户名<span style="color:#e6db74">}</span> <span style="color:#f92672">(</span><span style="color:#e6db74">${</span>注释<span style="color:#e6db74">}</span><span style="color:#f92672">)</span> <<span style="color:#f92672">{</span>邮件地址<span style="color:#f92672">}</span>> |
| sub 4096R/0B7EF5B2 2019-03-20 |
| </code></pre></div><p>其中 700E6065 为公钥 ID。</p> |
| <h3 id="4-将公钥同步到服务器">4. 将公钥同步到服务器</h3> |
| <p>命令如下:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --keyserver hkp://keyserver.ubuntu.com --send-key 700E6065 |
| </code></pre></div><p><code>keyserver.ubuntu.com</code> 为随意挑选的公钥服务器,每个服务器之间是自动同步的,选任意一个即可。</p> |
| <h2 id="准备发布分支">准备发布分支</h2> |
| <h3 id="1-创建发布分支">1. 创建发布分支</h3> |
| <p>假设从 Github 下载的 ShardingSphere 源代码在 <code>~/shardingsphere/</code> 目录;假设即将发布的版本为 <code>${RELEASE.VERSION}</code>。 |
| 创建 <code>${RELEASE.VERSION}-release</code> 分支,接下来的操作都在该分支进行。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell"><span style="color:#75715e">## ${name} 为源码所在分支,如:master,dev-4.x</span> |
| git clone --branch <span style="color:#e6db74">${</span>name<span style="color:#e6db74">}</span> https://github.com/apache/shardingsphere.git ~/shardingsphere |
| cd ~/shardingsphere/ |
| git pull |
| git checkout -b <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release |
| git push origin <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release |
| </code></pre></div><h3 id="2-更新版本说明和示例版本">2. 更新版本说明和示例版本</h3> |
| <p>在发布分支上更新如下文件,并提交 PR 到发布分支:</p> |
| <pre><code>https://github.com/apache/shardingsphere/blob/${RELEASE.VERSION}-release/RELEASE-NOTES.md |
| </code></pre><p>更新 <code>examples</code> 模块的 pom,将版本由 <code>${CURRENT.VERSION}</code> 替换为 <code>${RELEASE.VERSION}</code>,并提交 PR 到发布分支。</p> |
| <h3 id="3-更新下载页面">3. 更新下载页面</h3> |
| <p>更新如下页面:</p> |
| <ul> |
| <li><a href="https://shardingsphere.apache.org/document/current/en/downloads/">https://shardingsphere.apache.org/document/current/en/downloads/</a></li> |
| <li><a href="https://shardingsphere.apache.org/document/current/cn/downloads/">https://shardingsphere.apache.org/document/current/cn/downloads/</a></li> |
| </ul> |
| <p>GPG 签名文件和哈希校验文件的下载连接应该使用这个前缀:<code>https://downloads.apache.org/shardingsphere/</code>。</p> |
| <h3 id="4-更新-shardingsphere-jdbc-spring-文档中-xsd-文件链接">4. 更新 ShardingSphere-JDBC Spring 文档中 xsd 文件链接</h3> |
| <p>更新目录 <code>docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace</code> 下文档内的所有 xsd 链接。</p> |
| <p>将:</p> |
| <pre><code>http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding-${PREVIOUS.RELEASE.VERSION}.xsd |
| </code></pre><p>更新为:</p> |
| <pre><code>http://shardingsphere.apache.org/schema/shardingsphere/sharding/sharding-${RELEASE.VERSION}.xsd |
| </code></pre><p>参考命令:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">cd docs/document/content/user-manual/shardingsphere-jdbc/spring-namespace |
| grep -l -r <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>PREVIOUS.RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> . | xargs sed -i -e <span style="color:#e6db74">"s/</span><span style="color:#e6db74">${</span>PREVIOUS.RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">/</span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">/g"</span> |
| </code></pre></div><p>在文档中指定 xsd 版本,而不是直接使用 <code>sharding.xsd</code>,是为了让历史版本的文档能够对应到正确版本的 xsd 文件。</p> |
| <h3 id="5-修改-readme-文件">5. 修改 README 文件</h3> |
| <p>将 <code>README.md</code> 和 <code>README_ZH.md</code> 里的 <code>${PREVIOUS.RELEASE.VERSION}</code> 修改为 <code>${RELEASE.VERSION}</code>。</p> |
| <h3 id="6-更新-helm-chart-版本">6. 更新 Helm Chart 版本</h3> |
| <p>Helm Chart 可以部署不同版本的 ShardingSphere-Proxy,版本号独立于 ShardingSphere 版本。 |
| 修改文件 <code>shardingsphere-charts/apache-shardingsphere-proxy/Chart.yaml</code> 中的 <code>version</code>。</p> |
| <h2 id="发布-apache-maven-中央仓库">发布 Apache Maven 中央仓库</h2> |
| <h3 id="1-设置-settingsxml-文件">1. 设置 settings.xml 文件</h3> |
| <p>将以下模板添加到 <code>~/.m2/settings.xml</code> 中,所有密码需要加密后再填入。 |
| 加密设置可参考<a href="http://maven.apache.org/guides/mini/guide-encryption.html">这里</a>。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672"><settings></span> |
| <span style="color:#f92672"><servers></span> |
| <span style="color:#f92672"><server></span> |
| <span style="color:#f92672"><id></span>apache.snapshots.https<span style="color:#f92672"></id></span> |
| <span style="color:#f92672"><username></span> <span style="color:#75715e"><!-- APACHE LDAP 用户名 --></span> <span style="color:#f92672"></username></span> |
| <span style="color:#f92672"><password></span> <span style="color:#75715e"><!-- APACHE LDAP 加密后的密码 --></span> <span style="color:#f92672"></password></span> |
| <span style="color:#f92672"></server></span> |
| <span style="color:#f92672"><server></span> |
| <span style="color:#f92672"><id></span>apache.releases.https<span style="color:#f92672"></id></span> |
| <span style="color:#f92672"><username></span> <span style="color:#75715e"><!-- APACHE LDAP 用户名 --></span> <span style="color:#f92672"></username></span> |
| <span style="color:#f92672"><password></span> <span style="color:#75715e"><!-- APACHE LDAP 加密后的密码 --></span> <span style="color:#f92672"></password></span> |
| <span style="color:#f92672"></server></span> |
| <span style="color:#f92672"></servers></span> |
| <span style="color:#f92672"></settings></span> |
| </code></pre></div><h3 id="2-发布预校验">2. 发布预校验</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:prepare -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">"-DskipTests -Dspotless.apply.skip=true"</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -DdryRun<span style="color:#f92672">=</span>true -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github用户名<span style="color:#e6db74">}</span> |
| </code></pre></div><p>-Prelease:选择 release 的 profile,这个 profile 会打包所有源码、jar 文件以及 ShardingSphere-Proxy 的可执行二进制包。</p> |
| <p>-DautoVersionSubmodules=true:作用是发布过程中版本号只需要输入一次,不必为每个子模块都输入一次。</p> |
| <p>-DdryRun=true:演练,即不产生版本号提交,不生成新的 tag。</p> |
| <h3 id="3-准备发布">3. 准备发布</h3> |
| <p>首先清理发布预校验本地信息。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:clean |
| </code></pre></div><div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:prepare -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">"-DskipTests -Dspotless.apply.skip=true"</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -DpushChanges<span style="color:#f92672">=</span>false -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github 用户名<span style="color:#e6db74">}</span> |
| </code></pre></div><p>和上一步演练的命令基本相同,去掉了 -DdryRun=true 参数。</p> |
| <p>-DpushChanges=false:不要将修改后的版本号和 tag 自动提交至 Github。</p> |
| <p><strong>按照 <a href="#%E6%A3%80%E6%9F%A5%E5%8F%91%E5%B8%83%E7%BB%93%E6%9E%9C">检查发布结果</a> 步骤,将本地文件检查无误后</strong>,提交至 Github。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git push origin <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release |
| git push origin --tags |
| </code></pre></div><h3 id="4-部署发布">4. 部署发布</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mvn release:perform -Prelease -Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">"-DskipTests -Dspotless.apply.skip=true"</span> -DautoVersionSubmodules<span style="color:#f92672">=</span>true -Dusername<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>Github 用户名<span style="color:#e6db74">}</span> |
| </code></pre></div><p>执行完该命令后,待发布版本会自动上传到 Apache 的临时筹备仓库 (staging repository)。 |
| 访问 <a href="https://repository.apache.org/#stagingRepositories">https://repository.apache.org/#stagingRepositories</a>,使用 Apache 的 LDAP 账户登录后,就会看到上传的版本,<code>Repository</code> 列的内容即为 ${STAGING.REPOSITORY}。 |
| 点击 <code>Close</code> 来告诉 Nexus 这个构建已经完成,只有这样该版本才是可用的。 |
| 如果电子签名等出现问题,<code>Close</code> 会失败,可以通过 <code>Activity</code> 查看失败信息。</p> |
| <h2 id="构建-helm-chart">构建 Helm Chart</h2> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">cd shardingsphere-charts/apache-shardingsphere-proxy/charts/governance |
| helm dep build |
| cd ../.. |
| helm dep build |
| cd .. |
| helm package apache-shardingsphere-proxy |
| mv apache-shardingsphere-proxy-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz |
| gpg --armor --detach-sign apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz |
| shasum -b -a <span style="color:#ae81ff">512</span> apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz > apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz.sha512 |
| </code></pre></div><h2 id="发布-apache-svn-仓库">发布 Apache SVN 仓库</h2> |
| <h3 id="1-检出-shardingsphere-发布目录">1. 检出 ShardingSphere 发布目录</h3> |
| <p>如无本地工作目录,则先创建本地工作目录。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir -p ~/ss_svn/dev/ |
| cd ~/ss_svn/dev/ |
| </code></pre></div><p>创建完毕后,从 Apache SVN 检出 ShardingSphere 发布目录。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn --username<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>APACHE LDAP 用户名<span style="color:#e6db74">}</span> co https://dist.apache.org/repos/dist/dev/shardingsphere |
| cd ~/ss_svn/dev/shardingsphere |
| </code></pre></div><h3 id="2-添加-gpg-公钥">2. 添加 gpg 公钥</h3> |
| <p>仅第一次部署的账号需要添加,只要 <code>KEYS</code> 中包含已经部署过的账户的公钥即可。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg -a --export <span style="color:#e6db74">${</span>GPG用户名<span style="color:#e6db74">}</span> >> KEYS |
| </code></pre></div><h3 id="3-将待发布的内容添加至-svn-目录">3. 将待发布的内容添加至 SVN 目录</h3> |
| <p>创建版本号目录。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir -p ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| cd ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| </code></pre></div><p>将源码包、二进制包和 ShardingSphere-Proxy 可执行二进制包添加至 SVN 工作目录。</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-src-distribution/target/*.zip* ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-jdbc-distribution/target/*.tar.gz* ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| cp -f ~/shardingsphere/shardingsphere-distribution/shardingsphere-proxy-distribution/target/*.tar.gz* ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| cp -f ~/shardingsphere/shardingsphere-agent/shardingsphere-agent-distribution/target/*.tar.gz* ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| cp -f ~/shardingsphere/shardingsphere-charts/*.tgz* ~/ss_svn/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| </code></pre></div><h3 id="4-提交-apache-svn">4. 提交 Apache SVN</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn add * |
| svn --username<span style="color:#f92672">=</span><span style="color:#e6db74">${</span>APACHE LDAP 用户名<span style="color:#e6db74">}</span> commit -m <span style="color:#e6db74">"release </span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| </code></pre></div><h2 id="检查发布结果">检查发布结果</h2> |
| <h3 id="1-检查-sha512-哈希">1. 检查 sha512 哈希</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">shasum -c *.sha512 |
| </code></pre></div><h3 id="2-检查-gpg-签名">2. 检查 gpg 签名</h3> |
| <p>首先导入发布人公钥。从 svn 仓库导入 KEYS 到本地环境。(发布版本的人不需要再导入,帮助做验证的人需要导入,用户名填发版人的即可)</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">curl https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS >> KEYS |
| gpg --import KEYS |
| gpg --edit-key <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>发布人的 gpg 用户名<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| > trust |
| |
| Please decide how far you trust this user to correctly verify other users<span style="color:#e6db74">' keys |
| </span><span style="color:#e6db74">(by looking at passports, checking fingerprints from different sources, etc.) |
| </span><span style="color:#e6db74"> |
| </span><span style="color:#e6db74"> 1 = I don'</span>t know or won<span style="color:#960050;background-color:#1e0010">'</span>t say |
| 2 <span style="color:#f92672">=</span> I <span style="color:#66d9ef">do</span> NOT trust |
| 3 <span style="color:#f92672">=</span> I trust marginally |
| 4 <span style="color:#f92672">=</span> I trust fully |
| 5 <span style="color:#f92672">=</span> I trust ultimately |
| m <span style="color:#f92672">=</span> back to the main menu |
| |
| Your decision? <span style="color:#ae81ff">5</span> |
| |
| > save |
| </code></pre></div><p>然后进行 gpg 签名检查。</p> |
| <p>Bash 可以使用以下命令检查签名:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#66d9ef">for</span> each in <span style="color:#66d9ef">$(</span>ls *.asc<span style="color:#66d9ef">)</span>; <span style="color:#66d9ef">do</span> gpg --verify $each <span style="color:#e6db74">${</span>each%.asc<span style="color:#e6db74">}</span>; <span style="color:#66d9ef">done</span> |
| </code></pre></div><p>或逐个文件检查:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">gpg --verify apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip.asc apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-src.zip |
| gpg --verify apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-jdbc-bin.tar.gz.asc apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-jdbc-bin.tar.gz |
| gpg --verify apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-proxy-bin.tar.gz.asc apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-proxy-bin.tar.gz |
| gpg --verify apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-agent-bin.tar.gz.asc apache-shardingsphere-<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-shardingsphere-agent-bin.tar.gz |
| gpg --verify apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz.asc apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz |
| </code></pre></div><h3 id="3-检查发布文件内容">3. 检查发布文件内容</h3> |
| <p><strong>3.1 对比源码包与 Github 上 tag 的内容差异</strong></p> |
| <pre><code>curl -Lo tag-${RELEASE.VERSION}.zip https://github.com/apache/shardingsphere/archive/${RELEASE.VERSION}.zip |
| unzip tag-${RELEASE.VERSION}.zip |
| unzip apache-shardingsphere-${RELEASE.VERSION}-src.zip |
| diff -r apache-shardingsphere-${RELEASE.VERSION}-src-release shardingsphere-${RELEASE.VERSION} |
| </code></pre><p><strong>3.2 检查源码包的文件内容</strong></p> |
| <ul> |
| <li>检查源码包是否包含由于包含不必要文件,致使 tarball 过于庞大;</li> |
| <li>存在 <code>LICENSE</code> 和 <code>NOTICE</code> 文件;</li> |
| <li><code>NOTICE</code> 文件中的年份正确;</li> |
| <li>只存在文本文件,不存在二进制文件;</li> |
| <li>所有文件的开头都有 ASF 许可证;</li> |
| <li>能够正确编译,单元测试可以通过(./mvnw -T 1C install);</li> |
| <li>检查是否有多余文件或文件夹,例如空文件夹等。</li> |
| </ul> |
| <p><strong>3.3 检查二进制包的文件内容</strong></p> |
| <p>解压缩</p> |
| <ul> |
| <li><code>apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-jdbc-bin.tar.gz</code></li> |
| <li><code>apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-proxy-bin.tar.gz</code></li> |
| <li><code>apache-shardingsphere-${RELEASE.VERSION}-shardingsphere-agent-bin.tar.gz</code></li> |
| </ul> |
| <p>进行如下检查:</p> |
| <ul> |
| <li>存在 <code>LICENSE</code> 和 <code>NOTICE</code> 文件;</li> |
| <li><code>NOTICE</code> 文件中的年份正确;</li> |
| <li>所有文本文件开头都有 ASF 许可证;</li> |
| <li>检查第三方依赖许可证: |
| <ul> |
| <li>第三方依赖的许可证兼容;</li> |
| <li>所有第三方依赖的许可证都在 <code>LICENSE</code> 文件中声明;</li> |
| <li>依赖许可证的完整版全部在 <code>license</code> 目录;</li> |
| <li>如果依赖的是 Apache 许可证并且存在 <code>NOTICE</code> 文件,那么这些 <code>NOTICE</code> 文件也需要加入到版本的 <code>NOTICE</code> 文件中。</li> |
| </ul> |
| </li> |
| </ul> |
| <p><strong>3.4 检查 Helm Chart 制品包内容</strong></p> |
| <p>解压缩 <code>apache-shardingsphere-proxy-chart-${CHART.RELEASE.VERSION}.tgz</code></p> |
| <p>进行如下检查:</p> |
| <ul> |
| <li>存在 <code>LICENSE</code> 和 <code>NOTICE</code> 文件;</li> |
| <li><code>NOTICE</code> 文件中的年份正确;</li> |
| <li>文本文件开头都有 ASF 许可证,以下文件或目录除外: |
| <ul> |
| <li>所有 Chart.yaml</li> |
| <li>所有 Chart.lock</li> |
| <li>charts/governance/charts 目录</li> |
| <li>charts/common 目录</li> |
| </ul> |
| </li> |
| </ul> |
| <h2 id="发起投票">发起投票</h2> |
| <p><strong>投票阶段</strong></p> |
| <ol> |
| <li> |
| <p>ShardingSphere 社区投票,发起投票邮件到 <code>dev@shardingsphere.apache.org</code>。PMC 需要先按照文档检查版本的正确性,然后再进行投票。 |
| 经过至少 <strong>72 小时</strong> 并统计到 <strong>3 个 <code>+1 PMC member</code></strong> 票后,即可进入下一阶段的投票。</p> |
| </li> |
| <li> |
| <p>宣布投票结果,发起投票结果邮件到 <a href="mailto:dev@shardingsphere.apache.org">dev@shardingsphere.apache.org</a>。</p> |
| </li> |
| </ol> |
| <p><strong>投票模板</strong></p> |
| <ol> |
| <li>ShardingSphere 社区投票模板</li> |
| </ol> |
| <p>标题:</p> |
| <pre><code>[VOTE] Release Apache ShardingSphere ${RELEASE.VERSION} |
| </code></pre><p>正文:</p> |
| <pre><code>Hello ShardingSphere Community, |
| |
| This is a call for vote to release Apache ShardingSphere version ${RELEASE.VERSION} |
| |
| Release notes: |
| https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md |
| |
| The release candidates: |
| https://dist.apache.org/repos/dist/dev/shardingsphere/${RELEASE.VERSION}/ |
| |
| Maven 2 staging repository: |
| https://repository.apache.org/content/repositories/${STAGING.REPOSITORY}/org/apache/shardingsphere/ |
| |
| Git tag for the release: |
| https://github.com/apache/shardingsphere/tree/${RELEASE.VERSION}/ |
| |
| Release Commit ID: |
| https://github.com/apache/shardingsphere/commit/xxxxxxxxxxxxxxxxxxxxxxx |
| |
| Keys to verify the Release Candidate: |
| https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS |
| |
| Look at here for how to verify this release candidate: |
| https://shardingsphere.apache.org/community/en/contribute/release/ |
| |
| GPG user ID: |
| ${YOUR.GPG.USER.ID} |
| |
| The vote will be open for at least 72 hours or until necessary number of votes are reached. |
| |
| Please vote accordingly: |
| |
| [ ] +1 approve |
| |
| [ ] +0 no opinion |
| |
| [ ] -1 disapprove with the reason |
| |
| PMC vote is +1 binding, all others is +1 non-binding. |
| |
| Checklist for reference: |
| |
| [ ] Download links are valid. |
| |
| [ ] Checksums and PGP signatures are valid. |
| |
| [ ] Source code distributions have correct names matching the current release. |
| |
| [ ] LICENSE and NOTICE files are correct for each ShardingSphere repo. |
| |
| [ ] All files have license headers if necessary. |
| |
| [ ] No compiled archives bundled in source archive. |
| </code></pre><ol start="2"> |
| <li>宣布投票结果模板:</li> |
| </ol> |
| <p>标题:</p> |
| <pre><code>[RESULT][VOTE] Release Apache ShardingSphere ${RELEASE.VERSION} |
| </code></pre><p>正文:</p> |
| <pre><code>We’ve received 3 +1 binding votes and one +1 non-binding vote: |
| |
| +1 binding, xxx |
| +1 binding, xxx |
| +1 binding, xxx |
| |
| +1 non-binding, xxx |
| |
| Thank you everyone for taking the time to review the release and help us. |
| I will process to publish the release and send ANNOUNCE. |
| </code></pre><h2 id="完成发布">完成发布</h2> |
| <h3 id="1-将源码二进制包以及-keys-从-svn-的-dev-目录移动到-release-目录">1. 将源码、二进制包以及 KEYS 从 svn 的 dev 目录移动到 release 目录</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn mv https://dist.apache.org/repos/dist/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> https://dist.apache.org/repos/dist/release/shardingsphere/ -m <span style="color:#e6db74">"transfer packages for </span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| svn delete https://dist.apache.org/repos/dist/release/shardingsphere/KEYS -m <span style="color:#e6db74">"delete KEYS"</span> |
| svn cp https://dist.apache.org/repos/dist/dev/shardingsphere/KEYS https://dist.apache.org/repos/dist/release/shardingsphere/ -m <span style="color:#e6db74">"transfer KEYS for </span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| </code></pre></div><h3 id="2-在-apache-staging-仓库找到-shardingsphere-并点击-release">2. 在 Apache Staging 仓库找到 ShardingSphere 并点击 <code>Release</code></h3> |
| <h3 id="3-发布-docker">3. 发布 Docker</h3> |
| <p>3.1 准备工作</p> |
| <p>本地安装 Docker,并启动服务。</p> |
| <p>(如果使用 Docker Desktop,可以跳过该步骤)配置 QEMU:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">docker run --privileged --rm tonistiigi/binfmt --install all |
| </code></pre></div><p>参考文档:<a href="https://docs.docker.com/buildx/working-with-buildx/#build-multi-platform-images">Docker Buildx: Build multi-platform images</a></p> |
| <p>3.2 登录 Docker Registry</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">docker login |
| </code></pre></div><p>3.3 构建并推送 ShardingSphere-Proxy Docker image</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git checkout <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| ./mvnw -pl shardingsphere-distribution/shardingsphere-proxy-distribution -B -Prelease,docker.buildx.push clean package |
| </code></pre></div><p>3.4 确认发布成功</p> |
| <p>查看 <a href="https://hub.docker.com/r/apache/shardingsphere-proxy/">Docker Hub</a> 是否有发布的镜像,确保镜像同时支持 <code>linux/amd64</code> 和 <code>linux/arm64</code>。</p> |
| <h3 id="4-github版本发布">4. GitHub版本发布</h3> |
| <p>在 <a href="https://github.com/apache/shardingsphere/releases">GitHub Releases</a> 页面的 <code>${RELEASE.VERSION}</code> 版本上点击 <code>Edit</code>。</p> |
| <p>编辑版本号及版本说明,并点击 <code>Publish release</code>。</p> |
| <h3 id="5-从发布区移除上一版本内容">5. 从发布区移除上一版本内容</h3> |
| <p><a href="https://dist.apache.org/repos/dist/release/shardingsphere/"><strong>发布区</strong></a> 中仅保留一个最新的版本。 |
| 确认 <a href="https://archive.apache.org/dist/shardingsphere/">Archive repository</a> 中存在上一版本后,从 <a href="https://dist.apache.org/repos/dist/release/shardingsphere/"><strong>发布区</strong></a> 删除上一版本:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn del -m <span style="color:#e6db74">"Archiving release </span><span style="color:#e6db74">${</span>PREVIOUS.RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> https://dist.apache.org/repos/dist/release/shardingsphere/<span style="color:#e6db74">${</span>PREVIOUS.RELEASE.VERSION<span style="color:#e6db74">}</span> |
| </code></pre></div><p>历史版本会自动归档到 <a href="https://archive.apache.org/dist/shardingsphere/">Archive repository</a>。</p> |
| <p>孵化阶段历史版本会自动归档到 <a href="https://archive.apache.org/dist/incubator/shardingsphere/">Incubator Archive repository</a>。</p> |
| <p>参考:<a href="https://infra.apache.org/release-download-pages.html">Release Download Pages for Projects</a>。</p> |
| <h3 id="6-上传-spring-namespace-xsd-文件至官方网站">6. 上传 Spring namespace xsd 文件至官方网站</h3> |
| <p>提交 pull request 将源码中的 xsd 文件以及发布版本的 xsd 文件上传至 <a href="https://github.com/apache/shardingsphere-doc/tree/asf-site/schema/shardingsphere">https://github.com/apache/shardingsphere-doc/tree/asf-site/schema/shardingsphere</a></p> |
| <p>应上传的文件列表如下:</p> |
| <ul> |
| <li>datasource.xsd</li> |
| <li>datasource-${RELEASE.VERSION}.xsd</li> |
| <li>mode/standalone/repository.xsd</li> |
| <li>mode/standalone/repository-${RELEASE.VERSION}.xsd</li> |
| <li>mode/cluster/repository.xsd</li> |
| <li>mode/cluster/repository-${RELEASE.VERSION}.xsd</li> |
| <li>sharding.xsd</li> |
| <li>sharding-${RELEASE.VERSION}.xsd</li> |
| <li>encrypt.xsd</li> |
| <li>encrypt-${RELEASE.VERSION}.xsd</li> |
| <li>readwrite-splitting.xsd</li> |
| <li>readwrite-splitting-${RELEASE.VERSION}.xsd</li> |
| <li>shadow.xsd</li> |
| <li>shadow-${RELEASE.VERSION}.xsd</li> |
| <li>database-discovery.xsd</li> |
| <li>database-discovery-${RELEASE.VERSION}.xsd</li> |
| </ul> |
| <h3 id="7-官网首页增加发布版本文档入口">7. 官网首页增加发布版本文档入口</h3> |
| <p>参考以下代码:</p> |
| <ul> |
| <li><a href="https://github.com/apache/shardingsphere-doc/blob/10fb1b5f610fe2cac00c66abe2df7a8cc30c2a18/index.html#L88-L126">英文首页</a></li> |
| <li><a href="https://github.com/apache/shardingsphere-doc/blob/10fb1b5f610fe2cac00c66abe2df7a8cc30c2a18/index_zh.html#L88-L125">中文首页</a></li> |
| </ul> |
| <h3 id="8-合并-github-的-release-分支到-master合并完成后删除-release-分支">8. 合并 GitHub 的 release 分支到 <code>master</code>,合并完成后删除 release 分支</h3> |
| <p>确认下载页面中的新发布版本的链接可用后,在 GitHub 页面创建 Pull Request 将分支 <code>${RELEASE.VERSION}-release</code> 合并到 <code>master</code>。 |
| 如果代码存在冲突,可以先把 master 分支合并到 <code>${RELEASE.VERSION}-release</code>。</p> |
| <h3 id="9-生成-helm-chart-索引文件并上传">9. 生成 Helm Chart 索引文件并上传</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">mkdir -p /tmp/charts |
| cd /tmp/charts |
| wget https://archive.apache.org/dist/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>/apache-shardingsphere-proxy-chart-<span style="color:#e6db74">${</span>CHART.RELEASE.VERSION<span style="color:#e6db74">}</span>.tgz |
| curl https://shardingsphere.apache.org/charts/index.yaml > previous_index.yaml |
| helm repo index --url https://archive.apache.org/dist/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> --merge previous_index.yaml . |
| </code></pre></div><p>检查生成的 <code>index.yaml</code> 文件,确认无误后更新 <a href="https://github.com/apache/shardingsphere-doc/blob/asf-site/charts/index.yaml">https://github.com/apache/shardingsphere-doc/blob/asf-site/charts/index.yaml</a>。</p> |
| <h3 id="10-邮件通知版本发布完成">10. 邮件通知版本发布完成</h3> |
| <p>发送邮件到 <code>dev@shardingsphere.apache.org</code> 和 <code>announce@apache.org</code> 通知完成版本发布。</p> |
| <p>通知邮件模板(使用纯文本模式):</p> |
| <p>标题:</p> |
| <pre><code>[ANNOUNCE] Apache ShardingSphere ${RELEASE.VERSION} available |
| </code></pre><p>正文:</p> |
| <pre><code>Hi all, |
| |
| Apache ShardingSphere Team is glad to announce the new release of Apache ShardingSphere ${RELEASE.VERSION}. |
| |
| Apache ShardingSphere is an open-source ecosystem consisted of a set of distributed database solutions, including 3 independent products, JDBC, Proxy & Sidecar (Planning). |
| They all provide functions of data scale out, distributed transaction and distributed governance, applicable in a variety of situations such as Java isomorphism, heterogeneous language and cloud native. |
| Apache ShardingSphere aiming at reasonably making full use of the computation and storage capacity of existed database in distributed system, rather than a totally new database. |
| As the cornerstone of enterprises, relational database still takes a huge market share. Therefore, we prefer to focus on its increment instead of a total overturn. |
| |
| Download Links: https://shardingsphere.apache.org/document/current/en/downloads/ |
| |
| Release Notes: https://github.com/apache/shardingsphere/blob/master/RELEASE-NOTES.md |
| |
| Website: https://shardingsphere.apache.org/ |
| |
| ShardingSphere Resources: |
| - Issue: https://github.com/apache/shardingsphere/issues/ |
| - Mailing list: dev@shardingsphere.apache.org |
| - Documents: https://shardingsphere.apache.org/document/current/ |
| |
| |
| |
| - Apache ShardingSphere Team |
| |
| </code></pre><h2 id="附录如何中止发布流程">附录:如何中止发布流程</h2> |
| <p>当发布过程中发现问题,需要中止发布流程并待问题修复后重新发布,可以参考以下流程进行。</p> |
| <h3 id="在投票邮件回复--1-并说明中止原因">在投票邮件回复 -1 并说明中止原因</h3> |
| <p>在 <code>[VOTE]</code> 邮件回复 -1,并说明中止投票的原因。</p> |
| <h3 id="从-dev-区域移除-release-candidates">从 dev 区域移除 release candidates</h3> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">svn del https://dist.apache.org/repos/dist/dev/shardingsphere/<span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> -m <span style="color:#e6db74">"Drop </span><span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74"> release candidates"</span> |
| </code></pre></div><h3 id="drop-maven-staging-repository">Drop Maven Staging Repository</h3> |
| <p>在 <a href="https://repository.apache.org/#stagingRepositories">https://repository.apache.org/#stagingRepositories</a> 勾选本次发布的 Staging Repository,点击 <strong>Drop</strong> 按钮。</p> |
| <h3 id="reset-发布分支并删除-tag">Reset 发布分支并删除 tag</h3> |
| <p>Reset <code>${RELEASE.VERSION}-release</code> 分支到 <code>maven-release-plugin</code> 自动提交之前的 commit:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git checkout <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span>-release |
| git reset --hard <span style="color:#e6db74">${</span>COMMIT_ID_BEFORE_RELEASE<span style="color:#e6db74">}</span> |
| git push origin --force |
| </code></pre></div><p>删除 tag:</p> |
| <div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-shell" data-lang="shell">git tag -d <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| git push origin -d <span style="color:#e6db74">${</span>RELEASE.VERSION<span style="color:#e6db74">}</span> |
| </code></pre></div> |
| |
| <footer class=" footline" > |
| |
| </footer> |
| |
| |
| |
| </div> |
| |
| </div> |
| |
| |
| </div> |
| |
| <div id="navigation" > |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <a class="nav nav-prev" href="https://shardingsphere.apache.org/community/cn/contribute/document-contributor/" title="官方文档贡献指南"> <i class="fa fa-long-arrow-left fa-lg"></i> 上一篇</a> |
| |
| |
| |
| |
| <a class="nav nav-next" href="https://shardingsphere.apache.org/community/cn/contribute/release-elasticjob/" title="ElasticJob 发布指南" style="margin-right: 0px;">下一篇 <i class="fa fa-long-arrow-right fa-lg"></i></a> |
| |
| |
| </div> |
| |
| </section> |
| </div> |
| <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"> |
| <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div> |
| </div> |
| |
| <script src="https://shardingsphere.apache.org/community/js/clipboard.min.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/perfect-scrollbar.min.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/perfect-scrollbar.jquery.min.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/jquery.sticky.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/featherlight.min.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/html5shiv-printshiv.min.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/highlight.pack.js?1660280484"></script> |
| <script>hljs.initHighlightingOnLoad();</script> |
| <script src="https://shardingsphere.apache.org/community/js/modernizr.custom.71422.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/learn.js?1660280484"></script> |
| <script src="https://shardingsphere.apache.org/community/js/hugo-learn.js?1660280484"></script> |
| <script> |
| try{ |
| |
| function log(fileName, category, locale){ |
| window._hmt.push(['_trackEvent', 'document', 'download', locale ? 'PDF_'+locale : fileName]); |
| |
| gtag('event', 'Downloads', { |
| 'event_category' : locale ? 'PDF' : category, |
| 'event_label' : locale ? locale+'.pdf' : fileName |
| }); |
| } |
| |
| $('.padding[href*=shardingsphere]').on('click', function(){ |
| var locale = /cn/.test(location.pathname) ?'cn':'en'; |
| log('','', locale) |
| }) |
| |
| function getFileName(str){ |
| var strs = str.split('/'); |
| return strs[strs.length - 1] |
| } |
| |
| $('a[href$="src.zip"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "SRC") |
| }) |
| |
| $('a[href$="zip.asc"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "ASC") |
| }) |
| |
| $('a[href$="zip.sha512"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "SHA512") |
| }) |
| |
| $('a[href$="tar.gz.asc"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "ASC") |
| }) |
| |
| $('a[href$="tar.gz.sha512"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "SHA512") |
| }) |
| |
| $('a[href$="tar.gz"]').on('click', function(){ |
| log(getFileName($(this).attr('href')), "TAR") |
| }) |
| |
| }catch(ex){} |
| </script> |
| |
| |
| </body> |
| </html> |
| |