content/cn/release/pack-release-guide/index.html (700 lines of code) (raw):

<!doctype html> <!-- Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose Copyright 2017 Michael Rose - mademistakes.com | @mmistakes Free for personal and commercial use under the MIT license https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt --> <html lang="cn" class="no-js"> <head> <meta charset="utf-8"> <!-- begin SEO --> <title>ServiceComb Pack Release Guide - Apache ServiceComb</title> <meta name="description" content="ServiceComb Pack 发行指南"> <meta name="author" content=""> <meta property="og:locale" content="cn"> <meta property="og:site_name" content="Apache ServiceComb"> <meta property="og:title" content="ServiceComb Pack Release Guide"> <link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/cn/release/pack-release-guide/"> <meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/cn/release/pack-release-guide/"> <meta property="og:description" content="ServiceComb Pack 发行指南"> <meta name="twitter:site" content="@ServiceComb"> <meta name="twitter:title" content="ServiceComb Pack Release Guide"> <meta name="twitter:description" content="ServiceComb Pack 发行指南"> <meta name="twitter:url" content=""> <meta name="twitter:card" content="summary"> <script type="application/ld+json"> { "@context" : "http://schema.org", "@type" : "Person", "name" : "Apache ServiceComb", "url" : "https://github.com/pages/apache/incubator-servicecomb-website", "sameAs" : null } </script> <meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" /> <!-- end SEO --> <link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache ServiceComb Feed"> <!-- http://t.co/dKP3o1e --> <meta name="HandheldFriendly" content="True"> <meta name="MobileOptimized" content="320"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script> document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js '; </script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script> <script src="/assets/vendor/prism/prism.js"></script> <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"> </script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> <script src="https://www.apachecon.com/event-images/snippet.js"></script> <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script> <!-- For all browsers --> <link rel="stylesheet" href="/assets/css/main.css"> <link rel="stylesheet" href="/assets/vendor/prism/prism.css"> <!--[if lte IE 9]> <style> /* old IE unsupported flexbox fixes */ .greedy-nav .site-title { padding-right: 3em; } .greedy-nav button { position: absolute; top: 0; right: 0; height: 100%; } </style> <![endif]--> <meta http-equiv="cleartype" content="on"> <!-- start custom head snippets --> <!-- insert favicons. use http://realfavicongenerator.net/ --> <link href="https://fonts.loli.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet"> <script src="/assets/js/custom.js"></script> <!-- end custom head snippets --> </head> <body class="layout--single"> <!--[if lt IE 9]> <div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div> <![endif]--> <div class="masthead" onmouseleave="$('#childrenShow').css('display', 'none')"> <div class="masthead__inner-wrap"> <div class="masthead__menu"> <nav id="site-nav" class="greedy-nav"> <a class="site-title active" href="/cn"><img src="https://www.apache.org/img/servicecomb.png"></a> <ul class="visible-links"> <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')"> <a href="/cn/">首页</a> </li> <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')"> <a href="/cn/developers/">项目</a> </li> <li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')"> <a href="/cn/docs/users/">文档</a> <ul id="childrenShow" class="def-children-show-cn" onmouseleave="$('#childrenShow').css('display', 'none')"> <li><a href="/cn/docs/getting-started/" class="">入门指南</a></li> <li><a href="/cn/docs/users/" class="">用户手册</a></li> <li><a href="/cn/slides/" class="">大咖视频</a></li> <li><a href="/cn/faqs/" class="">常见问题</a></li> </ul> </li> <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')"> <a href="/cn/year-archive/">博文</a> </li> <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')"> <a class="active" href="/cn/release/">下载</a> </li> </ul> <button><div class="navicon"></div></button> <ul class="hidden-links hidden"></ul> <div class="nav-lang"> <a href=/release/pack-release-guide/>English</a> </div> </nav> </div> </div> </div> <div id="main" role="main"> <div class="sidebar sticky"> <div class="back-to-home"><a href="/cn/">首页</a> > ServiceComb Pack Release Guide</div> <nav class="nav__list"> <input id="ac-toc" name="accordion-toc" type="checkbox" /> <label for="ac-toc">切换菜单</label> <ul class="nav__items"> <li> <span class="nav__sub-title">Service-Center</span> <ul> <li><a href="/cn/release/service-center-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/service-center-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Kie</span> <ul> <li><a href="/cn/release/kie-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/kie-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Java-Chassis</span> <ul> <li><a href="/cn/release/java-chassis-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/java-chassis-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Mesher</span> <ul> <li><a href="/cn/release/mesher-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/mesher-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Pack</span> <ul> <li><a href="/cn/release/pack-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/pack-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Toolkit</span> <ul> <li><a href="/cn/release/toolkit-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/toolkit-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Saga Actuator</span> <ul> <li><a href="/cn/release/saga-actuator-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/saga-actuator-downloads/" class="">发布包</a></li> </ul> </li> <li> <span class="nav__sub-title">Saga</span> <ul> <li><a href="/cn/release/saga-release-notes/" class="">发布说明</a></li> <li><a href="/cn/release/saga-downloads/" class="">发布包</a></li> </ul> </li> </ul> </nav> </div> <article class="page" itemscope itemtype="http://schema.org/CreativeWork"> <meta itemprop="headline" content="ServiceComb Pack Release Guide"> <meta itemprop="description" content="ServiceComb Pack 发行指南"> <meta itemprop="dateModified" content="August 06, 2022"> <div class="page__inner-wrap"> <header> <h1 class="page__title" itemprop="headline">ServiceComb Pack Release Guide </h1> </header> <section class="page__content" itemprop="text"> <h2 id="发布环境准备">发布环境准备</h2> <h4 id="生成签名密钥">生成签名密钥</h4> <ol> <li>安装 GPG</li> </ol> <p>在<a href="https://www.gnupg.org/download/index.html">GnuPG官网</a>下载 2.X 安装包. 安装完毕后可以使用如下命令查看版本</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gpg <span class="nt">--version</span> gpg <span class="o">(</span>GnuPG/MacGPG2<span class="o">)</span> 2.2.20 libgcrypt 1.8.5 Copyright <span class="o">(</span>C<span class="o">)</span> 2020 Free Software Foundation, Inc. </code></pre></div></div> <ol> <li>配置 GPG</li> </ol> <p>安装完毕后你可以找到 <code class="language-plaintext highlighter-rouge">$HOME/.gnupg/gpg.conf</code> 文件,并增加如下<a href="https://infra.apache.org/openpgp.html#sha-defaults">推荐配置</a></p> <div class="language-properties highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">personal-digest-preferences</span> <span class="err">SHA512</span> <span class="err">cert-digest-algo</span> <span class="err">SHA512</span> <span class="err">default-preference-list</span> <span class="err">SHA512</span> <span class="err">SHA384</span> <span class="err">SHA256</span> <span class="err">SHA224</span> <span class="err">AES256</span> <span class="err">AES192</span> <span class="err">AES</span> <span class="err">CAST5</span> <span class="err">ZLIB</span> <span class="err">BZIP2</span> <span class="err">ZIP</span> <span class="err">Uncompressed</span> </code></pre></div></div> <ol> <li>用 GPG 生成密钥</li> </ol> <p>根据提示使用 ASF 邮箱生成 GPG 的密钥,更多详细说明请参考 <a href="https://infra.apache.org/openpgp.html#generate-key">Generate Key with GPG</a></p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gpg <span class="nt">--full-gen-key</span> gpg <span class="o">(</span>GnuPG/MacGPG2<span class="o">)</span> 2.2.34<span class="p">;</span> Copyright <span class="o">(</span>C<span class="o">)</span> 2022 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please <span class="k">select </span>what kind of key you want: <span class="o">(</span>1<span class="o">)</span> RSA and RSA <span class="o">(</span>default<span class="o">)</span> <span class="o">(</span>2<span class="o">)</span> DSA and Elgamal <span class="o">(</span>3<span class="o">)</span> DSA <span class="o">(</span>sign only<span class="o">)</span> <span class="o">(</span>4<span class="o">)</span> RSA <span class="o">(</span>sign only<span class="o">)</span> <span class="o">(</span>14<span class="o">)</span> Existing key from card Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize <span class="k">do </span>you want? <span class="o">(</span>3072<span class="o">)</span> 4096 Requested keysize is 4096 bits Please specify how long the key should be valid. 0 <span class="o">=</span> key does not expire &lt;n&gt; <span class="o">=</span> key expires <span class="k">in </span>n days &lt;n&gt;w <span class="o">=</span> key expires <span class="k">in </span>n weeks &lt;n&gt;m <span class="o">=</span> key expires <span class="k">in </span>n months &lt;n&gt;y <span class="o">=</span> key expires <span class="k">in </span>n years Key is valid <span class="k">for</span>? <span class="o">(</span>0<span class="o">)</span> Key does not expire at all Is this correct? <span class="o">(</span>y/N<span class="o">)</span> y GnuPG needs to construct a user ID to identify your key. Real name: <span class="o">[</span>你的 ASF 账号] Email address: <span class="o">[</span>你的 ASF 邮箱] Comment: CODE SIGNING KEY You selected this USER-ID: <span class="s2">"[你的 ASF 账号] (CODE SIGNING KEY) &lt;[你的 ASF 邮箱]&gt;"</span> Change <span class="o">(</span>N<span class="o">)</span>ame, <span class="o">(</span>C<span class="o">)</span>omment, <span class="o">(</span>E<span class="o">)</span>mail or <span class="o">(</span>O<span class="o">)</span>kay/<span class="o">(</span>Q<span class="o">)</span>uit? O </code></pre></div></div> <p>生成密钥的过程中会提示你输入一个<strong>[密钥密码]</strong>用来保护你的密钥,请记住这个密钥密码</p> <ol> <li>查看 GPG 公钥ID</li> </ol> <p>你可以使用如下命令查看生成的密钥,请保存 <strong>[公钥ID]</strong>。</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gpg <span class="nt">--list-keys</span> pub rsa4096 2022-05-05 <span class="o">[</span>SC] <span class="o">[</span>公钥ID] uid <span class="o">[</span> unknown] <span class="o">[</span>你的 ASF 账号] <span class="o">(</span>CODE SIGNING KEY<span class="o">)</span> &lt;<span class="o">[</span>你的 ASF 邮箱]&gt; sub rsa4096 2022-05-05 <span class="o">[</span>E] </code></pre></div></div> <ol> <li>发布公钥到密钥服务器</li> </ol> <p>使用 <strong>[公钥ID]</strong> 将公钥发布到 <code class="language-plaintext highlighter-rouge">pgpkeys.mit.edu</code>,发布后稍等一会就会自动同步到其他密钥服务器</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg <span class="nt">--keyserver</span> pgpkeys.mit.edu <span class="nt">--send-key</span> <span class="o">[</span>公钥ID] </code></pre></div></div> <p>使用如下命令验证公钥是否发布成功(因为发布后后台需要同步,所以可能需等待一会)</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg <span class="nt">--keyserver</span> hkp://pgpkeys.mit.edu <span class="nt">--recv-keys</span> <span class="o">[</span>公钥ID] </code></pre></div></div> <p>如果你看到如下信息,说明已经发布成功</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg: key <span class="o">[</span>公钥ID]: <span class="s2">"[你的 ASF 账号] (CODE SIGNING KEY) &lt;[你的 ASF 邮箱]&gt;"</span> not changed gpg: Total number processed: 1 gpg: unchanged: 1 </code></pre></div></div> <ol> <li>发布公钥指纹到 ASF 用户信息中</li> </ol> <p>使用以下命令生成公钥指纹,登录 https://id.apache.org, 将下面<strong>公钥指纹</strong>粘贴到自己的用户信息中 OpenPGP Public Key Primary Fingerprint 中。</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gpg <span class="nt">--fingerprint</span> Lei Zhang pub rsa4096 2022-05-05 <span class="o">[</span>SC] <span class="o">[</span>公钥指纹] uid <span class="o">[</span> unknown] <span class="o">[</span>你的 ASF 账号] <span class="o">(</span>CODE SIGNING KEY<span class="o">)</span> &lt;<span class="o">[</span>你的 ASF 邮箱]&gt; sub rsa4096 2022-05-05 <span class="o">[</span>E] </code></pre></div></div> <ol> <li>备份公钥和私钥(不是发布流程的必须环节)</li> </ol> <p>你可以使用以下方式备份密钥</p> <p>导出公钥</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg <span class="nt">-a</span> <span class="nt">-o</span> public-file.key <span class="nt">--export</span> <span class="o">[</span>公钥ID] </code></pre></div></div> <p>导出私钥(需要生成密钥时的密码)</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg <span class="nt">-a</span> <span class="nt">-o</span> private-file.key <span class="nt">--export-secret-keys</span> <span class="o">[</span>公钥ID] </code></pre></div></div> <ol> <li>将公钥追加到以下两个文件中</li> </ol> <ul> <li>https://dist.apache.org/repos/dist/dev/servicecomb/KEYS</li> <li>https://dist.apache.org/repos/dist/release/servicecomb/KEYS</li> </ul> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svn co <span class="nt">--depth</span><span class="o">=</span>empty https://dist.apache.org/repos/dist/dev/servicecomb svn up KEYS <span class="nb">cat </span>public-file.key <span class="o">&gt;&gt;</span> KEYS svn commit <span class="nt">-m</span> <span class="s1">'add [你的 ASF 邮箱] gpg public key'</span> svn co <span class="nt">--depth</span><span class="o">=</span>empty https://dist.apache.org/repos/dist/release/servicecomb svn up KEYS <span class="nb">cat </span>public-file.key <span class="o">&gt;&gt;</span> KEYS svn commit <span class="nt">-m</span> <span class="s1">'add [你的 ASF 邮箱] gpg public key'</span> </code></pre></div></div> <h4 id="apache-maven-认证配置">Apache Maven 认证配置</h4> <p>在发布前我们需要配置 Apache Maven 仓库的服务器地址、账号和密码。为了安全我们使用 <a href="https://maven.apache.org/guides/mini/guide-encryption.html">Password Encryption</a> 对 Apache LDAP 密码加密</p> <ol> <li>创建一个主密码</li> </ol> <p>使用如下命令创建一个 <strong>[主密码]</strong>,并生成 <strong>[加密后的主密码]</strong></p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>mvn <span class="nt">--encrypt-master-password</span> <span class="o">[</span>主密码] </code></pre></div></div> <p>将[加密后的主密码]配置在 ~/.m2/settings-security.xml 文件中</p> <div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;settingsSecurity&gt;</span> <span class="nt">&lt;master&gt;</span>[加密后的主密码]<span class="nt">&lt;/master&gt;</span> <span class="nt">&lt;/settingsSecurity&gt;</span> </code></pre></div></div> <ol> <li>加密你的 ASF LDAP 密码</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>mvn <span class="nt">--encrypt-password</span> <span class="o">[</span>你的 ASF LDAP 密码] </code></pre></div></div> <ol> <li>加密你生成 GPG 密钥时输入的 [密钥密码]</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>mvn <span class="nt">--encrypt-password</span> <span class="o">[</span>密钥密码] </code></pre></div></div> <ol> <li>在 <code class="language-plaintext highlighter-rouge">~/.m2/settings.xml</code> 文件中配置发布服务器地址和加密后的密码</li> </ol> <div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;settings&gt;</span> <span class="nt">&lt;servers&gt;</span> <span class="nt">&lt;server&gt;</span> <span class="nt">&lt;id&gt;</span>apache.snapshots.https<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;username&gt;</span>[你的 ASF 账号]<span class="nt">&lt;/username&gt;</span> <span class="nt">&lt;password&gt;</span>[加密后的 ASF LDAP 密码]<span class="nt">&lt;/password&gt;</span> <span class="nt">&lt;/server&gt;</span> <span class="nt">&lt;server&gt;</span> <span class="nt">&lt;id&gt;</span>apache.releases.https<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;username&gt;</span>[你的 ASF 账号]<span class="nt">&lt;/username&gt;</span> <span class="nt">&lt;password&gt;</span>[加密后的 ASF LDAP 密码]<span class="nt">&lt;/password&gt;</span> <span class="nt">&lt;/server&gt;</span> <span class="nt">&lt;server&gt;</span> <span class="nt">&lt;id&gt;</span>gpg.passphrase<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;passphrase&gt;</span>[加密后的密钥密码]<span class="nt">&lt;/passphrase&gt;</span> <span class="nt">&lt;/server&gt;</span> <span class="nt">&lt;/servers&gt;</span> <span class="nt">&lt;/settings&gt;</span> </code></pre></div></div> <h2 id="servicecomb-pack-发布">ServiceComb Pack 发布</h2> <p>本文档基于 <code class="language-plaintext highlighter-rouge">0.7.0</code> 正式版发布过程编写。在正式开始发布之前请提前一周通过 <code class="language-plaintext highlighter-rouge">dev@servicecomb.apache.org</code> 预告即将开始发布,确认代码是否已经准备就绪。</p> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hello All, Since from last ServiceComb pack [Previous version] release, we have made significant changes, so now is the time to release the new version [Release version]. I will cut a new release tomorrow morning from the branch https://github.com/apache/servicecomb-pack/tree/[Branch name]. @PMC/@Committers please let me know if there is any important patch we need to merge before this release. Regards [Your name] </code></pre></div></div> <p><strong>注意:</strong> 发布流程中的 <strong>PMC投票</strong> 环节通常需要 3 天,在没有任何 PMC 投 -1 票后才能正式发布,因此请提前计划发布活动。</p> <h4 id="发布到临时筹备库staging-repositories">发布到临时筹备库(Staging Repositories)</h4> <ol> <li> <p>使用 ASF LDAP 账号登录 <code class="language-plaintext highlighter-rouge">https://repository.apache.org/</code> 清除 Staging Repositories 中与 Pack 相关的多余版本</p> </li> <li> <p>下载代码</p> </li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> ~/Work/apache-release-workspace <span class="nb">cd</span> ~/Work/apache-release-workspace git clone https://github.com/apache/servicecomb-pack.git </code></pre></div></div> <ol> <li>执行 Maven 部署命令,<strong>注意:使用 <code class="language-plaintext highlighter-rouge">-Drevision=0.7.0</code> 设置要发布的版本号</strong></li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/servicecomb-pack mvn deploy <span class="nt">-DskipTests</span> <span class="nt">-Prelease</span> <span class="nt">-Drevision</span><span class="o">=</span>0.7.0 </code></pre></div></div> <ol> <li>使用 ASF LDAP 账号登录 <code class="language-plaintext highlighter-rouge">https://repository.apache.org/</code>,在 Staging Repositories 中选择刚刚发布的 repository,点击 Close 后完成临时发布。</li> </ol> <h4 id="测试临时筹备库中的-artifacts">测试临时筹备库中的 Artifacts</h4> <p>在发起投票前,我们需要测试 Staging Repositories 中刚刚发布的 Artifacts ,我们需要配置一些参数,让验收测试从 Staging Repositories 中拉取依 Artifacts,更多详细说明可以参考 <a href="https://maven.apache.org/guides/development/guide-testing-releases.html">Guide to Testing Staged Releases</a></p> <ol> <li>删除本地仓库中 Artifacts</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rm</span> <span class="nt">-rf</span> ~/.m2/repository/org/apache/servicecomb/pack </code></pre></div></div> <ol> <li>在 <code class="language-plaintext highlighter-rouge">~/.m2/settings.xml</code> 中增加如下配置</li> </ol> <div class="language-xml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;profiles&gt;</span> <span class="nt">&lt;profile&gt;</span> <span class="nt">&lt;id&gt;</span>staged-releases<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;repositories&gt;</span> <span class="nt">&lt;repository&gt;</span> <span class="nt">&lt;id&gt;</span>staged-releases<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/groups/staging/<span class="nt">&lt;/url&gt;</span> <span class="nt">&lt;/repository&gt;</span> <span class="nt">&lt;/repositories&gt;</span> <span class="nt">&lt;pluginRepositories&gt;</span> <span class="nt">&lt;pluginRepository&gt;</span> <span class="nt">&lt;id&gt;</span>staged-releases<span class="nt">&lt;/id&gt;</span> <span class="nt">&lt;url&gt;</span>https://repository.apache.org/content/groups/staging/<span class="nt">&lt;/url&gt;</span> <span class="nt">&lt;/pluginRepository&gt;</span> <span class="nt">&lt;/pluginRepositories&gt;</span> <span class="nt">&lt;/profile&gt;</span> <span class="nt">&lt;/profiles&gt;</span> </code></pre></div></div> <ol> <li>执行验收测试,<strong>注意:使用 <code class="language-plaintext highlighter-rouge">-Drevision=0.7.0</code> 设置要发布的版本号</strong></li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/servicecomb-pack mvn clean verify <span class="nt">-f</span> demo <span class="nt">-Pdemo</span> <span class="nt">-Pdocker</span> <span class="nt">-Drevision</span><span class="o">=</span>0.7.0 <span class="nt">-Pstaged-releases</span> <span class="nt">-U</span> mvn clean verify <span class="nt">-f</span> acceptance-tests <span class="nt">-Pdemo</span> <span class="nt">-Pdocker</span> <span class="nt">-Drevision</span><span class="o">=</span>0.7.0 <span class="nt">-Pstaged-releases</span> </code></pre></div></div> <ol> <li>检查本地 Artifacts 中是否还存未替换的 SNAPSHOT 版本</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find ~/.m2/repository/org/apache/servicecomb/pack <span class="nt">-name</span> <span class="s2">"*-0.7.0.pom"</span> | xargs <span class="nb">grep</span> <span class="s2">"SNAPSHOT"</span> </code></pre></div></div> <ol> <li>如果一切正常,我们将创建 <code class="language-plaintext highlighter-rouge">0.7.x</code> 分支, <code class="language-plaintext highlighter-rouge">0.7.0</code> TAG,修改主干版本号为 <code class="language-plaintext highlighter-rouge">0.8.0-SNAPSHOT</code></li> </ol> <p>创建并推送 <code class="language-plaintext highlighter-rouge">0.7.x</code> 分支</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/servicecomb-pack git checkout master git checkout <span class="nt">-b</span> 0.7.x mvn versions:set-property <span class="nt">-Dproperty</span><span class="o">=</span>revision <span class="nt">-DnewVersion</span><span class="o">=</span>0.7.0 git add pom.xml git commit <span class="nt">-m</span> <span class="s1">'Cut 0.7.0 Release'</span> git push origin 0.7.x </code></pre></div></div> <p>在 0.7.x 分支上创建并推送 <code class="language-plaintext highlighter-rouge">0.7.0</code> TAG</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/servicecomb-pack git tag <span class="nt">-a</span> 0.7.0 <span class="nt">-m</span> <span class="s2">"ServiceComb Pack 0.7.0 Release"</span> git push origin 0.7.0 </code></pre></div></div> <p>切换到主版本,修改版本号为 <code class="language-plaintext highlighter-rouge">0.8.0-SNAPSHOT</code> 并推送</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/servicecomb-pack git checkout master mvn versions:set-property <span class="nt">-Dproperty</span><span class="o">=</span>revision <span class="nt">-DnewVersion</span><span class="o">=</span>0.8.0-SNAPSHOT git add pom.xml git commit <span class="nt">-m</span> <span class="s1">'Update Release Number to 0.8.0-SNAPSHOT'</span> git push origin master </code></pre></div></div> <h4 id="签署版本--上传到-asf-svn-仓库">签署版本 &amp; 上传到 ASF SVN 仓库</h4> <ol> <li>拉取 SVN 仓库到本地</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> ~/Work/apache-release-workspace/dist <span class="nb">cd</span> ~/Work/apache-release-workspace/dist svn co https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack <span class="nt">--username</span><span class="o">=[</span>你的 ASF LDAP 用户名] <span class="nt">--password</span><span class="o">=[</span>你的 ASF LDAP 密码] </code></pre></div></div> <ol> <li>创建发布包目录</li> </ol> <p>如果你是第 1 次发布 0.7.0 版本,那么创建 <code class="language-plaintext highlighter-rouge">0.7.0/rc1</code> 目录,例如:</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> ~/Work/apache-release-workspace/dist/servicecomb-pack/0.7.0/rc1 </code></pre></div></div> <ol> <li>复制发布包到发布目录</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/dist/servicecomb-pack/0.7.0/rc1 <span class="nb">cp</span> ~/Work/apache-release-workspace/servicecomb-pack/distribution/target/apache-servicecomb-pack-distribution-0.7.0-bin.zip <span class="nb">.</span> <span class="nb">cp</span> ~/Work/apache-release-workspace/servicecomb-pack/distribution/target/apache-servicecomb-pack-distribution-0.7.0-bin.zip.asc <span class="nb">.</span> <span class="nb">cp</span> ~/Work/apache-release-workspace/servicecomb-pack/distribution/target/apache-servicecomb-pack-distribution-0.7.0-src.zip <span class="nb">.</span> <span class="nb">cp</span> ~/Work/apache-release-workspace/servicecomb-pack/distribution/target/apache-servicecomb-pack-distribution-0.7.0-src.zip.asc <span class="nb">.</span> </code></pre></div></div> <ol> <li>生成 SHA512 签名</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/dist/servicecomb-pack/0.7.0/rc1 shasum <span class="nt">-a</span> 512 apache-servicecomb-pack-distribution-0.7.0-bin.zip <span class="o">&gt;&gt;</span> apache-servicecomb-pack-distribution-0.7.0-bin.zip.sha512 shasum <span class="nt">-a</span> 512 apache-servicecomb-pack-distribution-0.7.0-src.zip <span class="o">&gt;&gt;</span> apache-servicecomb-pack-distribution-0.7.0-src.zip.sha512 </code></pre></div></div> <ol> <li>上传到 ASF SVN 仓库</li> </ol> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/dist/servicecomb-pack svn add 0.7.0 svn commit <span class="nt">-m</span> <span class="s1">'prepare for 0.7.0 RC1'</span> <span class="nt">--username</span><span class="o">=[</span>你的 ASF LDAP 用户名] <span class="nt">--password</span><span class="o">=[</span>你的 ASF LDAP 密码] </code></pre></div></div> <ol> <li>验证候选版本</li> </ol> <p>从 https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/ 下载发布包检查 GPG 签名和 SHA512</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> ~/Work/apache-release-workspace/verify <span class="nb">cd</span> ~/Work/apache-release-workspace/verify curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-bin.zip curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-bin.zip.asc curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-bin.zip.sha512 curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-src.zip curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-src.zip.asc curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/apache-servicecomb-pack-distribution-0.7.0-src.zip.sha512 </code></pre></div></div> <p>检查 SHA512 哈希</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/verify shasum <span class="nt">-c</span> apache-servicecomb-pack-distribution-0.7.0-bin.zip.sha512 shasum <span class="nt">-c</span> apache-servicecomb-pack-distribution-0.7.0-src.zip.sha512 </code></pre></div></div> <p>导入公钥</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl https://dist.apache.org/repos/dist/dev/servicecomb/KEYS <span class="o">&gt;&gt;</span> KEYS <span class="nv">$ </span>gpg <span class="nt">--import</span> KEYS </code></pre></div></div> <p>检查 GPG 签名</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/verify gpg <span class="nt">--verify</span> apache-servicecomb-pack-distribution-0.7.0-bin.zip.asc apache-servicecomb-pack-distribution-0.7.0-bin.zip gpg <span class="nt">--verify</span> apache-servicecomb-pack-distribution-0.7.0-src.zip.asc apache-servicecomb-pack-distribution-0.7.0-src.zip </code></pre></div></div> <h4 id="整理发布说明">整理发布说明</h4> <p>你需要检查 Jira 上的 ISSUE 是否都已更新,然后参考 <a href="https://confluence.atlassian.com/adminjiraserver/creating-release-notes-938847219.html">Creating release notes</a> 生成发布说明</p> <h4 id="pmc-发布投票">PMC 发布投票</h4> <p>发送投票邮件 <code class="language-plaintext highlighter-rouge">[VOTE] Release Apache ServiceComb Pack version 0.7.0</code> 到 <code class="language-plaintext highlighter-rouge">dev@servicecomb.apache.org</code>,你可以参考如下邮件模版:</p> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hi all, This is a call for Vote to release Apache ServiceComb Pack version 0.7.0 Release Candidate: https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc1/ Staging Repository: https://repository.apache.org/content/repositories/orgapacheservicecomb-1490 Release Tag: https://github.com/apache/servicecomb-pack/releases/tag/0.7.0 Release CommitID: fae7326c0bac2b07e06ba83cf2cc284648ab1713 Release Notes: https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12321626<span class="err">&amp;</span>version=12348307 Keys to verify the Release Candidate: https://dist.apache.org/repos/dist/dev/servicecomb/KEYS Voting will start now (Thursday, 12th May 2022) and will remain open for at-least 72 hours, Request all PMC members to give their vote. [ ] +1 Release this package as 0.7.0 [ ] +0 No Opinion [ ] -1 Do not release this package because... On behalf of the ServiceComb Team Regards [Your name] </code></pre></div></div> <p>等待 72 小时后,你可以通过 <code class="language-plaintext highlighter-rouge">dev@servicecomb.apache.org</code> 发送投票截止通知。</p> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hi All, Thanks all for voting on this release, the vote has been closed now, and we will announce the results shortly. Regards [Your name] </code></pre></div></div> <p>你可以通过 <code class="language-plaintext highlighter-rouge">dev@servicecomb.apache.org</code> 发布投票结果,如果您获得了至少三个 binding +1 投票,并且没有任何一个 binding -1 的投票,那么你可以继续发布。否则请解决问题并从 <strong>ServiceComb Pack 发布</strong> 重新开始。</p> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hello All, We are glad to announce that ServiceComb community has approved the Apache ServiceComb Pack 0.7.0 release with the following results: +1 binding: 3 ([PMC Name],[PMC Name],[PMC Name],...) We will be publishing the release binaries soon. On behalf of ServiceComb Team Thanks all for your participation in this vote. Regards [Your name] </code></pre></div></div> <h4 id="公告">公告</h4> <ol> <li> <p>使用 ASF LDAP 账号登录 <code class="language-plaintext highlighter-rouge">https://repository.apache.org/</code> 选择 Staging Repositories 之前的 Artifacts,点击 Release 按钮。需要一段时间后会自动同步到 <a href="https://mvnrepository.com/repos/central">Maven Central Repository</a> 中央库。</p> </li> <li> <p>上传发布包到 ASF 仓库</p> </li> </ol> <p>将 https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0/rc01/ 下的内容上传到 https://dist.apache.org/repos/dist/release/servicecomb/servicecomb-pack/0.7.0</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">mkdir</span> <span class="nt">-p</span> ~/Work/apache-release-workspace/release <span class="nb">cd</span> ~/Work/apache-release-workspace/release svn co https://dist.apache.org/repos/dist/release/servicecomb/servicecomb-pack <span class="nb">mkdir</span> <span class="nt">-p</span> ~/Work/apache-release-workspace/release/servicecomb-pack/0.7.0 <span class="nb">cp</span> ~/Work/apache-release-workspace/dist/servicecomb-pack/0.7.0/rc1/<span class="k">*</span> ~/Work/apache-release-workspace/release/servicecomb-pack/0.7.0 <span class="nb">cd</span> ~/Work/apache-release-workspace/release/servicecomb-pack svn add 0.7.0 svn commit <span class="nt">-m</span> <span class="s1">'Upload ServiceComb Pack 0.7.0 Release'</span> </code></pre></div></div> <ol> <li>删除之前的 RC 版本</li> </ol> <p>删除 https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-pack/0.7.0</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/dist/servicecomb-pack <span class="nb">rm</span> <span class="nt">-rf</span> 0.7.0 svn delete 0.7.0 svn commit <span class="nt">-m</span> <span class="s1">'Remove ServiceComb Pack 0.7.0 RC'</span> </code></pre></div></div> <ol> <li>删除之前的 0.6.0 Release 版本</li> </ol> <p>删除 https://dist.apache.org/repos/dist/release/servicecomb/servicecomb-pack/0.6.0/</p> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~/Work/apache-release-workspace/release/servicecomb-pack <span class="nb">rm</span> <span class="nt">-rf</span> 0.6.0 svn delete 0.6.0 svn commit <span class="nt">-m</span> <span class="s1">'Remove ServiceComb Pack 0.6.0 Release'</span> </code></pre></div></div> <ol> <li> <p>等待 <a href="https://mvnrepository.com/repos/central">Maven Central Repository</a> 中央库已经同步完毕</p> </li> <li> <p>在 Github 上创建 0.7.0 Tag 的 Release</p> </li> </ol> <p>打开 <code class="language-plaintext highlighter-rouge">https://github.com/apache/servicecomb-pack/releases/tag/0.7.0</code> 点击 <code class="language-plaintext highlighter-rouge">Create release from tag</code> 按钮。发布内容填写来自 Jira 的 <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12321626&amp;version=12348307">Release Notes</a></p> <ol> <li>更新 <a href="https://github.com/apache/servicecomb-website">ServiceComb Website</a></li> </ol> <ul> <li>https://github.com/apache/servicecomb-website/blob/master/_release/cn/pack_downloads.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_release/cn/pack_releaseNotes.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_release/cn/release.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_release/pack_downloads.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_release/pack_releaseNotes.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_release/release.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_pages/cn/home.md</li> <li>https://github.com/apache/servicecomb-website/blob/master/_pages/home.md</li> </ul> <ol> <li>发送 <code class="language-plaintext highlighter-rouge">[ANNOUNCE] Apache ServiceComb Pack version 0.7.0 Released</code> 邮件到 <code class="language-plaintext highlighter-rouge">dev@servicecomb.apache.org</code> 和 <code class="language-plaintext highlighter-rouge">announce@apache.org</code></li> </ol> <div class="language-html highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Hello All, Apache ServiceComb Team is glad to announce the release of Apache ServiceComb Pack 0.7.0 Apache ServiceComb Pack(https://github.com/apache/servicecomb-pack) is an eventually data consistency solution for micro-service applications. ServiceComb Pack currently has TCC and Saga distributed transaction coordination protocol. ServiceComb Pack is composed of Alpha which plays as a coordinator for the management of transactions and Omega which plays as an agent and is an integral part of micro-services intercepting the outgoing/incoming requests and reports transaction events to Alpha. Download Links: https://servicecomb.apache.org/release/pack-downloads/ Release Notes: https://servicecomb.apache.org/release/pack-release-notes/ Know more about ServiceComb: https://servicecomb.apache.org/ ServiceComb Useful Links : - JIRA: https://issues.apache.org/jira/browse/SCB - Mailing lists: dev@servicecomb.apache.org - Gitter: https://gitter.im/ServiceCombUsers/Saga On behalf of ServiceComb Team Regards [Your name] </code></pre></div></div> </section> <footer class="page__meta"> </footer> </div> </article> </div> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <div align="center" style="margin: 0 0;"> <ins class="adsbygoogle" style="display:block; border-bottom: initial;" data-ad-client="ca-pub-7328585512091257" data-ad-slot="3049671934" data-ad-format="auto"></ins> </div> <div class="page__footer"> <footer> <!-- start custom footer snippets --> <!-- end custom footer snippets --> <div class="container"> <div class="row justify-content-md-center"> <div class="col"> <ul> <p class="header">活动</p> <a class="acevent" data-format="square" data-mode="dark" data-event="random"></a> </ul> </div> <div class="col"> <ul> <p class="header">资源</p> <li><a href="/cn/docs/getting-started/">入门指南</a></li> <li><a href="/cn/docs/users/">用户指南</a></li> <li><a href="/cn/slides/">资料</a></li> <li><a href="/cn/users/faq/">常见问题</a></li> </ul> </div> <div class="col"> <ul> <p class="header">ASF</p> <li><a href="http://www.apache.org">基金会</a></li> <li><a href="http://www.apache.org/licenses/">许可证</a></li> <li><a href="http://www.apache.org/events/current-event">活动</a></li> <li><a href="http://www.apache.org/foundation/sponsorship.html">赞助</a></li> <li><a href="http://www.apache.org/foundation/thanks.html">鸣谢</a></li> </ul> </div> <div class="col"> <ul> <p class="header">贡献</p> <li><a href="http://issues.apache.org/jira/browse/SCB">报告本网页问题</a></li> <li><a href="https://github.com/apache/servicecomb-website/edit/master/_release/cn/pack_releaseGuide.md">在Github上编辑此页</a></li> <li><a href="/cn/developers/submit-codes/">代码提交指南</a></li> <li><a href="/cn/security">安全</a></li> </ul> </div> <div class="col"> <ul class="social-icons"> <p class="header">社区</p> <li> <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">邮件列表</span></a> </li> <li> <a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a> </li> <li> <a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a> </li> <li> <a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a> </li> </ul> </div> </div> </div> <div class="page__footer-bottom"> <div>&copy; 2022 Apache ServiceComb. 技术来自于 <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div> <div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div> </div> </footer> </div> <script src="/assets/js/main.min.js"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-101622733-1', 'auto'); ga('send', 'pageview'); </script> </body> </html>