This is an automated email from the ASF dual-hosted git repository.
xiaoyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shenyu-website.git
The following commit(s) were added to refs/heads/main by this push:
new c9af7a977f [type:feat] add more client release note (#1048)
c9af7a977f is described below
commit c9af7a977f8bbf78085ac87d1da2d0af5e4e2f32
Author: aias00 <[email protected]>
AuthorDate: Fri Jan 3 15:53:21 2025 +0800
[type:feat] add more client release note (#1048)
---
community/18-shenyu-client-python-release-guide.md | 530 ++++++++++++++++++++
community/19-shenyu-client-rust-release-guide.md | 530 ++++++++++++++++++++
.../18-shenyu-client-python-release-guide.md | 533 +++++++++++++++++++++
.../current/19-shenyu-client-rust-release-guide.md | 533 +++++++++++++++++++++
4 files changed, 2126 insertions(+)
diff --git a/community/18-shenyu-client-python-release-guide.md
b/community/18-shenyu-client-python-release-guide.md
new file mode 100644
index 0000000000..a1ef16649f
--- /dev/null
+++ b/community/18-shenyu-client-python-release-guide.md
@@ -0,0 +1,530 @@
+---
+title: ShenYu client Python Release Guide
+sidebar_position: 18
+description: Apache ShenYu-client-python Release Guide
+cover: "/img/architecture/shenyu-framework.png"
+---
+
+## Update release notes
+
+Update
[RELEASE-NOTES](https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md)
in the following format:
+
+```
+## ${PUBLISH.VERSION}
+
+### New Features
+
+1. xxx
+1. xxx
+...
+
+### API Changes
+
+1. xxx
+1. xxx
+...
+
+### Enhancement
+
+1. xxx
+1. xxx
+...
+
+### Refactor
+
+1. xxx
+1. xxx
+...
+
+### Bug Fix
+
+1. xxx
+1. xxx
+...
+```
+
+## Create GPG KEY
+
+> Each release manager only creates a GPG KEY for the first release, which can
be reused for subsequent releases.
+
+**1. Create KEY**
+
+Install [GnuPG](https://www.gnupg.org/download/index.html).
+
+Follow [OpenPGP KEY
Management](https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management)
[1] instructions.
+
+```shell
+gpg --full-gen-key
+```
+
+Steps (the following are from console output).
+
+```shell
+gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: (Set username)(use your apache id)
+Email address: (Set email address) (use your apache email)
+Comment: (Fill in the comments)
+You selected this USER-ID:
+ "username (comments) <email>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. (Set password)
+```
+
+**2. Verify KEY**
+
+Follow [Operational GPG
Commands](https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands)
[2] instructions.
+
+```shell
+gpg --list-keys
+```
+
+Output:
+
+```shell
+pub rsa4096 2019-03-11 [SC]
+ 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+uid username (comments) <email>
+sub rsa4096 2019-03-11 [E]
+```
+
+Public key is `095E0D21BC28CFC7A8B8076DF7DF28D237A8048C`.
+
+**3. Upload public key**
+
+Follow [Dirmngr
Options](https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options)
[3] instructions.
+
+```shell
+gpg --send-key 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+```
+
+## Publish Prepare Work
+
+**1. Publish with a new Tag**
+
+Download and install [Git](https://git-scm.com/downloads).
+
+Create tag and switch to `${PUBLISH.VERSION}`.
+
+```shell
+git clone https://github.com/apache/shenyu-client-python.git
~/shenyu-client-python
+cd ~/shenyu-client-python/
+git checkout main
+git tag -a ${PUBLISH.VERSION} -m "${PUBLISH.VERSION} release shenyu client
python"
+```
+
+Submit the code with updated version number and new tags.
+
+```shell
+git push origin --tags
+```
+
+## Publish to SVN dev repository
+
+Install [SVN](https://tortoisesvn.net/downloads.html).
+
+**1. Update KEYS file**
+
+> If the release manager has not yet appended his or her public key to the
KEYS file, do the following. Otherwise, skip this step.
+
+Follow [signing
basics](https://infra.apache.org/release-signing.html#signing-basics) [5]
instructions.
+
+```shell
+mkdir -p ~/keys/release/
+cd ~/keys/release/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/release/shenyu
+cd ~/keys/release/shenyu
+gpg -a --export ${GPG username} >> KEYS
+svn --username=${LDAP ID} commit -m "append to KEYS"
+```
+
+**2. Adding source code packages and binary packages**
+
+Follow [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
instructions.
+
+```shell
+mkdir -p ~/svn_release/dev/
+cd ~/svn_release/dev/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/dev/shenyu
+mkdir -p ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+git archive --format=tar --prefix=shenyu-client-python-${PUBLISH.VERSION}/
${PUBLISH.VERSION} | gzip > shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz
+cd ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-python/*.src.tar.gz
~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-python/*.src.tar.gz.asc
~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+```
+
+**3. Adding hashes**
+
+Follow [Requirements for cryptographic signatures and
checksums](https://infra.apache.org/release-distribution#sigs-and-sums) [7]
instructions.
+
+```shell
+shasum -a 512 shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz >
shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**4. Submit the new release**
+
+```shell
+cd ~/svn_release/dev/shenyu/shenyu-client-python
+svn add ${PUBLISH.VERSION}/
+svn --username=${LDAP ID} commit -m "release shenyu-client-python
${PUBLISH.VERSION}"
+```
+
+## Check Release
+
+**1. Verify sha512 checksum**
+
+Follow [Checking
Hashes](https://www.apache.org/info/verification.html#CheckingHashes) [8]
instructions.
+
+```shell
+shasum -c shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**2. Verifying GPG Signatures**
+
+Follow [Checking
Signatures](https://www.apache.org/info/verification.html#CheckingSignatures)
[9] instructions.
+
+```shell
+curl https://downloads.apache.org/shenyu/KEYS >> KEYS
+gpg --import KEYS
+cd ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+gpg --verify shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.asc
shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz
+```
+
+**3. Ensure that SVN is consistent with GitHub source code**
+
+Follow [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] instructions.
+
+```
+wget
https://github.com/apache/shenyu-client-python/archive/v${PUBLISH.VERSION}.zip
+unzip v${PUBLISH.VERSION}.zip
+mv shenyu-client-python-${PUBLISH.VERSION}
shenyu-client-python-${PUBLISH.VERSION}-src
+unzip shenyu-client-python-${PUBLISH.VERSION}.zip
+diff -r -x "shenyu-examples" -x "shenyu-integrated-test" -x "static"
shenyu-client-python-${PUBLISH.VERSION}-src
shenyu-client-python-${PUBLISH.VERSION}
+```
+
+**4. Check the source code package**
+
+Follow [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] instructions.
+
+- `LICENSE` and `NOTICE` files exist
+- The year in the `NOTICE` file is correct
+- All files have ASF licenses at the beginning
+- There are no `LICENSE` and `NOTICE` that do not depend on the software
+- There are no binaries that do not meet expectations
+- Compilation passes (. /mvnw install) (JAVA 8 is currently supported)
+- If there are third-party code dependencies.
+ - License compatibility for third-party code dependencies
+ - All licenses of third-party code dependencies are named in the `LICENSE`
file
+ - The full version of the third-party code dependency license is in the
`license` directory
+ - If the dependency is an Apache license and there are `NOTICE` files, then
these `NOTICE` files need to be added to the project's `NOTICE` file
+
+**5. Check the binary package**
+
+Follow [Binary
distributions](https://infra.apache.org/licensing-howto.html#binary) [11]
instructions.
+
+- `LICENSE` and `NOTICE` files exist
+- The year in the `NOTICE` file is correct
+- All text files start with an ASF license
+- No `LICENSE` and `NOTICE` for undependent software
+- If third-party code dependencies exist.
+ - Third-party code dependent licenses are compatible
+ - All licenses of third-party code dependencies are named in the `LICENSE`
file
+ - The full version of the third-party code dependency license is in the
`LICENSE` directory
+ - If the dependency is an Apache license and there are `NOTICE` files, then
these `NOTICE` files need to be added to the project's `NOTICE` file
+
+## Voting Process
+
+Follow [RELEASE
APPROVAL](https://www.apache.org/legal/release-policy.html#release-approval)
[12], [Releases](https://incubator.apache.org/policy/incubation.html#Releases)
[13], [voting](https://www.apache.org/foundation/voting.html) [14] instructions.
+
+### ShenYu community vote
+
+**1. Voting lasts for at least 72 hours and receives 3 `+1 binding` votes**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+Hello ShenYu Community,
+
+This is a call for vote to release Apache ShenYu Client Python version
${PUBLISH.VERSION}
+
+Release notes:
+https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}/
+
+Git tag for the release:
+https://github.com/apache/shenyu-client-python/tree/v${PUBLISH.VERSION}/
+
+Release Commit ID:
+https://github.com/apache/shenyu-client-python/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://downloads.apache.org/shenyu/KEYS
+
+Look at here for how to verify this release candidate:
+https://shenyu.apache.org/community/shenyu-client-python-release-guide/#check-release
+
+The vote will be open for at least 72 hours or until necessary number of votes
are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+
+[ ] +0 no opinion
+
+[ ] -1 disapprove with the reason
+
+Checklist for reference:
+
+[ ] Download links are valid.
+
+[ ] Checksums and PGP signatures are valid.
+
+[ ] Source code distributions have correct names matching the current release.
+
+[ ] LICENSE and NOTICE files are correct for each ShenYu Client Python repo.
+
+[ ] All files have license headers if necessary.
+
+[ ] No compiled archives bundled in source archive.
+```
+
+**2. Announcement of voting results**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[RESULT][VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+We’ve received 3 +1 binding votes and 2 +1 non-binding votes:
+
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (non-binding)
++1, xxx (non-binding)
+
+Vote thread:
+https://lists.apache.org/thread/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+Thanks everyone for taking the time to verify and vote for the release!
+```
+
+## Finish publishing
+
+**1. Finish SVN release**
+
+Follow [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
instructions.
+
+```shell
+svn mv
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
https://dist.apache.org/repos/dist/release/shenyu/shenyu-client-python/${PUBLISH.VERSION}
-m "transfer packages for ${PUBLISH.VERSION}"
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PREVIOUS.RELEASE.VERSION}
+```
+
+**2. Finish GitHub release**
+
+Edit [Releases](https://github.com/apache/shenyu-client-python/releases)
`${PUBLISH.VERSION}` and click release.
+
+```shell
+git tag -d ${PUBLISH.VERSION}
+git push origin :refs/tags/${PUBLISH.VERSION}
+```
+
+**3. Update download page**
+
+Follow [Release Download Pages for
Projects](https://infra.apache.org/release-download-pages.html) [15], [Normal
distribution on the Apache downloads
site](https://infra.apache.org/release-publishing.html#normal) [16]
instructions.
+
+After the Apache mirror links take effect (at least one hour), update the
download page for:
+[English version](https://shenyu.apache.org/download/) and
+[Chinese version](https://shenyu.apache.org/zh/download/)
+
+> Note: Project download links should use
https://www.apache.org/dyn/closer.lua instead of closer.cgi or mirrors.cgi
+>
+> Note: Download links for GPG signature files and hash-check files must use
this prefix: `https://downloads.apache.org/shenyu/`
+
+**4. Update documentation**
+
+Archive the `${PUBLISH.VERSION}` version of the
[document](https://github.com/apache/shenyu-website) and update the [version
page](https://shenyu.apache.org/versions/).
+
+**5. Update event page**
+
+Add new release
[event](https://shenyu.apache.org/event/${PUBLISH.VERSION}-release).
+
+**6. Update news page**
+
+Add new release [news](https://shenyu.apache.org/zh/news).
+
+## Release Announcement
+
+> Note: `[email protected]` address requires the email to be sent in plain
text format. If you are using Gmail, you can check `Plain Text Mode` in the
edit screen.
+
+To:
+
+```
[email protected]
[email protected]
+```
+
+Title:
+
+```
+[ANNOUNCE] Apache ShenYu Client Python ${PUBLISH.VERSION} available
+```
+
+Content:
+
+```
+Hi,
+
+Apache ShenYu Team is glad to announce the new release of Apache ShenYu Client
Python ${PUBLISH.VERSION}.
+
+Apache ShenYu is an asynchronous, high-performance, cross-language, responsive
API gateway.
+Support various languages (http protocol), support Dubbo, Spring-Cloud, Grpc,
Motan, Sofa, Tars and other protocols.
+Plugin design idea, plugin hot swap, easy to expand.
+Flexible flow filtering to meet various flow control.
+Built-in rich plugin support, authentication, limiting, fuse, firewall, etc.
+Dynamic flow configuration, high performance.
+Support cluster deployment, A/B Test, blue-green release.
+
+Download Links: https://shenyu.apache.org/download/
+
+Release Notes:
https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md
+
+Website: https://shenyu.apache.org/
+
+ShenYu Resources:
+- Issue: https://github.com/apache/shenyu/issues
+- Mailing list: [email protected]
+- Documents: https://shenyu.apache.org/docs/index/
+
+
+- Apache ShenYu Team
+
+```
+
+## Reissue (not required)
+
+> Note: You only need to republish if the vote did not pass.
+
+**1. Cancellation of voting email template**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[CANCEL][VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+Hi,
+
+I'm cancelling this vote because of xxxxxx issues. I'll fix them and start the
round ${n} vote process.
+The detail of the modifications are as follows:
+
+1. xxxxxx
+2. xxxxxx
+
+Thanks a lot for all your help.
+```
+
+**2. Clean stagingRepositories**
+
+Go to https://repository.apache.org/#stagingRepositories, After logging in
with your Apache LDAP account, select the previous `Close` version and click
`Drop`.
+
+**3。Deleting GitHub branches and tags**
+
+```shell
+git push origin --delete ${PUBLISH.VERSION}-release
+git branch -D ${PUBLISH.VERSION}-release
+git push origin --delete tag v${PUBLISH.VERSION}
+git tag -d v${PUBLISH.VERSION}
+```
+
+**4. Deleting SVN content to be published**
+
+```shell
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
-m "delete ${PUBLISH.VERSION}"
+```
+
+**5. Update email title**
+
+After completing the above steps, you can start the re-posting operation. The
next poll email title needs to have the `[ROUND ${n}]` suffix added. For
example.
+
+```
+[VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION} [ROUND 2]
+```
+
+Voting result and announcement emails do not need to be suffixed.
+
+**The content refers to**
+
+- [1]
https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management
+- [2]
https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands
+- [3]
https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options
+- [4] https://infra.apache.org/publishing-maven-artifacts.html
+- [5] https://infra.apache.org/release-signing.html#signing-basics
+- [6] https://infra.apache.org/release-publishing.html#uploading
+- [7] https://infra.apache.org/release-distribution#sigs-and-sums
+- [8] https://www.apache.org/info/verification.html#CheckingHashes
+- [9] https://www.apache.org/info/verification.html#CheckingSignatures
+- [10]
https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+- [11] https://infra.apache.org/licensing-howto.html#binary
+- [12] https://www.apache.org/legal/release-policy.html#release-approval
+- [13] https://incubator.apache.org/policy/incubation.html#Releases
+- [14] https://www.apache.org/foundation/voting.html
+- [15] https://infra.apache.org/release-download-pages.html
+- [16] https://infra.apache.org/release-publishing.html#normal
diff --git a/community/19-shenyu-client-rust-release-guide.md
b/community/19-shenyu-client-rust-release-guide.md
new file mode 100644
index 0000000000..5ee91622e9
--- /dev/null
+++ b/community/19-shenyu-client-rust-release-guide.md
@@ -0,0 +1,530 @@
+---
+title: ShenYu client Rust Release Guide
+sidebar_position: 19
+description: Apache ShenYu-client-rust Release Guide
+cover: "/img/architecture/shenyu-framework.png"
+---
+
+## Update release notes
+
+Update
[RELEASE-NOTES](https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md)
in the following format:
+
+```
+## ${PUBLISH.VERSION}
+
+### New Features
+
+1. xxx
+1. xxx
+...
+
+### API Changes
+
+1. xxx
+1. xxx
+...
+
+### Enhancement
+
+1. xxx
+1. xxx
+...
+
+### Refactor
+
+1. xxx
+1. xxx
+...
+
+### Bug Fix
+
+1. xxx
+1. xxx
+...
+```
+
+## Create GPG KEY
+
+> Each release manager only creates a GPG KEY for the first release, which can
be reused for subsequent releases.
+
+**1. Create KEY**
+
+Install [GnuPG](https://www.gnupg.org/download/index.html).
+
+Follow [OpenPGP KEY
Management](https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management)
[1] instructions.
+
+```shell
+gpg --full-gen-key
+```
+
+Steps (the following are from console output).
+
+```shell
+gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: (Set username)(use your apache id)
+Email address: (Set email address) (use your apache email)
+Comment: (Fill in the comments)
+You selected this USER-ID:
+ "username (comments) <email>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. (Set password)
+```
+
+**2. Verify KEY**
+
+Follow [Operational GPG
Commands](https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands)
[2] instructions.
+
+```shell
+gpg --list-keys
+```
+
+Output:
+
+```shell
+pub rsa4096 2019-03-11 [SC]
+ 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+uid username (comments) <email>
+sub rsa4096 2019-03-11 [E]
+```
+
+Public key is `095E0D21BC28CFC7A8B8076DF7DF28D237A8048C`.
+
+**3. Upload public key**
+
+Follow [Dirmngr
Options](https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options)
[3] instructions.
+
+```shell
+gpg --send-key 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+```
+
+## Publish Prepare Work
+
+**1. Publish with a new Tag**
+
+Download and install [Git](https://git-scm.com/downloads).
+
+Create tag and switch to `${PUBLISH.VERSION}`.
+
+```shell
+git clone https://github.com/apache/shenyu-client-rust.git ~/shenyu-client-rust
+cd ~/shenyu-client-rust/
+git checkout main
+git tag -a ${PUBLISH.VERSION} -m "${PUBLISH.VERSION} release shenyu client
rust"
+```
+
+Submit the code with updated version number and new tags.
+
+```shell
+git push origin --tags
+```
+
+## Publish to SVN dev repository
+
+Install [SVN](https://tortoisesvn.net/downloads.html).
+
+**1. Update KEYS file**
+
+> If the release manager has not yet appended his or her public key to the
KEYS file, do the following. Otherwise, skip this step.
+
+Follow [signing
basics](https://infra.apache.org/release-signing.html#signing-basics) [5]
instructions.
+
+```shell
+mkdir -p ~/keys/release/
+cd ~/keys/release/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/release/shenyu
+cd ~/keys/release/shenyu
+gpg -a --export ${GPG username} >> KEYS
+svn --username=${LDAP ID} commit -m "append to KEYS"
+```
+
+**2. Adding source code packages and binary packages**
+
+Follow [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
instructions.
+
+```shell
+mkdir -p ~/svn_release/dev/
+cd ~/svn_release/dev/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/dev/shenyu
+mkdir -p ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+git archive --format=tar --prefix=shenyu-client-rust-${PUBLISH.VERSION}/
${PUBLISH.VERSION} | gzip > shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz
+cd ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-rust/*.src.tar.gz
~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-rust/*.src.tar.gz.asc
~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+```
+
+**3. Adding hashes**
+
+Follow [Requirements for cryptographic signatures and
checksums](https://infra.apache.org/release-distribution#sigs-and-sums) [7]
instructions.
+
+```shell
+shasum -a 512 shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz >
shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**4. Submit the new release**
+
+```shell
+cd ~/svn_release/dev/shenyu/shenyu-client-rust
+svn add ${PUBLISH.VERSION}/
+svn --username=${LDAP ID} commit -m "release shenyu-client-rust
${PUBLISH.VERSION}"
+```
+
+## Check Release
+
+**1. Verify sha512 checksum**
+
+Follow [Checking
Hashes](https://www.apache.org/info/verification.html#CheckingHashes) [8]
instructions.
+
+```shell
+shasum -c shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**2. Verifying GPG Signatures**
+
+Follow [Checking
Signatures](https://www.apache.org/info/verification.html#CheckingSignatures)
[9] instructions.
+
+```shell
+curl https://downloads.apache.org/shenyu/KEYS >> KEYS
+gpg --import KEYS
+cd ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+gpg --verify shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.asc
shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz
+```
+
+**3. Ensure that SVN is consistent with GitHub source code**
+
+Follow [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] instructions.
+
+```
+wget
https://github.com/apache/shenyu-client-rust/archive/v${PUBLISH.VERSION}.zip
+unzip v${PUBLISH.VERSION}.zip
+mv shenyu-client-rust-${PUBLISH.VERSION}
shenyu-client-rust-${PUBLISH.VERSION}-src
+unzip shenyu-client-rust-${PUBLISH.VERSION}.zip
+diff -r -x "shenyu-examples" -x "shenyu-integrated-test" -x "static"
shenyu-client-rust-${PUBLISH.VERSION}-src shenyu-client-rust-${PUBLISH.VERSION}
+```
+
+**4. Check the source code package**
+
+Follow [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] instructions.
+
+- `LICENSE` and `NOTICE` files exist
+- The year in the `NOTICE` file is correct
+- All files have ASF licenses at the beginning
+- There are no `LICENSE` and `NOTICE` that do not depend on the software
+- There are no binaries that do not meet expectations
+- Compilation passes (. /mvnw install) (JAVA 8 is currently supported)
+- If there are third-party code dependencies.
+ - License compatibility for third-party code dependencies
+ - All licenses of third-party code dependencies are named in the `LICENSE`
file
+ - The full version of the third-party code dependency license is in the
`license` directory
+ - If the dependency is an Apache license and there are `NOTICE` files, then
these `NOTICE` files need to be added to the project's `NOTICE` file
+
+**5. Check the binary package**
+
+Follow [Binary
distributions](https://infra.apache.org/licensing-howto.html#binary) [11]
instructions.
+
+- `LICENSE` and `NOTICE` files exist
+- The year in the `NOTICE` file is correct
+- All text files start with an ASF license
+- No `LICENSE` and `NOTICE` for undependent software
+- If third-party code dependencies exist.
+ - Third-party code dependent licenses are compatible
+ - All licenses of third-party code dependencies are named in the `LICENSE`
file
+ - The full version of the third-party code dependency license is in the
`LICENSE` directory
+ - If the dependency is an Apache license and there are `NOTICE` files, then
these `NOTICE` files need to be added to the project's `NOTICE` file
+
+## Voting Process
+
+Follow [RELEASE
APPROVAL](https://www.apache.org/legal/release-policy.html#release-approval)
[12], [Releases](https://incubator.apache.org/policy/incubation.html#Releases)
[13], [voting](https://www.apache.org/foundation/voting.html) [14] instructions.
+
+### ShenYu community vote
+
+**1. Voting lasts for at least 72 hours and receives 3 `+1 binding` votes**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+Hello ShenYu Community,
+
+This is a call for vote to release Apache ShenYu Client Rust version
${PUBLISH.VERSION}
+
+Release notes:
+https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}/
+
+Git tag for the release:
+https://github.com/apache/shenyu-client-rust/tree/v${PUBLISH.VERSION}/
+
+Release Commit ID:
+https://github.com/apache/shenyu-client-rust/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://downloads.apache.org/shenyu/KEYS
+
+Look at here for how to verify this release candidate:
+https://shenyu.apache.org/community/shenyu-client-rust-release-guide/#check-release
+
+The vote will be open for at least 72 hours or until necessary number of votes
are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+
+[ ] +0 no opinion
+
+[ ] -1 disapprove with the reason
+
+Checklist for reference:
+
+[ ] Download links are valid.
+
+[ ] Checksums and PGP signatures are valid.
+
+[ ] Source code distributions have correct names matching the current release.
+
+[ ] LICENSE and NOTICE files are correct for each ShenYu Client Rust repo.
+
+[ ] All files have license headers if necessary.
+
+[ ] No compiled archives bundled in source archive.
+```
+
+**2. Announcement of voting results**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[RESULT][VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+We’ve received 3 +1 binding votes and 2 +1 non-binding votes:
+
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (non-binding)
++1, xxx (non-binding)
+
+Vote thread:
+https://lists.apache.org/thread/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+Thanks everyone for taking the time to verify and vote for the release!
+```
+
+## Finish publishing
+
+**1. Finish SVN release**
+
+Follow [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
instructions.
+
+```shell
+svn mv
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
https://dist.apache.org/repos/dist/release/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
-m "transfer packages for ${PUBLISH.VERSION}"
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PREVIOUS.RELEASE.VERSION}
+```
+
+**2. Finish GitHub release**
+
+Edit [Releases](https://github.com/apache/shenyu-client-rust/releases)
`${PUBLISH.VERSION}` and click release.
+
+```shell
+git tag -d ${PUBLISH.VERSION}
+git push origin :refs/tags/${PUBLISH.VERSION}
+```
+
+**3. Update download page**
+
+Follow [Release Download Pages for
Projects](https://infra.apache.org/release-download-pages.html) [15], [Normal
distribution on the Apache downloads
site](https://infra.apache.org/release-publishing.html#normal) [16]
instructions.
+
+After the Apache mirror links take effect (at least one hour), update the
download page for:
+[English version](https://shenyu.apache.org/download/) and
+[Chinese version](https://shenyu.apache.org/zh/download/)
+
+> Note: Project download links should use
https://www.apache.org/dyn/closer.lua instead of closer.cgi or mirrors.cgi
+>
+> Note: Download links for GPG signature files and hash-check files must use
this prefix: `https://downloads.apache.org/shenyu/`
+
+**4. Update documentation**
+
+Archive the `${PUBLISH.VERSION}` version of the
[document](https://github.com/apache/shenyu-website) and update the [version
page](https://shenyu.apache.org/versions/).
+
+**5. Update event page**
+
+Add new release
[event](https://shenyu.apache.org/event/${PUBLISH.VERSION}-release).
+
+**6. Update news page**
+
+Add new release [news](https://shenyu.apache.org/zh/news).
+
+## Release Announcement
+
+> Note: `[email protected]` address requires the email to be sent in plain
text format. If you are using Gmail, you can check `Plain Text Mode` in the
edit screen.
+
+To:
+
+```
[email protected]
[email protected]
+```
+
+Title:
+
+```
+[ANNOUNCE] Apache ShenYu Client Rust ${PUBLISH.VERSION} available
+```
+
+Content:
+
+```
+Hi,
+
+Apache ShenYu Team is glad to announce the new release of Apache ShenYu Client
Rust ${PUBLISH.VERSION}.
+
+Apache ShenYu is an asynchronous, high-performance, cross-language, responsive
API gateway.
+Support various languages (http protocol), support Dubbo, Spring-Cloud, Grpc,
Motan, Sofa, Tars and other protocols.
+Plugin design idea, plugin hot swap, easy to expand.
+Flexible flow filtering to meet various flow control.
+Built-in rich plugin support, authentication, limiting, fuse, firewall, etc.
+Dynamic flow configuration, high performance.
+Support cluster deployment, A/B Test, blue-green release.
+
+Download Links: https://shenyu.apache.org/download/
+
+Release Notes:
https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md
+
+Website: https://shenyu.apache.org/
+
+ShenYu Resources:
+- Issue: https://github.com/apache/shenyu/issues
+- Mailing list: [email protected]
+- Documents: https://shenyu.apache.org/docs/index/
+
+
+- Apache ShenYu Team
+
+```
+
+## Reissue (not required)
+
+> Note: You only need to republish if the vote did not pass.
+
+**1. Cancellation of voting email template**
+
+To:
+
+```
[email protected]
+```
+
+Title:
+
+```
+[CANCEL][VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+Content:
+
+```
+Hi,
+
+I'm cancelling this vote because of xxxxxx issues. I'll fix them and start the
round ${n} vote process.
+The detail of the modifications are as follows:
+
+1. xxxxxx
+2. xxxxxx
+
+Thanks a lot for all your help.
+```
+
+**2. Clean stagingRepositories**
+
+Go to https://repository.apache.org/#stagingRepositories, After logging in
with your Apache LDAP account, select the previous `Close` version and click
`Drop`.
+
+**3。Deleting GitHub branches and tags**
+
+```shell
+git push origin --delete ${PUBLISH.VERSION}-release
+git branch -D ${PUBLISH.VERSION}-release
+git push origin --delete tag v${PUBLISH.VERSION}
+git tag -d v${PUBLISH.VERSION}
+```
+
+**4. Deleting SVN content to be published**
+
+```shell
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
-m "delete ${PUBLISH.VERSION}"
+```
+
+**5. Update email title**
+
+After completing the above steps, you can start the re-posting operation. The
next poll email title needs to have the `[ROUND ${n}]` suffix added. For
example.
+
+```
+[VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION} [ROUND 2]
+```
+
+Voting result and announcement emails do not need to be suffixed.
+
+**The content refers to**
+
+- [1]
https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management
+- [2]
https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands
+- [3]
https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options
+- [4] https://infra.apache.org/publishing-maven-artifacts.html
+- [5] https://infra.apache.org/release-signing.html#signing-basics
+- [6] https://infra.apache.org/release-publishing.html#uploading
+- [7] https://infra.apache.org/release-distribution#sigs-and-sums
+- [8] https://www.apache.org/info/verification.html#CheckingHashes
+- [9] https://www.apache.org/info/verification.html#CheckingSignatures
+- [10]
https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+- [11] https://infra.apache.org/licensing-howto.html#binary
+- [12] https://www.apache.org/legal/release-policy.html#release-approval
+- [13] https://incubator.apache.org/policy/incubation.html#Releases
+- [14] https://www.apache.org/foundation/voting.html
+- [15] https://infra.apache.org/release-download-pages.html
+- [16] https://infra.apache.org/release-publishing.html#normal
diff --git
a/i18n/zh/docusaurus-plugin-content-docs-community/current/18-shenyu-client-python-release-guide.md
b/i18n/zh/docusaurus-plugin-content-docs-community/current/18-shenyu-client-python-release-guide.md
new file mode 100755
index 0000000000..8f4930aa32
--- /dev/null
+++
b/i18n/zh/docusaurus-plugin-content-docs-community/current/18-shenyu-client-python-release-guide.md
@@ -0,0 +1,533 @@
+---
+title: ShenYu python语言客户端发布指南
+sidebar_position: 18
+description: Apache ShenYu python语言客户端发布指南
+cover: "/img/architecture/shenyu-framework.png"
+---
+
+## 更新发布公告
+
+按照如下格式更新[发布公告](https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md):
+
+```
+## ${PUBLISH.VERSION}
+
+### New Features
+
+1. xxx
+1. xxx
+...
+
+### API Changes
+
+1. xxx
+1. xxx
+...
+
+### Enhancement
+
+1. xxx
+1. xxx
+...
+
+### Refactor
+
+1. xxx
+1. xxx
+...
+
+### Bug Fix
+
+1. xxx
+1. xxx
+...
+```
+
+## 创建 GPG KEY
+
+> 每个发布经理只在第一次发布时创建 GPG KEY,以后发布可复用此 KEY。
+
+**1. 创建 KEY**
+
+安装 [GnuPG](https://www.gnupg.org/download/index.html)。
+
+按照 [OpenPGP KEY
Management](https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management)
[1] 的说明创建 KEY:
+
+```shell
+gpg --full-gen-key
+```
+
+创建步骤(以下内容来自控制台输出):
+
+```shell
+gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: (设置用户名)(使用apache id)
+Email address: (设置邮件地址)(使用apache邮箱)
+Comment: (填写注释)
+You selected this USER-ID:
+ "用户名 (注释) <邮件地址>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. (设置密码)
+```
+
+**2. 检查 KEY**
+
+按照 [Operational GPG
Commands](https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands)
[2] 的说明检查 KEY:
+
+```shell
+gpg --list-keys
+```
+
+命令输出:
+
+```shell
+pub rsa4096 2019-03-11 [SC]
+ 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+uid 用户名 (注释) <邮件地址>
+sub rsa4096 2019-03-11 [E]
+```
+
+公钥为 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C。
+
+**3. 上传公钥**
+
+按照 [Dirmngr
Options](https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options)
[3] 的说明上传公钥:
+
+```shell
+gpg --send-key 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+```
+
+## 发布前的准备工作
+
+**1. 发布一个新标签**
+
+下载并安装 [Git](https://git-scm.com/downloads).
+
+创建并切换到 `${PUBLISH.VERSION}` 标签.
+
+```shell
+git clone https://github.com/apache/shenyu-client-python.git
~/shenyu-client-python
+cd ~/shenyu-client-python/
+git checkout main
+git tag -a ${PUBLISH.VERSION} -m "${PUBLISH.VERSION} release shenyu client
python"
+```
+
+提交更新版本号后的代码和新标签。
+
+```shell
+git push origin --tags
+```
+
+## 发布到 SVN 预发仓库
+
+下载并安装[SVN](https://tortoisesvn.net/downloads.html)。
+
+**1. 更新 KEYS 文件**
+
+> 如果发布经理还没有将自己的公钥追加到 KEYS 文件中,请执行以下操作。否则,跳过此步骤。
+
+根据 [signing
basics](https://infra.apache.org/release-signing.html#signing-basics) [5] 的说明更新
KEYS 文件。
+
+```shell
+mkdir -p ~/keys/release/
+cd ~/keys/release/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/release/shenyu
+cd ~/keys/release/shenyu
+gpg -a --export ${GPG 用户名} >> KEYS
+svn --username=${LDAP ID} commit -m "append to KEYS"
+```
+
+**2. 添加源码包和二进制文件包**
+
+根据 [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
的说明添加源码包和二进制文件包。
+
+```shell
+mkdir -p ~/svn_release/dev/
+cd ~/svn_release/dev/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/dev/shenyu
+mkdir -p ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+git archive --format=tar --prefix=shenyu-client-python-${PUBLISH.VERSION}/
${PUBLISH.VERSION} | gzip > shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz
+cd ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-python/*.src.tar.gz
~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-python/*.src.tar.gz.asc
~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+```
+
+**3. 添加校验文件**
+
+根据 [Requirements for cryptographic signatures and
checksums](https://infra.apache.org/release-distribution#sigs-and-sums) [7]
的说明添加校验文件。
+
+```shell
+shasum -a 512 shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz >
shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**4. 提交新版本**
+
+```shell
+cd ~/svn_release/dev/shenyu/shenyu-client-python
+svn add ${PUBLISH.VERSION}/
+svn --username=${LDAP ID} commit -m "release shenyu-client-python
${PUBLISH.VERSION}"
+```
+
+## 预发版本验证
+
+**1. 验证 sha512 校验和**
+
+根据 [Checking
Hashes](https://www.apache.org/info/verification.html#CheckingHashes) [8] 的说明验证
sha512 校验和。
+
+```shell
+shasum -c shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**2. 验证 GPG 签名**
+
+根据 [Checking
Signatures](https://www.apache.org/info/verification.html#CheckingSignatures)
[9] 的说明验证 GPG 签名。
+
+```shell
+curl https://downloads.apache.org/shenyu/KEYS >> KEYS
+gpg --import KEYS
+cd ~/svn_release/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
+gpg --verify shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz.asc
shenyu-client-python-${PUBLISH.VERSION}-src.tar.gz
+```
+
+**3. 确保 SVN 与 GitHub 源码一致**
+
+根据 [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] 的说明确保 SVN 与 GitHub 源码一致。
+
+```
+wget
https://github.com/apache/shenyu-client-python/archive/v${PUBLISH.VERSION}.zip
+unzip v${PUBLISH.VERSION}.zip
+mv shenyu-client-python-${PUBLISH.VERSION}
shenyu-client-python-${PUBLISH.VERSION}-src
+unzip shenyu-client-python-${PUBLISH.VERSION}.zip
+diff -r -x "shenyu-examples" -x "shenyu-integrated-test" -x "static"
shenyu-client-python-${PUBLISH.VERSION}-src
shenyu-client-python-${PUBLISH.VERSION}
+```
+
+**4. 检查源码包**
+
+根据 [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] 的说明检查源码包。
+
+- 存在 `LICENSE` 和 `NOTICE` 文件
+- `NOTICE` 文件中的年份正确
+- 所有文件的开头都有 ASF 许可证
+- 不存在未依赖软件的 `LICENSE` 和 `NOTICE`
+- 不存在不符合预期的二进制文件
+- 编译通过 (./mvnw install) (目前支持 JAVA 8)
+- 如果存在第三方代码依赖:
+ - 第三方代码依赖的许可证兼容
+ - 所有第三方代码依赖的许可证都在 `LICENSE` 文件中声名
+ - 第三方代码依赖许可证的完整版全部在 `license` 目录
+ - 如果依赖的是 Apache 许可证并且有 `NOTICE` 文件,那么这些 `NOTICE` 文件需要加入到项目的 `NOTICE` 文件中
+
+**5. 检查二进制包**
+
+根据 [Binary
distributions](https://infra.apache.org/licensing-howto.html#binary) [11]
的说明检查二进制包。
+
+- 存在 `LICENSE` 和 `NOTICE` 文件
+- `NOTICE` 文件中的年份正确
+- 所有文本文件开头都有 ASF 许可证
+- 不存在未依赖软件的 `LICENSE` 和 `NOTICE`
+- 如果存在第三方代码依赖:
+ - 第三方代码依赖的许可证兼容
+ - 所有第三方代码依赖的许可证都在 `LICENSE` 文件中声名
+ - 第三方代码依赖许可证的完整版全部在 `license` 目录
+ - 如果依赖的是 Apache 许可证并且有 `NOTICE` 文件,那么这些 `NOTICE` 文件需要加入到项目的 `NOTICE` 文件中
+
+## 投票流程
+
+根据 [RELEASE
APPROVAL](https://www.apache.org/legal/release-policy.html#release-approval)
[12], [Releases](https://incubator.apache.org/policy/incubation.html#Releases)
[13], [voting](https://www.apache.org/foundation/voting.html) [14] 的说明进行社区投票。
+
+### ShenYu 社区投票
+
+**1. 投票持续至少 72 小时并获得 3 个`+1 binding`票**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+Hello ShenYu Community,
+
+This is a call for vote to release Apache ShenYu Client Python version
${PUBLISH.VERSION}
+
+Release notes:
+https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}/
+
+Git tag for the release:
+https://github.com/apache/shenyu-client-python/tree/v${PUBLISH.VERSION}/
+
+Release Commit ID:
+https://github.com/apache/shenyu-client-python/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://downloads.apache.org/shenyu/KEYS
+
+Look at here for how to verify this release candidate:
+https://shenyu.apache.org/community/shenyu-client-python-release-guide/#check-release
+
+The vote will be open for at least 72 hours or until necessary number of votes
are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+
+[ ] +0 no opinion
+
+[ ] -1 disapprove with the reason
+
+Checklist for reference:
+
+[ ] Download links are valid.
+
+[ ] Checksums and PGP signatures are valid.
+
+[ ] Source code distributions have correct names matching the current release.
+
+[ ] LICENSE and NOTICE files are correct for each ShenYu Client Python repo.
+
+[ ] All files have license headers if necessary.
+
+[ ] No compiled archives bundled in source archive.
+```
+
+**2. 宣布投票结果**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+We’ve received 3 +1 binding votes and 2 +1 non-binding votes:
+
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (non-binding)
++1, xxx (non-binding)
+
+Vote thread:
+https://lists.apache.org/thread/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+Thanks everyone for taking the time to verify and vote for the release!
+```
+
+## 完成发布
+
+**1. 完成 SVN 发布**
+
+根据 [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
的说明将新版本从 dev 目录转移到 release 目录。
+
+```shell
+svn mv
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
https://dist.apache.org/repos/dist/release/shenyu/shenyu-client-python/${PUBLISH.VERSION}
-m "transfer packages for ${PUBLISH.VERSION}"
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PREVIOUS.RELEASE.VERSION}
+```
+
+**2. 完成 GitHub 发布**
+
+Edit [Releases](https://github.com/apache/shenyu-client-python/releases)
`${PUBLISH.VERSION}` and click release.
+
+从 GitHub Fork 一份代码,并执行以下命令:
+
+```shell
+git tag -d ${PUBLISH.VERSION}
+git push origin :refs/tags/${PUBLISH.VERSION}
+```
+
+
+**3. 更新下载页面**
+
+根据 [Release Download Pages for
Projects](https://infra.apache.org/release-download-pages.html) [15], [Normal
distribution on the Apache downloads
site](https://infra.apache.org/release-publishing.html#normal) [16] 的说明更新下载页面。
+
+Apache 镜像连接生效后(至少一小时),更新下载页面:
+[英文版](https://shenyu.apache.org/download/) 和
+[中文版](https://shenyu.apache.org/zh/download/)
+
+> 注意:项目下载链接应该使用 https://www.apache.org/dyn/closer.lua 而不是 closer.cgi 或者
mirrors.cgi
+>
+> 注意:GPG 签名文件和哈希校验文件的下载连接必须使用这个前缀:`https://downloads.apache.org/shenyu/`
+
+**4. 更新文档**
+
+将 `${PUBLISH.VERSION}`
版本的[文档](https://github.com/apache/shenyu-website)进行归档,并更新[版本页面](https://shenyu.apache.org/zh/versions)。
+
+**5. 更新事件页面**
+
+添加新版本[事件](https://shenyu.apache.org/zh/event/${PUBLISH.VERSION}-release)。
+
+**6. 更新新闻页面**
+
+添加新版本[新闻](https://shenyu.apache.org/zh/news)。
+
+## 发布公告
+
+> 注意:`[email protected]` 地址要求以纯文本格式发送邮件。如果你使用的是 Gmail,可以在编辑界面勾选`纯文本模式`。
+
+发送至:
+
+```
[email protected]
[email protected]
+```
+
+标题:
+
+```
+[ANNOUNCE] Apache ShenYu Client Python ${PUBLISH.VERSION} available
+```
+
+正文:
+
+```
+Hi,
+
+Apache ShenYu Team is glad to announce the new release of Apache ShenYu Client
Python ${PUBLISH.VERSION}.
+
+Apache ShenYu is an asynchronous, high-performance, cross-language, responsive
API gateway.
+Support various languages (http protocol), support Dubbo, Spring-Cloud, Grpc,
Motan, Sofa, Tars and other protocols.
+Plugin design idea, plugin hot swap, easy to expand.
+Flexible flow filtering to meet various flow control.
+Built-in rich plugin support, authentication, limiting, fuse, firewall, etc.
+Dynamic flow configuration, high performance.
+Support cluster deployment, A/B Test, blue-green release.
+
+Download Links: https://shenyu.apache.org/download/
+
+Release Notes:
https://github.com/apache/shenyu-client-python/blob/main/RELEASE-NOTES.md
+
+Website: https://shenyu.apache.org/
+
+ShenYu Resources:
+- Issue: https://github.com/apache/shenyu/issues
+- Mailing list: [email protected]
+- Documents: https://shenyu.apache.org/docs/index/
+
+
+- Apache ShenYu Team
+
+```
+
+## 重新发布(非必需)
+
+> 注意:只有在投票没有通过的情况下才需要重新发布。
+
+**1. 取消投票邮件模板**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[CANCEL][VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+Hi,
+
+I'm cancelling this vote because of xxxxxx issues. I'll fix them and start the
round ${n} vote process.
+The detail of the modifications are as follows:
+
+1. xxxxxx
+2. xxxxxx
+
+Thanks a lot for all your help.
+```
+
+**2. 清理预发仓库**
+
+访问 https://repository.apache.org/#stagingRepositories, 使用 Apache 的 LDAP
账户登录后,选中之前 `Close` 的版本,点击 `Drop`。
+
+**3. 删除 GitHub 分支和标签**
+
+```shell
+git push origin --delete ${PUBLISH.VERSION}-release
+git branch -D ${PUBLISH.VERSION}-release
+git push origin --delete tag v${PUBLISH.VERSION}
+git tag -d v${PUBLISH.VERSION}
+```
+
+**4. 删除 SVN 待发布内容**
+
+```shell
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-python/${PUBLISH.VERSION}
-m "delete ${PUBLISH.VERSION}"
+```
+
+**5. 更新邮件标题**
+
+完成以上步骤后,可以开始重新进行发布操作。接下来的投票邮件标题需要增加 `[ROUND ${n}]` 后缀。例如:
+
+```
+[VOTE] Release Apache ShenYu Client Python ${PUBLISH.VERSION} [ROUND 2]
+```
+
+投票结果和通知邮件不需要加后缀。
+
+**以上内容参考**
+
+- [1]
https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management
+- [2]
https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands
+- [3]
https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options
+- [4] https://infra.apache.org/publishing-maven-artifacts.html
+- [5] https://infra.apache.org/release-signing.html#signing-basics
+- [6] https://infra.apache.org/release-publishing.html#uploading
+- [7] https://infra.apache.org/release-distribution#sigs-and-sums
+- [8] https://www.apache.org/info/verification.html#CheckingHashes
+- [9] https://www.apache.org/info/verification.html#CheckingSignatures
+- [10]
https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+- [11] https://infra.apache.org/licensing-howto.html#binary
+- [12] https://www.apache.org/legal/release-policy.html#release-approval
+- [13] https://incubator.apache.org/policy/incubation.html#Releases
+- [14] https://www.apache.org/foundation/voting.html
+- [15] https://infra.apache.org/release-download-pages.html
+- [16] https://infra.apache.org/release-publishing.html#normal
diff --git
a/i18n/zh/docusaurus-plugin-content-docs-community/current/19-shenyu-client-rust-release-guide.md
b/i18n/zh/docusaurus-plugin-content-docs-community/current/19-shenyu-client-rust-release-guide.md
new file mode 100755
index 0000000000..738b44bc9e
--- /dev/null
+++
b/i18n/zh/docusaurus-plugin-content-docs-community/current/19-shenyu-client-rust-release-guide.md
@@ -0,0 +1,533 @@
+---
+title: ShenYu rust语言客户端发布指南
+sidebar_position: 19
+description: Apache ShenYu rust语言客户端发布指南
+cover: "/img/architecture/shenyu-framework.png"
+---
+
+## 更新发布公告
+
+按照如下格式更新[发布公告](https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md):
+
+```
+## ${PUBLISH.VERSION}
+
+### New Features
+
+1. xxx
+1. xxx
+...
+
+### API Changes
+
+1. xxx
+1. xxx
+...
+
+### Enhancement
+
+1. xxx
+1. xxx
+...
+
+### Refactor
+
+1. xxx
+1. xxx
+...
+
+### Bug Fix
+
+1. xxx
+1. xxx
+...
+```
+
+## 创建 GPG KEY
+
+> 每个发布经理只在第一次发布时创建 GPG KEY,以后发布可复用此 KEY。
+
+**1. 创建 KEY**
+
+安装 [GnuPG](https://www.gnupg.org/download/index.html)。
+
+按照 [OpenPGP KEY
Management](https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management)
[1] 的说明创建 KEY:
+
+```shell
+gpg --full-gen-key
+```
+
+创建步骤(以下内容来自控制台输出):
+
+```shell
+gpg (GnuPG) 2.2.4; Copyright (C) 2017 Free Software Foundation, Inc.
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+Please select what kind of key you want:
+ (1) RSA and RSA (default)
+ (2) DSA and Elgamal
+ (3) DSA (sign only)
+ (4) RSA (sign only)
+Your selection? 1
+RSA keys may be between 1024 and 4096 bits long.
+What keysize do you want? (2048) 4096
+Requested keysize is 4096 bits
+Please specify how long the key should be valid.
+ 0 = key does not expire
+ <n> = key expires in n days
+ <n>w = key expires in n weeks
+ <n>m = key expires in n months
+ <n>y = key expires in n years
+Key is valid for? (0)
+Key does not expire at all
+Is this correct? (y/N) y
+
+GnuPG needs to construct a user ID to identify your key.
+
+Real name: (设置用户名)(使用apache id)
+Email address: (设置邮件地址)(使用apache邮箱)
+Comment: (填写注释)
+You selected this USER-ID:
+ "用户名 (注释) <邮件地址>"
+
+Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
+You need a Passphrase to protect your secret key. (设置密码)
+```
+
+**2. 检查 KEY**
+
+按照 [Operational GPG
Commands](https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands)
[2] 的说明检查 KEY:
+
+```shell
+gpg --list-keys
+```
+
+命令输出:
+
+```shell
+pub rsa4096 2019-03-11 [SC]
+ 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+uid 用户名 (注释) <邮件地址>
+sub rsa4096 2019-03-11 [E]
+```
+
+公钥为 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C。
+
+**3. 上传公钥**
+
+按照 [Dirmngr
Options](https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options)
[3] 的说明上传公钥:
+
+```shell
+gpg --send-key 095E0D21BC28CFC7A8B8076DF7DF28D237A8048C
+```
+
+## 发布前的准备工作
+
+**1. 发布一个新标签**
+
+下载并安装 [Git](https://git-scm.com/downloads).
+
+创建并切换到 `${PUBLISH.VERSION}` 标签.
+
+```shell
+git clone https://github.com/apache/shenyu-client-rust.git ~/shenyu-client-rust
+cd ~/shenyu-client-rust/
+git checkout main
+git tag -a ${PUBLISH.VERSION} -m "${PUBLISH.VERSION} release shenyu client
rust"
+```
+
+提交更新版本号后的代码和新标签。
+
+```shell
+git push origin --tags
+```
+
+## 发布到 SVN 预发仓库
+
+下载并安装[SVN](https://tortoisesvn.net/downloads.html)。
+
+**1. 更新 KEYS 文件**
+
+> 如果发布经理还没有将自己的公钥追加到 KEYS 文件中,请执行以下操作。否则,跳过此步骤。
+
+根据 [signing
basics](https://infra.apache.org/release-signing.html#signing-basics) [5] 的说明更新
KEYS 文件。
+
+```shell
+mkdir -p ~/keys/release/
+cd ~/keys/release/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/release/shenyu
+cd ~/keys/release/shenyu
+gpg -a --export ${GPG 用户名} >> KEYS
+svn --username=${LDAP ID} commit -m "append to KEYS"
+```
+
+**2. 添加源码包和二进制文件包**
+
+根据 [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
的说明添加源码包和二进制文件包。
+
+```shell
+mkdir -p ~/svn_release/dev/
+cd ~/svn_release/dev/
+svn --username=${LDAP ID} co https://dist.apache.org/repos/dist/dev/shenyu
+mkdir -p ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+git archive --format=tar --prefix=shenyu-client-rust-${PUBLISH.VERSION}/
${PUBLISH.VERSION} | gzip > shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz
+cd ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-rust/*.src.tar.gz
~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+cp -f ~/shenyu/shenyu-client-rust/*.src.tar.gz.asc
~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+```
+
+**3. 添加校验文件**
+
+根据 [Requirements for cryptographic signatures and
checksums](https://infra.apache.org/release-distribution#sigs-and-sums) [7]
的说明添加校验文件。
+
+```shell
+shasum -a 512 shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz >
shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**4. 提交新版本**
+
+```shell
+cd ~/svn_release/dev/shenyu/shenyu-client-rust
+svn add ${PUBLISH.VERSION}/
+svn --username=${LDAP ID} commit -m "release shenyu-client-rust
${PUBLISH.VERSION}"
+```
+
+## 预发版本验证
+
+**1. 验证 sha512 校验和**
+
+根据 [Checking
Hashes](https://www.apache.org/info/verification.html#CheckingHashes) [8] 的说明验证
sha512 校验和。
+
+```shell
+shasum -c shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.sha512
+```
+
+**2. 验证 GPG 签名**
+
+根据 [Checking
Signatures](https://www.apache.org/info/verification.html#CheckingSignatures)
[9] 的说明验证 GPG 签名。
+
+```shell
+curl https://downloads.apache.org/shenyu/KEYS >> KEYS
+gpg --import KEYS
+cd ~/svn_release/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
+gpg --verify shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz.asc
shenyu-client-rust-${PUBLISH.VERSION}-src.tar.gz
+```
+
+**3. 确保 SVN 与 GitHub 源码一致**
+
+根据 [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] 的说明确保 SVN 与 GitHub 源码一致。
+
+```
+wget
https://github.com/apache/shenyu-client-rust/archive/v${PUBLISH.VERSION}.zip
+unzip v${PUBLISH.VERSION}.zip
+mv shenyu-client-rust-${PUBLISH.VERSION}
shenyu-client-rust-${PUBLISH.VERSION}-src
+unzip shenyu-client-rust-${PUBLISH.VERSION}.zip
+diff -r -x "shenyu-examples" -x "shenyu-integrated-test" -x "static"
shenyu-client-rust-${PUBLISH.VERSION}-src shenyu-client-rust-${PUBLISH.VERSION}
+```
+
+**4. 检查源码包**
+
+根据 [Incubator Release
Checklist](https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist)
[10] 的说明检查源码包。
+
+- 存在 `LICENSE` 和 `NOTICE` 文件
+- `NOTICE` 文件中的年份正确
+- 所有文件的开头都有 ASF 许可证
+- 不存在未依赖软件的 `LICENSE` 和 `NOTICE`
+- 不存在不符合预期的二进制文件
+- 编译通过 (./mvnw install) (目前支持 JAVA 8)
+- 如果存在第三方代码依赖:
+ - 第三方代码依赖的许可证兼容
+ - 所有第三方代码依赖的许可证都在 `LICENSE` 文件中声名
+ - 第三方代码依赖许可证的完整版全部在 `license` 目录
+ - 如果依赖的是 Apache 许可证并且有 `NOTICE` 文件,那么这些 `NOTICE` 文件需要加入到项目的 `NOTICE` 文件中
+
+**5. 检查二进制包**
+
+根据 [Binary
distributions](https://infra.apache.org/licensing-howto.html#binary) [11]
的说明检查二进制包。
+
+- 存在 `LICENSE` 和 `NOTICE` 文件
+- `NOTICE` 文件中的年份正确
+- 所有文本文件开头都有 ASF 许可证
+- 不存在未依赖软件的 `LICENSE` 和 `NOTICE`
+- 如果存在第三方代码依赖:
+ - 第三方代码依赖的许可证兼容
+ - 所有第三方代码依赖的许可证都在 `LICENSE` 文件中声名
+ - 第三方代码依赖许可证的完整版全部在 `license` 目录
+ - 如果依赖的是 Apache 许可证并且有 `NOTICE` 文件,那么这些 `NOTICE` 文件需要加入到项目的 `NOTICE` 文件中
+
+## 投票流程
+
+根据 [RELEASE
APPROVAL](https://www.apache.org/legal/release-policy.html#release-approval)
[12], [Releases](https://incubator.apache.org/policy/incubation.html#Releases)
[13], [voting](https://www.apache.org/foundation/voting.html) [14] 的说明进行社区投票。
+
+### ShenYu 社区投票
+
+**1. 投票持续至少 72 小时并获得 3 个`+1 binding`票**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+Hello ShenYu Community,
+
+This is a call for vote to release Apache ShenYu Client Rust version
${PUBLISH.VERSION}
+
+Release notes:
+https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md
+
+The release candidates:
+https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}/
+
+Git tag for the release:
+https://github.com/apache/shenyu-client-rust/tree/v${PUBLISH.VERSION}/
+
+Release Commit ID:
+https://github.com/apache/shenyu-client-rust/commit/xxxxxxxxxxxxxxxxxxxxxxx
+
+Keys to verify the Release Candidate:
+https://downloads.apache.org/shenyu/KEYS
+
+Look at here for how to verify this release candidate:
+https://shenyu.apache.org/community/shenyu-client-rust-release-guide/#check-release
+
+The vote will be open for at least 72 hours or until necessary number of votes
are reached.
+
+Please vote accordingly:
+
+[ ] +1 approve
+
+[ ] +0 no opinion
+
+[ ] -1 disapprove with the reason
+
+Checklist for reference:
+
+[ ] Download links are valid.
+
+[ ] Checksums and PGP signatures are valid.
+
+[ ] Source code distributions have correct names matching the current release.
+
+[ ] LICENSE and NOTICE files are correct for each ShenYu Client Rust repo.
+
+[ ] All files have license headers if necessary.
+
+[ ] No compiled archives bundled in source archive.
+```
+
+**2. 宣布投票结果**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[RESULT][VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+We’ve received 3 +1 binding votes and 2 +1 non-binding votes:
+
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (binding)
++1, xxx (non-binding)
++1, xxx (non-binding)
+
+Vote thread:
+https://lists.apache.org/thread/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+
+Thanks everyone for taking the time to verify and vote for the release!
+```
+
+## 完成发布
+
+**1. 完成 SVN 发布**
+
+根据 [Uploading
packages](https://infra.apache.org/release-publishing.html#uploading) [6]
的说明将新版本从 dev 目录转移到 release 目录。
+
+```shell
+svn mv
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
https://dist.apache.org/repos/dist/release/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
-m "transfer packages for ${PUBLISH.VERSION}"
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PREVIOUS.RELEASE.VERSION}
+```
+
+**2. 完成 GitHub 发布**
+
+Edit [Releases](https://github.com/apache/shenyu-client-rust/releases)
`${PUBLISH.VERSION}` and click release.
+
+从 GitHub Fork 一份代码,并执行以下命令:
+
+```shell
+git tag -d ${PUBLISH.VERSION}
+git push origin :refs/tags/${PUBLISH.VERSION}
+```
+
+
+**3. 更新下载页面**
+
+根据 [Release Download Pages for
Projects](https://infra.apache.org/release-download-pages.html) [15], [Normal
distribution on the Apache downloads
site](https://infra.apache.org/release-publishing.html#normal) [16] 的说明更新下载页面。
+
+Apache 镜像连接生效后(至少一小时),更新下载页面:
+[英文版](https://shenyu.apache.org/download/) 和
+[中文版](https://shenyu.apache.org/zh/download/)
+
+> 注意:项目下载链接应该使用 https://www.apache.org/dyn/closer.lua 而不是 closer.cgi 或者
mirrors.cgi
+>
+> 注意:GPG 签名文件和哈希校验文件的下载连接必须使用这个前缀:`https://downloads.apache.org/shenyu/`
+
+**4. 更新文档**
+
+将 `${PUBLISH.VERSION}`
版本的[文档](https://github.com/apache/shenyu-website)进行归档,并更新[版本页面](https://shenyu.apache.org/zh/versions)。
+
+**5. 更新事件页面**
+
+添加新版本[事件](https://shenyu.apache.org/zh/event/${PUBLISH.VERSION}-release)。
+
+**6. 更新新闻页面**
+
+添加新版本[新闻](https://shenyu.apache.org/zh/news)。
+
+## 发布公告
+
+> 注意:`[email protected]` 地址要求以纯文本格式发送邮件。如果你使用的是 Gmail,可以在编辑界面勾选`纯文本模式`。
+
+发送至:
+
+```
[email protected]
[email protected]
+```
+
+标题:
+
+```
+[ANNOUNCE] Apache ShenYu Client Rust ${PUBLISH.VERSION} available
+```
+
+正文:
+
+```
+Hi,
+
+Apache ShenYu Team is glad to announce the new release of Apache ShenYu Client
Rust ${PUBLISH.VERSION}.
+
+Apache ShenYu is an asynchronous, high-performance, cross-language, responsive
API gateway.
+Support various languages (http protocol), support Dubbo, Spring-Cloud, Grpc,
Motan, Sofa, Tars and other protocols.
+Plugin design idea, plugin hot swap, easy to expand.
+Flexible flow filtering to meet various flow control.
+Built-in rich plugin support, authentication, limiting, fuse, firewall, etc.
+Dynamic flow configuration, high performance.
+Support cluster deployment, A/B Test, blue-green release.
+
+Download Links: https://shenyu.apache.org/download/
+
+Release Notes:
https://github.com/apache/shenyu-client-rust/blob/main/RELEASE-NOTES.md
+
+Website: https://shenyu.apache.org/
+
+ShenYu Resources:
+- Issue: https://github.com/apache/shenyu/issues
+- Mailing list: [email protected]
+- Documents: https://shenyu.apache.org/docs/index/
+
+
+- Apache ShenYu Team
+
+```
+
+## 重新发布(非必需)
+
+> 注意:只有在投票没有通过的情况下才需要重新发布。
+
+**1. 取消投票邮件模板**
+
+发送至:
+
+```
[email protected]
+```
+
+标题:
+
+```
+[CANCEL][VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION}
+```
+
+正文:
+
+```
+Hi,
+
+I'm cancelling this vote because of xxxxxx issues. I'll fix them and start the
round ${n} vote process.
+The detail of the modifications are as follows:
+
+1. xxxxxx
+2. xxxxxx
+
+Thanks a lot for all your help.
+```
+
+**2. 清理预发仓库**
+
+访问 https://repository.apache.org/#stagingRepositories, 使用 Apache 的 LDAP
账户登录后,选中之前 `Close` 的版本,点击 `Drop`。
+
+**3. 删除 GitHub 分支和标签**
+
+```shell
+git push origin --delete ${PUBLISH.VERSION}-release
+git branch -D ${PUBLISH.VERSION}-release
+git push origin --delete tag v${PUBLISH.VERSION}
+git tag -d v${PUBLISH.VERSION}
+```
+
+**4. 删除 SVN 待发布内容**
+
+```shell
+svn delete
https://dist.apache.org/repos/dist/dev/shenyu/shenyu-client-rust/${PUBLISH.VERSION}
-m "delete ${PUBLISH.VERSION}"
+```
+
+**5. 更新邮件标题**
+
+完成以上步骤后,可以开始重新进行发布操作。接下来的投票邮件标题需要增加 `[ROUND ${n}]` 后缀。例如:
+
+```
+[VOTE] Release Apache ShenYu Client Rust ${PUBLISH.VERSION} [ROUND 2]
+```
+
+投票结果和通知邮件不需要加后缀。
+
+**以上内容参考**
+
+- [1]
https://www.gnupg.org/documentation/manuals/gnupg/OpenPGP-Key-Management.html#OpenPGP-Key-Management
+- [2]
https://www.gnupg.org/documentation/manuals/gnupg/Operational-GPG-Commands.html#Operational-GPG-Commands
+- [3]
https://www.gnupg.org/documentation/manuals/gnupg/Dirmngr-Options.html#Dirmngr-Options
+- [4] https://infra.apache.org/publishing-maven-artifacts.html
+- [5] https://infra.apache.org/release-signing.html#signing-basics
+- [6] https://infra.apache.org/release-publishing.html#uploading
+- [7] https://infra.apache.org/release-distribution#sigs-and-sums
+- [8] https://www.apache.org/info/verification.html#CheckingHashes
+- [9] https://www.apache.org/info/verification.html#CheckingSignatures
+- [10]
https://cwiki.apache.org/confluence/display/INCUBATOR/Incubator+Release+Checklist
+- [11] https://infra.apache.org/licensing-howto.html#binary
+- [12] https://www.apache.org/legal/release-policy.html#release-approval
+- [13] https://incubator.apache.org/policy/incubation.html#Releases
+- [14] https://www.apache.org/foundation/voting.html
+- [15] https://infra.apache.org/release-download-pages.html
+- [16] https://infra.apache.org/release-publishing.html#normal