blob: da5f27ba67db5f02da0dc25952185a2c67e6b8d1 [file] [log] [blame]
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – Committer Guide</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/</link><description>Recent content in Committer Guide on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://dubbo.apache.org/en/docs/contribution-guidelines/committer/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Apache Committer Guide</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/new-committer-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/new-committer-guide_dev/</guid><description>
&lt;h2 id="first-how-to-become-a-committer">First: How to become a committer&lt;/h2>
&lt;h3 id="initial-committers-at-the-project-incubator-stage">Initial committers at the project incubator stage&lt;/h3>
&lt;p>At the project incubator stage, there will be an initial committers list in the proposal of the incubator project. Confirm that you are one of the initial committers. After the vote is passed in the Apache incubator community, these committers can start preparing their account. See &lt;a href="https://wiki.apache.org/incubator/">incubator wiki&lt;/a> for details.&lt;/p>
&lt;h3 id="the-active-contributor-is-elected-as-a-committer">The active contributor is elected as a committer&lt;/h3>
&lt;p>At the late development stage, an active contributor can be elected as a committer. See &lt;a href="https://www.apache.org/dev/new-committers-guide.html#becoming-a-committer">how to become a committer&lt;/a>&lt;/p>
&lt;h2 id="second-the-individual-contributor-signs-icla">Second: The individual contributor signs ICLA&lt;/h2>
&lt;h3 id="1-apache-id">1, Apache ID&lt;/h3>
&lt;p>Choose a Apache ID not in the &lt;a href="http://people.apache.org/committer-index.html">apache committers list page&lt;/a>.&lt;/p>
&lt;h3 id="2-individual-contributor-license-agreement--icla">2, Individual Contributor License Agreement (ICLA):&lt;/h3>
&lt;p>Download the &lt;a href="https://www.apache.org/licenses/icla.pdf">ICLA template&lt;/a>. After filling the icla.pdf with personal information correctly, print, sign, scan, and send it in mail as an attachment to the secretary &lt;a href="mailto:secretary@apache.org">secretary@apache.org&lt;/a>, the secretary will help to create the Apache user ID. At the same time, a &lt;a href="mailto:your-id@apache.org">your-id@apache.org&lt;/a> mailbox will be created. You can see if the user has been created on the [apache committers list page (http://people.apache.org/committer-index.html).&lt;/p>
&lt;h2 id="third-join-the-apache-developer-group">Third: Join The Apache Developer Group&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>1, login via the &lt;a href="https://id.apache.org/">Apache account tool&lt;/a>, when you login at the first time, you can select the &amp;ldquo;Change password?&amp;rdquo; checkbox to get the initial password. Then the initial password will be sent to the forward mailbox (the developer mail recorded in the project incubator proposal)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>2, about Apache mailbox: does not have its own mail content storage server. It needs to borrow the mail content storage and mail sending functions of other mail providers. In many voting sessions, Apache mailbox is recommended.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>There is a question about how to configure the apache.org mailbox forwarding function using other mailboxes.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>inbox: to receive mails that sent to &lt;a href="mailto:youer-id@apache.org">youer-id@apache.org&lt;/a> mailbox. The forward mailbox configured in the Apache account tool in the first step can use the forward mailbox to pick up incoming mail.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>the Outbox: emails sent out will show the sender as &lt;a href="mailto:your-id@apache.org">your-id@apache.org&lt;/a> account. Please refer to: &lt;a href="https://reference.apache.org/committer/email">set up Apache mailbox guide&lt;/a> and &lt;a href="http://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html">Gmail mailbox setting&lt;/a>. In other mailbox service settings, this forwarding mode is not easy to find. Gmail is the most convenient, which is recommended (no advertising).&lt;/p>
&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>
&lt;p>3, Modify the homepage URL option in the edit page, homepage link of your account can be added in &lt;a href="http://people.apache.org/committer-index.html">apache committer index page&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>4, Modify the GitHub account in the edit page, and an email will be sent to invite you to join the github.com/apache-commiiters group. Now, please learn from the way &lt;a href="http://www.apache.org/foundation/how-it-works.html#developers">ASF works&lt;/a> to do some basic preparation of ASF development.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="fourth-to-obtain-write-permission-of-the-project">Fourth: To obtain write permission of the project&lt;/h2>
&lt;p>Operation of the &lt;a href="https://gitbox.apache.org/setup/">GitBox account link tool&lt;/a>&lt;/p>
&lt;h3 id="1-apache-account-authorization">1, Apache account authorization&lt;/h3>
&lt;p>According to the prompt, the OAuth protocol of Apache account is authorized to login.&lt;/p>
&lt;h3 id="2-github-account-authorization">2, Github account authorization&lt;/h3>
&lt;p>According to the prompt, the OAuth protocol of Github account is authorized to login.&lt;/p>
&lt;h3 id="3-set-up-github-account-in-githubcom-two-factors-authorization-2fa">3, Set up GitHub account in github.com, two-factors authorization (2FA)&lt;/h3>
&lt;ul>
&lt;li>
&lt;ol>
&lt;li>install &amp;ldquo;Google Authenticator&amp;rdquo; app on your cell phone&lt;/li>
&lt;/ol>
&lt;/li>
&lt;li>2), Following the &lt;a href="https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication">authorized GitHub 2FA wiki&lt;/a>, you can operation step by step .&lt;/li>
&lt;/ul>
&lt;p>In the &lt;a href="https://github.com/settings/security">two-factors authorization authentication (2. Scan this barcode with your app.)&lt;/a> page, it is not recommended to select a two-dimensional code with a cell phone, because some of the cell phones will not be able to scan.&lt;/p>
&lt;p>Please open the cell phone &amp;ldquo;Google Authenticator&amp;rdquo; app, click &amp;ldquo;+&amp;rdquo; to select &amp;ldquo;input the secret key&amp;rdquo;: write the GitHub account in the account name input box. In your &amp;ldquo;secret key&amp;rdquo; input box, write the text of the &amp;ldquo;enter this text code&amp;rdquo; link in the open web page. After clicking &amp;ldquo;add&amp;rdquo; in app, 6 digit dynamic will be generated for this account. Write the 6 digit number to the text box in the web page, and then click &amp;ldquo;Enable&amp;rdquo;. In this way, the 2fa is set successfully.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>3), logout and login to Github again, and one more step will appear after entering user name and password. Fill in the 6 digit number dynamic password generated by the app&lt;/p>
&lt;/li>
&lt;li>
&lt;p>4),It will take about half an hour, and you will be notified by mail that you have joined the XX project-committers developer group. You can also check it in the [apache teams] (&lt;a href="https://github.com/orgs/apache/teams">https://github.com/orgs/apache/teams&lt;/a>) page yourself.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>5), After the 2fa has been submitted, you will have the permission check problem for the cloned projects. The solution is one of below two:&lt;/p>
&lt;/li>
&lt;li>
&lt;p>A. Apply for Access Token&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>When access token is generated on GitHub, the token where the instruction line needs a password is pasted.&lt;/p>
&lt;p>Refer to website &lt;a href="https://docs.github.com/en/repositories/creating-and-managing-repositories/troubleshooting-cloning-errors">referenced link one&lt;/a> and &lt;a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token">referenced link two&lt;/a>&lt;/p>
&lt;ul>
&lt;li>B. switch to SSH&lt;/li>
&lt;/ul>
&lt;p>ssh-keygen then paste the content in the pub file into GitHub.&lt;/p>
&lt;p>&lt;strong>Note&lt;/strong>: ensure that GitHub&amp;rsquo;s 2fa is &amp;ldquo;enabled&amp;rdquo;. When you set 2fa to &amp;ldquo;off&amp;rdquo;, it will be delisted by the corresponding Apache committer write permission group until you set it up again.&lt;/p>
&lt;h2 id="fifth-other">Fifth: other&lt;/h2>
&lt;h3 id="the-apache-way">The Apache way&lt;/h3>
&lt;p>See &lt;a href="http://apache.org/foundation/governance/">wiki&lt;/a>.&lt;/p>
&lt;p>The community is more important than the code
If not discussed in the community (mailing list), just as it did not happen.&lt;/p>
&lt;h3 id="add-your-name">Add your name&lt;/h3>
&lt;p>Please update Dubbo incubator status &lt;a href="https://incubator.apache.org/projects/dubbo.html">page&lt;/a> to add your name. See this &lt;a href="https://dubbo.apache.org/en/latest/contribution-guidelines/contributor/">guide&lt;/a> for instructions.&lt;/p>
&lt;p>Please update Dubbo official &lt;a href="https://dubbo.apache.org/en/latest/contribution-guidelines/committer">website&lt;/a> to update your name.&lt;/p>
&lt;h3 id="a-small-benefit">A small benefit&lt;/h3>
&lt;p>Jetbrains company gives Apache committers a small benefit, which is free to use IDEA&amp;rsquo;s full series products. The specific address is: &lt;a href="https://www.jetbrains.com/shop/eform/apache?Product=ALL">https://www.jetbrains.com/shop/eform/apache?Product=ALL&lt;/a>&lt;/p>
&lt;h3 id="reference-wiki">Reference wiki&lt;/h3>
&lt;p>&lt;a href="https://www.apache.org/dev/new-committers-guide.html">https://www.apache.org/dev/new-committers-guide.html&lt;/a>&lt;/p></description></item><item><title>Docs: Release Guide</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/release-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/release-guide_dev/</guid><description>
&lt;h2 id="understanding-the-apache-release-cycle">Understanding the Apache Release Cycle&lt;/h2>
&lt;p>In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository.&lt;/p>
&lt;p>Please refer to the following links for more information on ASF&amp;rsquo;s release guide:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="http://www.apache.org/dev/release-publishing">Apache Release Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/release.html">Apache Release Policy&lt;/a>&lt;/li>
&lt;li>&lt;a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="preparation-of-local-building-environment">Preparation of Local Building Environment&lt;/h2>
&lt;p>Mainly including the related preparation of signature utilities and Maven repository certification&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Install GPG,refer to &lt;a href="https://www.gnupg.org/download/index.html">https://www.gnupg.org/download/index.html&lt;/a>&lt;/p>
&lt;ul>
&lt;li>For example, in Mac OS&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ brew install gpg
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --version &lt;span style="color:#586e75">#check version,should be 2.x&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Generate the key with GPG&lt;/p>
&lt;ul>
&lt;li>Generate the key according to the prompt&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ gpg2 --full-gen-key
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gpg &lt;span style="color:#719e07">(&lt;/span>GnuPG&lt;span style="color:#719e07">)&lt;/span> 2.0.12; Copyright &lt;span style="color:#719e07">(&lt;/span>C&lt;span style="color:#719e07">)&lt;/span> &lt;span style="color:#2aa198">2009&lt;/span> Free Software Foundation, Inc.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This is free software: you are free to change and redistribute it.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>There is NO WARRANTY, to the extent permitted by law.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please &lt;span style="color:#719e07">select&lt;/span> what kind of key you want:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>1&lt;span style="color:#719e07">)&lt;/span> RSA and RSA &lt;span style="color:#719e07">(&lt;/span>default&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>2&lt;span style="color:#719e07">)&lt;/span> DSA and Elgamal
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>3&lt;span style="color:#719e07">)&lt;/span> DSA &lt;span style="color:#719e07">(&lt;/span>sign only&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#719e07">(&lt;/span>4&lt;span style="color:#719e07">)&lt;/span> RSA &lt;span style="color:#719e07">(&lt;/span>sign only&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Your selection? &lt;span style="color:#2aa198">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RSA keys may be between &lt;span style="color:#2aa198">1024&lt;/span> and &lt;span style="color:#2aa198">4096&lt;/span> bits long.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>What keysize &lt;span style="color:#719e07">do&lt;/span> you want? &lt;span style="color:#719e07">(&lt;/span>2048&lt;span style="color:#719e07">)&lt;/span> &lt;span style="color:#2aa198">4096&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Requested keysize is &lt;span style="color:#2aa198">4096&lt;/span> bits
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please specify how long the key should be valid.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">0&lt;/span> &lt;span style="color:#719e07">=&lt;/span> key does not expire
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt; &lt;span style="color:#719e07">=&lt;/span> key expires in n days
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;w &lt;span style="color:#719e07">=&lt;/span> key expires in n weeks
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;m &lt;span style="color:#719e07">=&lt;/span> key expires in n months
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;n&amp;gt;y &lt;span style="color:#719e07">=&lt;/span> key expires in n years
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Key is valid &lt;span style="color:#719e07">for&lt;/span>? &lt;span style="color:#719e07">(&lt;/span>0&lt;span style="color:#719e07">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Key does not expire at all
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Is this correct? &lt;span style="color:#719e07">(&lt;/span>y/N&lt;span style="color:#719e07">)&lt;/span> y
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>GnuPG needs to construct a user ID to identify your key.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Real name: Robert Burrell Donkin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Email address: rdonkin@apache.org
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Comment: CODE SIGNING KEY
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You selected this USER-ID:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">&amp;#34;Robert Burrell Donkin (CODE SIGNING KEY) &amp;lt;rdonkin@apache.org&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Change &lt;span style="color:#719e07">(&lt;/span>N&lt;span style="color:#719e07">)&lt;/span>ame, &lt;span style="color:#719e07">(&lt;/span>C&lt;span style="color:#719e07">)&lt;/span>omment, &lt;span style="color:#719e07">(&lt;/span>E&lt;span style="color:#719e07">)&lt;/span>mail or &lt;span style="color:#719e07">(&lt;/span>O&lt;span style="color:#719e07">)&lt;/span>kay/&lt;span style="color:#719e07">(&lt;/span>Q&lt;span style="color:#719e07">)&lt;/span>uit? O
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>You need a Passphrase to protect your secret key. &lt;span style="color:#586e75"># enter the password, which will be used frequently when packaging.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>View key id&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ gpg --list-keys
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pub rsa4096/28681CB1 2018-04-26 &lt;span style="color:#586e75"># 28681CB1 is the key id&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uid &lt;span style="color:#719e07">[&lt;/span>ultimate&lt;span style="color:#719e07">]&lt;/span> liujun &lt;span style="color:#719e07">(&lt;/span>apache-dubbo&lt;span style="color:#719e07">)&lt;/span> &amp;lt;liujun@apache.org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sub rsa4096/D3D6984B 2018-04-26
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">########### Note: Different diaplay for different version.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --list-keys
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pub rsa4096 2018-11-12 &lt;span style="color:#719e07">[&lt;/span>SC&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> 63AAE9838F4A303E40BAF5FEA3A1CA7A5D4A3981 &lt;span style="color:#586e75"># Last 8 character(5D4A3981) as key id,it will be used when send public key to keyserver&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uid &lt;span style="color:#719e07">[&lt;/span> 绝对 &lt;span style="color:#719e07">]&lt;/span> Victory Cao &lt;span style="color:#719e07">(&lt;/span>CODE SIGNING KEY&lt;span style="color:#719e07">)&lt;/span> &amp;lt;victory@apache.org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sub rsa4096 2018-11-12 &lt;span style="color:#719e07">[&lt;/span>E&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># send public key to keyserver via key id &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># Here pgpkeys.mit.edu is a random selection of keyserver. Any key server from the list https://sks-keyservers.net/status/ is acceptable because they are automatically synchronized.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>If there are multiple public keys,you can set the default key&lt;/li>
&lt;/ul>
&lt;p>~/.gnupg/gpg.conf&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span># If you have more than 1 secret key in your keyring, you may want to
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span># uncomment the following option and set your preferred keyid.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>default-key 28681CB1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>If there are multiple public keys, you can also delete unuseful key:&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">### Delete the private key first, then delete the public key.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --yes --delete-secret-keys shenglicao2@gmail.com &lt;span style="color:#586e75">### indicate email address &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>config your fingerprint.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75">### Show fingerprint info:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ gpg --fingerprint liujun
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>pub rsa4096 2019-10-17 &lt;span style="color:#719e07">[&lt;/span>SC&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#2aa198">1376&lt;/span> A2FF 67E4 C477 &lt;span style="color:#2aa198">5739&lt;/span> 09BD 7DB6 &lt;span style="color:#2aa198">8550&lt;/span> D366 E4C0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>uid &lt;span style="color:#719e07">[&lt;/span>ultimate&lt;span style="color:#719e07">]&lt;/span> liujun &lt;span style="color:#719e07">(&lt;/span>CODE SIGNING KEY&lt;span style="color:#719e07">)&lt;/span> &amp;lt;liujun@apache.org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sub rsa4096 2019-10-17 &lt;span style="color:#719e07">[&lt;/span>E&lt;span style="color:#719e07">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Save the fingerprint, as above &lt;code>1376 A2FF 67E4 C477 5739 09BD 7DB6 8550 D366 E4C0&lt;/code>,
to the field &lt;code>OpenPGP Public Key Primary Fingerprint&lt;/code> in you profile page at &lt;a href="https://id.apache.org">https://id.apache.org&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set up Apache central repository.&lt;/p>
&lt;ul>
&lt;li>The parent pom of Dubbo project is apache pom&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;parent&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;groupId&amp;gt;&lt;/span>org.apache&lt;span style="color:#268bd2">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;artifactId&amp;gt;&lt;/span>apache&lt;span style="color:#268bd2">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;version&amp;gt;&lt;/span>19&lt;span style="color:#268bd2">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/parent&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>
&lt;p>Add the following contents to .m2/settings.xml&lt;/p>
&lt;p>Enter the passwords after
encrypting by &lt;a href="http://maven.apache.org/guides/mini/guide-encryption.html">maven-encryption-plugin&lt;/a>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;settings&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;servers&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">&amp;lt;!-- To publish a snapshot of some part of Maven --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;id&amp;gt;&lt;/span>apache.snapshots.https&lt;span style="color:#268bd2">&amp;lt;/id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;username&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- YOUR APACHE LDAP USERNAME --&amp;gt;&lt;/span> &lt;span style="color:#268bd2">&amp;lt;/username&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;password&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&amp;gt;&lt;/span> &lt;span style="color:#268bd2">&amp;lt;/password&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">&amp;lt;!-- To stage a release of some part of Maven --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;id&amp;gt;&lt;/span>apache.releases.https&lt;span style="color:#268bd2">&amp;lt;/id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;username&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- YOUR APACHE LDAP USERNAME --&amp;gt;&lt;/span> &lt;span style="color:#268bd2">&amp;lt;/username&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;password&amp;gt;&lt;/span> &lt;span style="color:#586e75">&amp;lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&amp;gt;&lt;/span> &lt;span style="color:#268bd2">&amp;lt;/password&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">&amp;lt;!-- gpg passphrase used when generate key --&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;id&amp;gt;&lt;/span>gpg.passphrase&lt;span style="color:#268bd2">&amp;lt;/id&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;passphrase&amp;gt;&lt;/span>&lt;span style="color:#586e75">&amp;lt;!-- yourKeyPassword --&amp;gt;&lt;/span>&lt;span style="color:#268bd2">&amp;lt;/passphrase&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/server&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/servers&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">&amp;lt;/settings&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;h2 id="pack--upload">Pack &amp;amp; Upload&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Pull the new branch from the master branch as the release branch. If you want to release the ${release_version} version now, pull the new branch ${release_version}-release from 2.6.x. Then the
modifications and taggings related to ${release_version} Release Candidates are applied to ${release_version}-release branch, and is merged into the master branch after the final release.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>First of all, verify that the maven component packing, source packing, signature, etc are working properly on the ${release_version}-release branch.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn clean install -Papache-release
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mvn deploy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ol>
&lt;p>This push the snapshot package to the maven central repository.&lt;/p>
&lt;ol start="3">
&lt;li>
&lt;p>&lt;del>Release with maven-release-plugin&lt;/del> (&lt;code>Deprecated&lt;/code>,Skip this step and refer to next step)&lt;/p>
&lt;ul>
&lt;li>&lt;del>verify with dryRun&lt;/del>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn release:prepare -Prelease -Darguments&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;-Dmaven.test.skip=true&amp;#34;&lt;/span> -DautoVersionSubmodules&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">true&lt;/span> -Dusername&lt;span style="color:#719e07">=&lt;/span>YOUR GITHUB ID -DdryRun&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>&lt;del>After verification, run release:prepare&lt;/del>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn release:clean
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mvn release:prepare -Prelease -Darguments&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;-Dmaven.test.skip=true&amp;#34;&lt;/span> -DautoVersionSubmodules&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">true&lt;/span> -Dusername&lt;span style="color:#719e07">=&lt;/span>YOUR GITHUB ID -DpushChanges&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
&lt;p>If you are promted to input password for pushing to GitHub (basically including adding new commits and tags), do not input your login password of GitHub. Use &lt;code>Personal access tokens&lt;/code> instead. You can go to &lt;a href="https://github.com/settings/profile">https://github.com/settings/profile&lt;/a>, click &lt;code>Developer settings&lt;/code> -&amp;gt; &lt;code>Personal access tokens&lt;/code>, and generate a new token if not. Please refer to this &lt;a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token">guide&lt;/a> for more infomation.
you need to choose the release artifactId, next artifactId and the release tag, the default tag is dubbo-parent-xxxx, you need to change it to dubbo-xxxx&lt;/p>
&lt;/blockquote>
&lt;p>After executing the above commands, you will find that:&lt;/p>
&lt;ol>
&lt;li>source-release.zip and bin-release.zip are generated under dubbo-distribution directory, please unzip it and check the file structure&lt;/li>
&lt;li>&lt;code>-DpushChanges=false&lt;/code> tells maven not to push the commits and tags to the remote repostiroy. If not specified, the version tag will be pushed to github repository, you will see a commit called &lt;code>[maven-release-plugin] prepare release dubbo-x.x.x&lt;/code> added.&lt;/li>
&lt;li>The branch version is upgraded to ${release_version+1}-SNAPSHOT automatically. If &lt;code>-DpushChanges=true&lt;/code> is specified, the modifications will be pushed to the remote repository, you will see a commit called &lt;code>[maven-release-plugin] prepare for next development iteration&lt;/code> added.&lt;/li>
&lt;/ol>
&lt;p>If &lt;code>-DpushChanges=false&lt;/code> is specified, you will have to manually push the commit to remote repository before go to next step.&lt;/p>
&lt;ul>
&lt;li>&lt;del>Run release:perform&lt;/del>&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn release:perform -Prelease -Darguments&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#2aa198">&amp;#34;-Dmaven.test.skip=true&amp;#34;&lt;/span> -DautoVersionSubmodules&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">true&lt;/span> -Dusername&lt;span style="color:#719e07">=&lt;/span>YOUR GITHUB ID
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Maven will download the source code from the tag you just pushed, compile it, and deploy to remote maven repsoitry in staging state.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h3 id="use-mvn-deploy-to-deploy">use &lt;code>mvn deploy&lt;/code> to deploy&lt;/h3>
&lt;blockquote>
&lt;p>Requirement:maven 3.5+&lt;/p>
&lt;/blockquote>
&lt;p>modify pom version from 2.7.x-SNAPSHOT to 2.7.x . You can search the full-text in the dubbo project.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn clean install -Prelease
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mvn deploy -Prelease -DskipTests
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After this, maven will deploy jar to remote maven repsoitry in staging state.&lt;/p>
&lt;h3 id="note">Note&lt;/h3>
&lt;blockquote>
&lt;p>When you deploy the package into repository, it will be interrupted for network. So you must restart to desploy.&lt;br>
The problem is that missing package occurred many times at deploying. So you should check the quantity of package, especially parent package.&lt;/p>
&lt;/blockquote>
&lt;h2 id="prepare-apache-release">Prepare Apache Release&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Prepare the svn local environment (Apache hosting the release content of project by svn)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Checkout dubbo to local directory&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ svn checkout https://dist.apache.org/repos/dist/dev/dubbo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Assume that the local directory is &lt;code>~/apache/dubbo&lt;/code>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>The current release version is ${release_version}, new directory&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#b58900">cd&lt;/span> ~/apache/dubbo &lt;span style="color:#586e75"># dubbo svn root directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ mkdir &lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Add public key to &lt;a href="https://dist.apache.org/repos/dist/dev/dubbo/KEYS">KEYS&lt;/a> file if you are the first time to be a release manager. KEYS is mainly used to allow people who participate in the voting to be imported locally to verify the correctness of the sign.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#719e07">(&lt;/span>gpg --list-sigs &amp;lt;your name&amp;gt; &lt;span style="color:#719e07">&amp;amp;&amp;amp;&lt;/span> gpg --armor --export &amp;lt;your name&amp;gt;&lt;span style="color:#719e07">)&lt;/span> &amp;gt;&amp;gt; KEYS
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For more information on how to get your key id, please refer to this &lt;a href="https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key">guide&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Copy the source.zip package from the Dubbo root directory to the svn local repository dubbo/${release_version}&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Generate sha512 sign&lt;/p>
&lt;p>For source-release.zip&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ shasum -a &lt;span style="color:#2aa198">512&lt;/span> apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-source-release.zip &amp;gt;&amp;gt; apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-source-release.zip.sha512
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For bin-release.zip&lt;/p>
&lt;p>Please add &lt;code>-b&lt;/code> paramter when generating sha512 for bin-release.zip, which indicates it is a binary file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ shasum -b -a &lt;span style="color:#2aa198">512&lt;/span> apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-bin-release.zip &amp;gt;&amp;gt; apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-bin-release.zip.sha512
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You should generate something like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>b8f13d1df6d6c9a1facc72fafc00b2d22bea1e600517c507467d8fca2f776a7a3877101742da53114bfa629ca5b941eb4d9ef989de43f0833e2a794e7ccf5c8a *apache-dubbo-spring-boot-project-2.7.0-bin-release.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Note there is a &lt;code>*&lt;/code> sign before the file name.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If the binary release is accompanied with the source release. Run the following command in the dubbo-distribution module:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn install
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Go to target directory, copy bin-release.zip and bin-release.zip.asc to svn local repository dubbo/${release_version}, and refer to step 6 to generate sha512 sign.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Commit to Apache svn&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ svn status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ svn commit -m &lt;span style="color:#2aa198">&amp;#39;prepare for ${release_version} RC1&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Close the maven staging repository&lt;/p>
&lt;p>This step is required when prepare for a 2.7.0+ release, where package name has been changed to org.apache. Before that, please make sure all the maven artifacts look good. Login to &lt;a href="http://repository.apache.org">http://repository.apache.org&lt;/a>, click the &lt;code>Staging repositories&lt;/code> on the left bar, search with keyword Dubbo, and you will see a list of repositories. Find the one you just uploaded, and then click the close button in the top area. This will do some sannity check, such as gpg signature check, and checksum check. After that, a link will be shown in the summary tab in the bottom. Please copy that link, it will be used for release vote. The link should look like this: &lt;code>https://repository.apache.org/content/repositories/orgapachedubbo-1015&lt;/code>.&lt;/p>
&lt;blockquote>
&lt;p>Please be aware that it may fail when you close the repository, this is normally due to network issues, please try again if it failed. You can confirm it by clicking the &lt;code>Activiey&lt;/code> tab next to &lt;code>Summary&lt;/code>.&lt;/p>
&lt;/blockquote>
&lt;/li>
&lt;/ol>
&lt;h2 id="verify-release-candidates">Verify Release Candidates&lt;/h2>
&lt;p>&lt;strong>A full check list can be found &lt;a href="https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist">here&lt;/a>&lt;/strong>&lt;/p>
&lt;p>The verification link includes but is not limited to the following contents and forms:&lt;/p>
&lt;h3 id="check-signatures-and-hashes-are-good">Check signatures and hashes are good&lt;/h3>
&lt;h4 id="check-the-sha512-sum">check the sha512 sum&lt;/h4>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>$ shasum -c apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-source-release.zip.sha512
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>$ shasum -c apache-dubbo-&lt;span style="color:#2aa198">${&lt;/span>&lt;span style="color:#268bd2">release_version&lt;/span>&lt;span style="color:#2aa198">}&lt;/span>-bin-release.zip.sha512
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h4 id="check-the-gpg-signarure">check the gpg signarure&lt;/h4>
&lt;p>If it&amp;rsquo;s your first time verify a release candidte, you should import public keys first.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span> $ curl https://dist.apache.org/repos/dist/dev/dubbo/KEYS &amp;gt;&amp;gt; KEYS &lt;span style="color:#586e75"># download public keys to local directory&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $ gpg --import KEYS &lt;span style="color:#586e75"># import keys&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> $ gpg -—edit-key liujun
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;gt; trust &lt;span style="color:#586e75"># type trust command&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Now, you can verify signature with command&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>gpg --verify apache-dubbo-2.6.3-source-release.zip.asc apache-dubbo-2.6.3-source-release.zip
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>gpg --verify apache-dubbo-2.6.3-bin-release.zip.asc apache-dubbo-2.6.3-bin-release.zip
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="check-source-release-file-content">Check source release file content&lt;/h3>
&lt;p>Unzip apache-dubbo-${release_version}-source-release.zip to the default directory and check the following:&lt;/p>
&lt;ul>
&lt;li>DISCLAIMER exists&lt;/li>
&lt;li>LICENSE and NOTICE exists and contents are good&lt;/li>
&lt;li>All files and no binary files exist&lt;/li>
&lt;li>All files has standard ASF License header&lt;/li>
&lt;li>Can compile from source&lt;/li>
&lt;li>All unit tests can pass
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>mvn clean &lt;span style="color:#b58900">test&lt;/span> &lt;span style="color:#586e75"># This will run all unit tests&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># you can also open rat and style plugin to check if every file meets requirements.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>mvn clean &lt;span style="color:#b58900">test&lt;/span> -Drat.skip&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">false&lt;/span> -Dcheckstyle.skip&lt;span style="color:#719e07">=&lt;/span>&lt;span style="color:#b58900">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>Release candidates match with corresponding tags, you can find tag link and hash in vote email.
&lt;ul>
&lt;li>check the version number in pom.xml are the same&lt;/li>
&lt;li>check there are no extra files or directories in the source package, for example, no empty directories or useless log files.&lt;br>
&lt;code>diff -r rc_dir tag_dir&lt;/code>&lt;/li>
&lt;li>check the top n tag commits, dive into the related files and check if the source package has the same changes&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;h3 id="check-third-party-dependencies">check third party dependencies&lt;/h3>
&lt;p>According to ASF policy, any &lt;a href="https://www.apache.org/legal/resolved.html#what-can-we-not-include-in-an-asf-project-category-x">Category X&lt;/a> dependency can not be included in ASF product, this includes common LGPL/GPL licensed dependencies. Even transitive dependencies are not allowed. Therefore we need to run the following command to ensure no such dependencies are included.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sh" data-lang="sh">&lt;span style="display:flex;">&lt;span>mvn license:add-third-party -Dlicense.useMissingFile
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>find . -name THIRD-PARTY.txt | xargs grep -E &lt;span style="color:#2aa198">&amp;#39;GPL|General Public License&amp;#39;&lt;/span> | grep -v Apache | grep -v MIT | grep -v CDDL
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If one dependency is dual/multiple licensed, just choose the most permissive one.&lt;/p>
&lt;p>You can refer to this article : &lt;a href="https://apache.org/legal/resolved.html">ASF 3RD PARTY LICENSE POLICY&lt;/a>&lt;/p>
&lt;h3 id="check-binary-distribution-file-content">Check binary distribution file content&lt;/h3>
&lt;p>Unzip apache-dubbo-${release_version}-bin-release.zip and check:&lt;/p>
&lt;ul>
&lt;li>Check signatures are good&lt;/li>
&lt;li>LICENSE and NOTICE exists and contents are good&lt;/li>
&lt;/ul>
&lt;p>Note that if the binary distribution contains third party files, you may need to update LICENSE file by adding the 3rd party license files. If these dependency is Apache License 2.0, and it contains NOTICE file, you may also need to update NOTICE file as well.&lt;/p>
&lt;h2 id="release-vote">Release vote&lt;/h2>
&lt;p>The voting just only one round:&lt;/p>
&lt;p>Dubbo community votes and sends the voting email to &lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a>. After reviewing by community developers and winning 3 binding tickets that agree to release, you can go to the next stage of voting.&lt;/p>
&lt;p>The mail template for Apache Dubbo vote:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-tex" data-lang="tex">&lt;span style="display:flex;">&lt;span>Hello Dubbo Community,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>This is a call for vote to release Apache Dubbo version 2.7.2.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The release candidates:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://dist.apache.org/repos/dist/dev/dubbo/2.7.2/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The staging repo:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://repository.apache.org/content/repositories/orgapachedubbo-1005
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Git tag for the release:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://github.com/apache/dubbo/tree/dubbo-2.6.2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Hash for the release tag:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>afab04c53edab38d52275d2a198ea1aff7a4f41e
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Release Notes:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://github.com/apache/dubbo/releases/tag/untagged-4775c0a22c60fca55118
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The artifacts have been signed with Key : 28681CB1, which can be found in the keys file:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>https://dist.apache.org/repos/dist/dev/dubbo/KEYS
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The vote will be open for at least 72 hours or until necessary number of votes are reached.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Please vote accordingly:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[ ] +1 approve
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[ ] +0 no opinion
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[ ] -1 disapprove with the reason
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Thanks,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The Apache Dubbo Team
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The mail template to announce the vote result:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>We’ve received 3 +1 binding votes and one +1 non-binding vote:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+1 binding, Ian Luo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+1 binding, Huxing Zhang
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+1 binding, Jun Liu
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>+1 non-binding, Jerrick
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>I will release this version today.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Best regards,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The Apache Dubbo Team
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="official-release">Official Release&lt;/h2>
&lt;p>When the release vote has passed,&lt;/p>
&lt;ol>
&lt;li>Add the release files to &lt;a href="https://dist.apache.org/repos/dist/release/dubbo">official release directory&lt;/a>&lt;/li>
&lt;li>Remove the release files in &lt;a href="https://dist.apache.org/repos/dist/dev/dubbo">dev directory&lt;/a>&lt;/li>
&lt;li>Remove the the release file for the previous release under &lt;a href="https://dist.apache.org/repos/dist/release/dubbo/">official release directory&lt;/a>, which will be archived and can be found &lt;a href="https://archive.apache.org/dist/dubbo/">here&lt;/a>&lt;/li>
&lt;li>Publish &lt;a href="https://github.com/apache/dubbo/releases">release notes&lt;/a> on Github.&lt;/li>
&lt;li>Update the recommend dependency on &lt;a href="https://github.com/apache/dubbo#maven-dependency">Github&lt;/a> to the latest version, also update the version in other place if necessary.&lt;/li>
&lt;li>Add the download link to official website &lt;a href="https://dubbo.apache.org/en/blog/2020/05/18/past-releases/">https://dubbo.apache.org/en/blog/2020/05/18/past-releases/&lt;/a>, using the ASF mirror system. The latest release download link should be something like &lt;a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/$VERSION/apache-dubbo-$VERSION-source-release.zip">this&lt;/a>. The download link for the previous release version should be changed like &lt;code>https://archive.apache.org/dist/dubbo/$VERSION/apache-dubbo-$VERSION-bin-release.zip&lt;/code>. Please refer to the &lt;a href="https://dubbo.apache.org/en/blog/2020/05/18/past-releases/">download page&lt;/a> for more details.&lt;/li>
&lt;li>Make sure all the commits in the release branch are merged into master branch, and then remove the remote release branch. For example: &lt;code>git push origin --delete 2.7.0-release&lt;/code>&lt;/li>
&lt;li>Send mail to &lt;a href="mailto:dev@dubbo.apache.org">dev@dubbo.apache.org&lt;/a> , notify the community that the release is completed.
The mail template to announce release:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>Hello Community,
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>The Apache Dubbo team is pleased to announce that the
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>2.6.6 has just been released.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Apache Dubbo™ is a high-performance, java based, open source
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>RPC framework. Dubbo offers three key functionalities, which include
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>interface based remote call, fault tolerance &amp;amp; load balancing, and
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>automatic service registration &amp;amp; discovery.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Both the source release[1] and the maven binary release[2] are available
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>now, you can also find the detailed release notes here[3].
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>If you have any usage questions, or have problems when upgrading or find
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>any problems about enhancements included in this release, please don’t
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>hesitate to let us know by sending feedback to this mailing list or filing
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>an issue on GitHub[4].
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[1] https://dubbo.apache.org/en/blog/2020/05/18/past-releases/
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[2] https://repo1.maven.org/maven2/org/apache/dubbo/dubbo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[3] https://github.com/apache/dubbo/releases
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>[4] https://github.com/apache/dubbo/issues
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="complete-maven-convenient-binary-release">Complete Maven Convenient Binary release&lt;/h2>
&lt;p>&lt;strong>&lt;a href="https://repository.apache.org/">repository.apache.org&lt;/a> The permissions of the nexus repository have been applied, see &lt;a href="https://issues.apache.org/jira/browse/INFRA-16451">jira&lt;/a>。&lt;/strong>&lt;/p>
&lt;p>To release the maven artifacts, go to &lt;a href="https://repository.apache.org">repository.apache.org&lt;/a>, and choose the staging repository, click the release button. Wait for a moment and verify it at &lt;a href="https://repository.apache.org/content/repositories/releases/org/apache/dubbo/">here&lt;/a>, make sure your artifacts are there and correct. It will take some time to sync to maven central repository. You can verify it at &lt;a href="https://repo.maven.apache.org/maven2/org/apache/dubbo">here&lt;/a>&lt;/p>
&lt;h2 id="faq">FAQ&lt;/h2>
&lt;h4 id="gpg-signing-failed-inappropriate-ioctl-for-device">gpg: signing failed: Inappropriate ioctl for device&lt;/h4>
&lt;p>If you&amp;rsquo;ve encountered this error, try the following commands:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-fallback" data-lang="fallback">&lt;span style="display:flex;">&lt;span>export GPG_TTY=$(tty)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Docs: Label an Issue</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/label-an-issue-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/label-an-issue-guide_dev/</guid><description>
&lt;p>If you are handling an issue, remember to &lt;strong>mark the issue cearly with one or more labels&lt;/strong> whenever you think it&amp;rsquo;s meaningful. With labels on, other developers can easily recognize problems, classify them or track progress.&lt;/p>
&lt;p>For issues or pull requests that need coding and further version release to fix, you should always &lt;strong>mark it with a &lt;a href="https://github.com/apache/dubbo/milestones">milestone&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>Some frequently used labels:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Help Wanted&lt;/p>
&lt;ul>
&lt;li>help wanted&lt;/li>
&lt;li>good first issue&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Prority&lt;/p>
&lt;ul>
&lt;li>priority/blocker&lt;/li>
&lt;li>priority/high&lt;/li>
&lt;li>priority/low&lt;/li>
&lt;li>priority/normal&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Status&lt;/p>
&lt;ul>
&lt;li>status/need-triage&lt;/li>
&lt;li>status/DO-NOT-MERGE&lt;/li>
&lt;li>status/READY-TO-MERGE&lt;/li>
&lt;li>status/invalid&lt;/li>
&lt;li>status/wontfix&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>Type&lt;/p>
&lt;ul>
&lt;li>type/bug&lt;/li>
&lt;li>type/documentation&lt;/li>
&lt;li>type/enhancement&lt;/li>
&lt;li>type/feature&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul></description></item><item><title>Docs: Website Guide</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/website-guide_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/website-guide_dev/</guid><description>
&lt;ol>
&lt;li>The website repository of Apache Dubbo is &lt;a href="https://github.com/apache/dubbo-website">https://github.com/apache/dubbo-website&lt;/a>&lt;/li>
&lt;li>After building the website, it&amp;rsquo;ll be published to dubbo.apache.org automatically, you can also trigger it manually via &lt;a href="https://selfserve.apache.org">https://selfserve.apache.org&lt;/a> (need to login with Apache account)&lt;/li>
&lt;/ol></description></item><item><title>Docs: Apache Official Dubbo Page Maintenance</title><link>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/apache-dubbo-page_dev/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/docs/contribution-guidelines/committer/apache-dubbo-page_dev/</guid><description>
&lt;p>Apache has an official website that maintains information about all incubation projects.
Each incubation project has an information page under this website.
Dubbo&amp;rsquo;s information page address is &lt;a href="https://incubator.apache.org/projects/dubbo.html">https://incubator.apache.org/projects/dubbo.html&lt;/a>.&lt;/p>
&lt;p>When the project has undergone major changes, such as the addition of a new committer,
the election of a new PMC, or a new version of Release, etc, these updates need to be maintained on this page.
The project address for this official website is
&lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk">https://svn.apache.org/repos/asf/incubator/public/trunk&lt;/a>.&lt;/p>
&lt;p>Here&amp;rsquo;s how to maintain this page:&lt;/p>
&lt;ol>
&lt;li>Install the SVN. If it is a Mac OS X system or a Linux system, it comes with SVN. If it is a Windows system,
please install SVN first.&lt;/li>
&lt;li>Check out the &lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk">project&lt;/a> with SVN.&lt;/li>
&lt;li>Modify the content/projects/dubbo.xml file and save it.&lt;/li>
&lt;li>Install ANT. And execute the ant command in the trunk directory to build.&lt;/li>
&lt;li>After the build is complete, open the target/site/projects/dubbo.html file with your browser to see if the changes take effect.&lt;/li>
&lt;li>Use the commit command of SVN to submit the dubbo.xml file to the server, and do not submit the dubbo.html file
(because the server will automatically build it at regular intervals).
This process will ask for the Apache id and password.&lt;/li>
&lt;/ol>
&lt;p>References:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="http://incubator.apache.org/guides/website.html">http://incubator.apache.org/guides/website.html&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://svn.apache.org/repos/asf/incubator/public/trunk/README.txt">https://svn.apache.org/repos/asf/incubator/public/trunk/README.txt&lt;/a>&lt;/li>
&lt;/ol></description></item></channel></rss>