add how-to-release.md (#116)

* update version to 0.3.0
diff --git a/.licenserc.yaml b/.licenserc.yaml
index b4c646c..d5778c3 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -56,6 +56,7 @@
   paths-ignore: # `paths-ignore` are the path list that will be ignored by license-eye.
     - '**/*.md'
     - '**/Cargo.toml'
+    - '**/release.toml'
     - '.rustfmt.toml'
     - 'LICENSE'
     - 'NOTICE'
diff --git a/common/Cargo.toml b/common/Cargo.toml
index b056b33..19282c2 100644
--- a/common/Cargo.toml
+++ b/common/Cargo.toml
@@ -1,7 +1,10 @@
 [package]
 name = "common"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-common"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
diff --git a/config/Cargo.toml b/config/Cargo.toml
index f50da91..1eaa89c 100644
--- a/config/Cargo.toml
+++ b/config/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "dubbo-config"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
 license = "Apache-2.0"
 description = "dubbo-config"
diff --git a/docs/how-to-release.md b/docs/how-to-release.md
new file mode 100644
index 0000000..b92b2fe
--- /dev/null
+++ b/docs/how-to-release.md
@@ -0,0 +1,51 @@
+# 如何发布dubbo-rust的新版本
+
+## 前置条件
+
+安装[cargo-release](https://crates.io/crates/cargo-release):
+```shell
+$ cargo install cargo-release
+```
+
+登录 crates.io
+
+```shell
+$ cargo login
+```
+
+## 如何发布一个新版本
+
+1. 更新版本号:
+    ```shell
+    $ cargo release version minor
+    $ cargo release version minor --execute
+    ```
+
+2. 提交
+    ```shell
+    $ cargo release commit
+    $ cargo release commit --execute
+    ```
+
+3. 打tag:
+    ```shell
+    $ cargo release tag
+    $ cargo release tag --execute
+    ```
+
+4. push tag:
+    ```shell
+    $ cargo release push
+    $ cargo release push --execute
+    ```
+
+5. 在邮件列表发起投票
+
+    例子:<https://lists.apache.org/thread/cb949l81yfgg0wddthp1ym2wtd2y5s7j>
+
+6. 发布到 crates.io
+
+    ```shell
+    $ cargo release publish
+    $ cargo release publish --execute
+    ```
diff --git a/dubbo-build/Cargo.toml b/dubbo-build/Cargo.toml
index a4715b7..3276a68 100644
--- a/dubbo-build/Cargo.toml
+++ b/dubbo-build/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "dubbo-build"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
 license = "Apache-2.0"
 description = "dubbo-build"
diff --git a/dubbo/Cargo.toml b/dubbo/Cargo.toml
index 5369852..b552b25 100644
--- a/dubbo/Cargo.toml
+++ b/dubbo/Cargo.toml
@@ -1,6 +1,6 @@
 [package]
 name = "dubbo"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
 license = "Apache-2.0"
 description = "dubbo"
@@ -37,7 +37,7 @@
 itertools = "0.10.1"
 urlencoding = "2.1.2"
 
-dubbo-config = {path = "../config", version = "0.2.0"}
+dubbo-config = {path = "../config", version = "0.3.0" }
 
 #对象存储
-state = { version = "0.5", features = ["tls"] }
\ No newline at end of file
+state = { version = "0.5", features = ["tls"] }
diff --git a/examples/echo/Cargo.toml b/examples/echo/Cargo.toml
index f82ef80..1a842d2 100644
--- a/examples/echo/Cargo.toml
+++ b/examples/echo/Cargo.toml
@@ -1,10 +1,16 @@
 [package]
 name = "example-echo"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-examples-echo"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
+[package.metadata.release]
+release = false
+
 [[bin]]
 name = "echo-server"
 path = "src/echo/server.rs"
@@ -25,9 +31,9 @@
 
 hyper = { version = "0.14.19", features = ["full"]}
 
-dubbo = {path = "../../dubbo", version = "0.2.0"}
-dubbo-config = {path = "../../config", version = "0.2.0"}
-dubbo-registry-zookeeper = {path = "../../registry-zookeeper", version = "0.2.0"}
+dubbo = {path = "../../dubbo", version = "0.3.0" }
+dubbo-config = {path = "../../config", version = "0.3.0" }
+dubbo-registry-zookeeper = {path = "../../registry-zookeeper", version = "0.3.0" }
 
 [build-dependencies]
-dubbo-build = {path = "../../dubbo-build", version = "0.2.0"}
+dubbo-build = {path = "../../dubbo-build", version = "0.3.0" }
diff --git a/examples/greeter/Cargo.toml b/examples/greeter/Cargo.toml
index c34b19f..4e56f4e 100644
--- a/examples/greeter/Cargo.toml
+++ b/examples/greeter/Cargo.toml
@@ -1,10 +1,16 @@
 [package]
 name = "example-greeter"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-examples-greeter"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
+[package.metadata.release]
+release = false
+
 [[bin]]
 name = "greeter-server"
 path = "src/greeter/server.rs"
@@ -24,9 +30,9 @@
 tokio-stream = "0.1"
 tracing = "0.1"
 tracing-subscriber = "0.2.0"
-dubbo = {path = "../../dubbo", version = "0.2.0"}
-dubbo-config = {path = "../../config", version = "0.2.0"}
-dubbo-registry-zookeeper = {path = "../../registry-zookeeper", version = "0.2.0"}
+dubbo = {path = "../../dubbo", version = "0.3.0" }
+dubbo-config = {path = "../../config", version = "0.3.0" }
+dubbo-registry-zookeeper = {path = "../../registry-zookeeper", version = "0.3.0" }
 
 [build-dependencies]
-dubbo-build = {path = "../../dubbo-build", version = "0.2.0"}
+dubbo-build = {path = "../../dubbo-build", version = "0.3.0" }
diff --git a/metadata/Cargo.toml b/metadata/Cargo.toml
index 2974366..8e90a9c 100644
--- a/metadata/Cargo.toml
+++ b/metadata/Cargo.toml
@@ -1,7 +1,10 @@
 [package]
 name = "metadata"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-metadata"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
diff --git a/registry-nacos/Cargo.toml b/registry-nacos/Cargo.toml
index 68b24fd..2a86a45 100644
--- a/registry-nacos/Cargo.toml
+++ b/registry-nacos/Cargo.toml
@@ -1,18 +1,20 @@
 [package]
 name = "dubbo-registry-nacos"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
 license = "Apache-2.0"
+description = "dubbo-rust-registry-nacos"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
 nacos-sdk = { version = "0.2", features = ["naming", "auth-by-http"] }
-dubbo = {path = "../dubbo/", version = "0.2.0"}
+dubbo = {path = "../dubbo/", version = "0.3.0" }
 serde_json = "1.0"
 serde = {version = "1.0.145",features = ["derive"]}
 tracing = "0.1"
 anyhow = "1.0.66"
 
 [dev-dependencies]
-tracing-subscriber = "0.3.16"
\ No newline at end of file
+tracing-subscriber = "0.3.16"
diff --git a/registry-zookeeper/Cargo.toml b/registry-zookeeper/Cargo.toml
index 722462a..f83283b 100644
--- a/registry-zookeeper/Cargo.toml
+++ b/registry-zookeeper/Cargo.toml
@@ -1,15 +1,17 @@
 [package]
 name = "dubbo-registry-zookeeper"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
 license = "Apache-2.0"
+description = "dubbo-rust-registry-zookeeper"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]
 zookeeper = "0.7.0"
-dubbo = {path = "../dubbo/", version = "0.2.0"}
+dubbo = {path = "../dubbo/", version = "0.3.0" }
 serde_json = "1.0"
 serde = {version = "1.0.145",features = ["derive"]}
 tracing = "0.1"
-urlencoding = "2.1.2"
\ No newline at end of file
+urlencoding = "2.1.2"
diff --git a/registry/Cargo.toml b/registry/Cargo.toml
index e9357f4..3325fa8 100644
--- a/registry/Cargo.toml
+++ b/registry/Cargo.toml
@@ -1,7 +1,10 @@
 [package]
 name = "registry"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-registry"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
diff --git a/release.toml b/release.toml
new file mode 100644
index 0000000..eabd55d
--- /dev/null
+++ b/release.toml
@@ -0,0 +1,2 @@
+shared-version = true
+tag-prefix = ""
diff --git a/xds/Cargo.toml b/xds/Cargo.toml
index 2a63597..3918953 100644
--- a/xds/Cargo.toml
+++ b/xds/Cargo.toml
@@ -1,7 +1,10 @@
 [package]
 name = "xds"
-version = "0.2.0"
+version = "0.3.0"
 edition = "2021"
+license = "Apache-2.0"
+description = "dubbo-rust-xds"
+repository = "https://github.com/apache/dubbo-rust.git"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html