| </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please </span><span class="token keyword" style="font-style:italic">select</span><span class="token plain"> what kind of key you want:</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> RSA and RSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">default</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> DSA and Elgamal</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">3</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> DSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">sign only</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> RSA </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">sign only</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">14</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> Existing key from card</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Your selection? </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 1 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">RSA keys may be between </span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain"> and </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> bits long.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">What keysize </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> you want? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">2048</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 4096 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Requested keysize is </span><span class="token number" style="color:rgb(247, 140, 108)">4096</span><span class="token plain"> bits</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Please specify how long the key should be valid.</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key does not expire</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)"><</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n days</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)"><</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain">w </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n weeks</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)"><</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain">m </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n months</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)"><</span><span class="token plain">n</span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain">y </span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain"> key expires </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> n years</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key is valid for? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter 0 here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Key does not expire at all</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">Is this correct? </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">y/N</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> y </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># enter y here</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"> |
| </span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Send public key to keyserver via key id</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ gpg --keyserver pgpkeys.mit.edu --send-key </span><span class="token operator" style="color:rgb(137, 221, 255)"><</span><span class="token plain">key id</span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Among them, pgpkeys.mit.edu is a randomly selected keyserver, and the keyserver list is: https://sks-keyservers.net/status/, which is automatically synchronized with each other, you can choose any one.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="14-check-whether-the-key-is-created-successfully"></a>1.4 Check whether the key is created successfully<a class="hash-link" href="#14-check-whether-the-key-is-created-successfully" title="Direct link to heading">#</a></h3><p>Through the following URL, use the email to check whether the upload is successful or not. It will take about a minute to find out. When searching, check the show full-key hashes under advance on <a href="http://keys.gnupg.net" target="_blank" rel="noopener noreferrer">http://keys.gnupg.net</a>.</p><p>The query results are as follows:</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="15-add-your-gpg-public-key-to-the-keys-file"></a>1.5 Add your gpg public key to the KEYS file<a class="hash-link" href="#15-add-your-gpg-public-key-to-the-keys-file" title="Direct link to heading">#</a></h3><blockquote><p>SVN is required for this step</p></blockquote><p>The svn library of the DEV branch is <a href="https://dist.apache.org/repos/dist/dev/submarine" target="_blank" rel="noopener noreferrer">https://dist.apache.org/repos/dist/dev/submarine</a></p><p>The SVN library of the Release branch is <a href="https://dist.apache.org/repos/dist/release/submarine" target="_blank" rel="noopener noreferrer">https://dist.apache.org/repos/dist/release/submarine</a></p><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="151-add-the-public-key-to-keys-in-the-dev-branch-to-release-the-rc-version"></a>1.5.1 Add the public key to KEYS in the dev branch to release the RC version<a class="hash-link" href="#151-add-the-public-key-to-keys-in-the-dev-branch-to-release-the-rc-version" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ ~ svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># This step is relatively slow, and all versions will be copied. If the network is disconnected, use svn cleanup to delete the lock and re-execute it, and the transfer will be resumed.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ ~ </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine-dist-dev</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-dev ~ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">gpg --list-sigs YOUR_NAME@apache.org </span><span class="token operator" style="color:rgb(137, 221, 255)">&&</span><span class="token plain"> gpg --export --armor YOUR_NAME@apache.org</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">>></span><span class="token plain"> KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-dev ~ svn </span><span class="token function" style="color:rgb(130, 170, 255)">add</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If there is a KEYS file before, it is not needed.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-dev ~ svn ci -m </span><span class="token string" style="color:rgb(195, 232, 141)">"add gpg key for YOUR_NAME"</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Next, you will be asked to enter a username and password, just use your apache username and password.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h4><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="152-add-the-public-key-to-keys-in-the-release-branch-to-release-the-official-version"></a>1.5.2 Add the public key to KEYS in the release branch to release the official version<a class="hash-link" href="#152-add-the-public-key-to-keys-in-the-release-branch-to-release-the-official-version" title="Direct link to heading">#</a></h4><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ ~ svn co https://dist.apache.org/repos/dist/release/submarine /tmp/submarine-dist-release</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ ~ </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> submarine-dist-release</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-release ~ </span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">gpg --list-sigs YOUR_NAME@apache.org </span><span class="token operator" style="color:rgb(137, 221, 255)">&&</span><span class="token plain"> gpg --export --armor YOUR_NAME@apache.org</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">>></span><span class="token plain"> KEYS </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Append the KEY you generated to the file KEYS, it is best to check if it is correct after appending.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-release ~ svn </span><span class="token function" style="color:rgb(130, 170, 255)">add</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">.</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If there is a KEYS file before, it is not needed.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">➜ submarine-dist-release ~ svn ci -m </span><span class="token string" style="color:rgb(195, 232, 141)">"add gpg key for YOUR_NAME"</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Next, you will be asked to enter a username and password, just use your apache username and password.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="16-upload-gpg-public-key-to-github-account"></a>1.6 Upload GPG public key to Github account<a class="hash-link" href="#16-upload-gpg-public-key-to-github-account" title="Direct link to heading">#</a></h3><ol><li>Go to <a href="https://github.com/settings/keys" target="_blank" rel="noopener noreferrer">https://github.com/settings/keys</a> and add GPG KEYS.</li><li>If you find "unverified" is written after the key after adding it, remember to bind the mailbox used in the GPG key to your github account (<a href="https://github.com/settings/emails" target="_blank" rel="noopener noreferrer">https://github.com/settings/emails</a>).</li></ol><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="2-set-maven-settings"></a>2. Set maven settings<a class="hash-link" href="#2-set-maven-settings" title="Direct link to heading">#</a></h2><p><strong>Skip if it has already been set</strong></p><p>In the maven configuration file ~/.m2/settings.xml, add the following <code><server></code> item</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-xml codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token prolog"><?xml version="1.0" encoding="UTF-8"?></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">settings</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name namespace" style="color:rgb(178, 204, 214)">xsi:</span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">schemaLocation</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">xmlns</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">http://maven.apache.org/SETTINGS/1.1.0</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag" style="color:rgb(255, 85, 114)"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token tag" style="color:rgb(255, 85, 114)"> </span><span class="token tag attr-name namespace" style="color:rgb(178, 204, 214)">xmlns:</span><span class="token tag attr-name" style="color:rgb(255, 203, 107)">xsi</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">=</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag attr-value" style="color:rgb(255, 85, 114)">http://www.w3.org/2001/XMLSchema-instance</span><span class="token tag attr-value punctuation" style="color:rgb(199, 146, 234)">"</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">servers</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"><!-- Apache Repo Settings --></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">server</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">apache.snapshots.https</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">username</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">{user-id}</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">username</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">password</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">{user-pass}</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">password</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">server</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">server</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">apache.releases.https</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">username</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">{user-id}</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">username</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">password</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">{user-pass}</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">password</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">server</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">servers</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">profiles</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">profile</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">apache-release</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">id</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">properties</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.keyname</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">Your KEYID</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.keyname</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"><!-- Your GPG Keyname here --></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"><!-- Use an agent: Prevents being asked for the password during the build --></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.useagent</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">true</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.useagent</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"><</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.passphrase</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain">Your password of the private key</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">gpg.passphrase</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">properties</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">profile</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">profiles</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token tag punctuation" style="color:rgb(199, 146, 234)"></</span><span class="token tag" style="color:rgb(255, 85, 114)">settings</span><span class="token tag punctuation" style="color:rgb(199, 146, 234)">></span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="3-compile-and-package"></a>3. Compile and package<a class="hash-link" href="#3-compile-and-package" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="31-prepare-a-branch"></a>3.1 Prepare a branch<a class="hash-link" href="#31-prepare-a-branch" title="Direct link to heading">#</a></h3><ul><li><p>Pull the new branch from the main branch as a release branch, release-${release_version}</p></li><li><p>Update <code>CHANGES.md</code></p></li><li><p>Check whether the code is normal, including successful compilation, all unit tests, successful RAT check, etc.</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># build check</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ mvn clean package -Dmaven.javadoc.skip</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">true</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># RAT check</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ mvn apache-rat:check</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div></li><li><p>Change the version number</p></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="32-create-the-tag"></a>3.2 Create the tag<a class="hash-link" href="#32-create-the-tag" title="Direct link to heading">#</a></h3><blockquote><p>Before creating the tag, make sure that the code has been checked for errors, including: successful compilation, all unit tests, and successful RAT checks, etc.</p></blockquote><p><strong>Create a tag with signature</strong></p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token assign-left variable" style="color:rgb(191, 199, 213)">git_tag</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> tag -s </span><span class="token variable" style="color:rgb(191, 199, 213)">$git_tag</span><span class="token plain"> -m </span><span class="token string" style="color:rgb(195, 232, 141)">"Tagging the </span><span class="token string variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token string" style="color:rgb(195, 232, 141)"> first Releae Candidate (Candidates start at zero)"</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># If a error happened like gpg: signing failed: secret key not available, set the private key first.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">$ </span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> config user.signingkey </span><span class="token variable" style="color:rgb(191, 199, 213)">${KEY_ID}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="33-package-the-source-code"></a>3.3 Package the source code<a class="hash-link" href="#33-package-the-source-code" title="Direct link to heading">#</a></h3><blockquote><p>After the tag is successfully created, the tag source code should be packaged into a tar package.</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">mkdir</span><span class="token plain"> /tmp/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> archive --format</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">tar.gz --output</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">"/tmp/apache-submarine-</span><span class="token string variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token string" style="color:rgb(195, 232, 141)">-</span><span class="token string variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token string" style="color:rgb(195, 232, 141)">/apache-submarine-</span><span class="token string variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token string" style="color:rgb(195, 232, 141)">-src.tar.gz"</span><span class="token plain"> --prefix</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token string" style="color:rgb(195, 232, 141)">"apache-submarine-</span><span class="token string variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token string" style="color:rgb(195, 232, 141)">/"</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$git_tag</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="34-packaged-binary-package"></a>3.4 Packaged binary package<a class="hash-link" href="#34-packaged-binary-package" title="Direct link to heading">#</a></h3><blockquote><p>Compile the source code packaged in the previous step</p></blockquote><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /tmp/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Enter the source package directory.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> xzvf apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Unzip the source package.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Enter the source directory.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn compile clean </span><span class="token function" style="color:rgb(130, 170, 255)">install</span><span class="token plain"> package -DskipTests </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Compile.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">cp</span><span class="token plain"> ./submarine-distribution/target/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-bin.tar.gz /tmp/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain">/ </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Copy the binary package to the source package directory to facilitate signing the package in the next step.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="35-sign-the-source-packagebinary-packagesha512"></a>3.5 Sign the source package/binary package/sha512<a class="hash-link" href="#35-sign-the-source-packagebinary-packagesha512" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> gpg --print-md SHA512 </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain"> </span><span class="token operator" style="color:rgb(137, 221, 255)">></span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain">.sha512 </span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Calculate SHA512</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> gpg --armor --output </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain">.asc --detach-sig </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Calculate the signature</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="36-check-whether-the-generated-signaturesha512-is-correct"></a>3.6 Check whether the generated signature/sha512 is correct<a class="hash-link" href="#36-check-whether-the-generated-signaturesha512-is-correct" title="Direct link to heading">#</a></h3><p>For example, verify that the signature is correct as follows:</p><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token keyword" style="font-style:italic">for</span><span class="token plain"> </span><span class="token for-or-select variable" style="color:rgb(191, 199, 213)">i</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">in</span><span class="token plain"> *.tar.gz</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">do</span><span class="token plain"> </span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">echo</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> gpg --verify </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain">.asc </span><span class="token variable" style="color:rgb(191, 199, 213)">$i</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">;</span><span class="token plain"> </span><span class="token keyword" style="font-style:italic">done</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="4-prepare-for-apache-release"></a>4. Prepare for Apache release<a class="hash-link" href="#4-prepare-for-apache-release" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="41-publish-the-jar-package-to-the-apache-nexus-repository"></a>4.1 Publish the jar package to the Apache Nexus repository<a class="hash-link" href="#41-publish-the-jar-package-to-the-apache-nexus-repository" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /tmp/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Enter the source package directory</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">tar</span><span class="token plain"> xzvf apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-src.tar.gz </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Unzip the source package</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">mvn -DskipTests deploy -Papache-release -Dmaven.javadoc.skip</span><span class="token operator" style="color:rgb(137, 221, 255)">=</span><span class="token plain">true </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Start upload</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="42-upload-the-tag-to-git-repository"></a>4.2 Upload the tag to git repository<a class="hash-link" href="#42-upload-the-tag-to-git-repository" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token function" style="color:rgb(130, 170, 255)">git</span><span class="token plain"> push origin </span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="43-upload-the-compiled-file-to-dist"></a>4.3 Upload the compiled file to dist<a class="hash-link" href="#43-upload-the-compiled-file-to-dist" title="Direct link to heading">#</a></h3><blockquote><p>This step requires the use of SVN, the svn library of the DEV branch is <a href="https://dist.apache.org/repos/dist/dev/submarine" target="_blank" rel="noopener noreferrer">https://dist.apache.org/repos/dist/dev/submarine</a></p></blockquote><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="431-checkout-submarine-to-a-local-directory"></a>4.3.1 Checkout Submarine to a local directory<a class="hash-link" href="#431-checkout-submarine-to-a-local-directory" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># This step may be slow, and all versions will be tested. If the network is broken, use svn cleanup to delete the lock and re-execute it, and the upload will be resumed.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn co https://dist.apache.org/repos/dist/dev/submarine /tmp/submarine-dist-dev</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository"></a>4.3.2 Add the public key to the KEYS file and submit it to the SVN repository<a class="hash-link" href="#432-add-the-public-key-to-the-keys-file-and-submit-it-to-the-svn-repository" title="Direct link to heading">#</a></h3><div class="mdxCodeBlock_1zKU"><div class="codeBlockContent_actS"><div tabindex="0" class="prism-code language-shell codeBlock_tuNs thin-scrollbar"><div class="codeBlockLines_3uvA" style="color:#bfc7d5;background-color:#292d3e"><div class="token-line" style="color:#bfc7d5"><span class="token builtin class-name" style="color:rgb(255, 203, 107)">cd</span><span class="token plain"> /tmp/submarine-dist-dev</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">mkdir</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Create version directory</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Copy the source code package and signed package here.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain"></span><span class="token function" style="color:rgb(130, 170, 255)">cp</span><span class="token plain"> /tmp/apache-submarine-</span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain">/*tar.gz* </span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain">/</span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn status </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Check svn status.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn </span><span class="token function" style="color:rgb(130, 170, 255)">add</span><span class="token plain"> </span><span class="token variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token plain">-</span><span class="token variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Add to svn version.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn status </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Check svn status.</span><span class="token plain"></span></div><div class="token-line" style="color:#bfc7d5"><span class="token plain">svn commit -m </span><span class="token string" style="color:rgb(195, 232, 141)">"prepare for </span><span class="token string variable" style="color:rgb(191, 199, 213)">${release_version}</span><span class="token string" style="color:rgb(195, 232, 141)"> </span><span class="token string variable" style="color:rgb(191, 199, 213)">${rc_version}</span><span class="token string" style="color:rgb(195, 232, 141)">"</span><span class="token plain"> </span><span class="token comment" style="color:rgb(105, 112, 152);font-style:italic"># Submit to svn remote server.</span></div></div></div><button type="button" aria-label="Copy code to clipboard" class="copyButton_2GIj">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_prK2" id="44-shut-down-the-apache-staging-repository"></a>4.4 Shut down the Apache Staging repository<a class="hash-link" href="#44-shut-down-the-apache-staging-repository" title="Direct link to heading">#</a></h3><blockquote><p>Please make sure all artifacts are fine.</p></blockquote><ol><li><strong>Log in</strong> <a href="http://repository.apache.org" target="_blank" rel="noopener noreferrer">http://repository.apache.org</a> , with Apache account</li><li>Click on Staging repositories on the left.</li><li>Search for Submarine keywords and select the repository you uploaded recently.</li><li>Click the Close button above, and a series of checks will be performed during this process.</li><li>After the check is passed, a link will appear on the Summary tab below. Please save this link and put it in the next voting email. |