diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..693b884
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Build and Test
+on:
+  pull_request:
+  push:
+    branches:
+      - main
+
+jobs:
+  build:
+    name: Build
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v2
+      - name: Set up Python 3.10
+        uses: actions/setup-python@v2
+        with:
+          python-version: '3.10'
+      - name: Install dependencies
+        run: pip install -r requirements.txt
+      - name: Run tests and collect coverage
+        run: pytest --cov app
+      - name: Upload coverage to Codecov
+        uses: codecov/codecov-action@v3
\ No newline at end of file
diff --git a/.github/workflows/license-checker.yml b/.github/workflows/license-checker.yml
new file mode 100644
index 0000000..ee5f902
--- /dev/null
+++ b/.github/workflows/license-checker.yml
@@ -0,0 +1,32 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+name: License checker
+
+on:
+  pull_request:
+  push:
+    branches:
+      - main
+
+jobs:
+  check-license:
+    runs-on: ubuntu-latest
+
+    steps:
+      - uses: actions/checkout@v2
+      - name: Check License Header
+        uses: apache/skywalking-eyes@v0.1.0
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.licenserc.yaml b/.licenserc.yaml
new file mode 100644
index 0000000..8e74b29
--- /dev/null
+++ b/.licenserc.yaml
@@ -0,0 +1,32 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+header:
+  license:
+    spdx-id: Apache-2.0
+    copyright-owner: Apache Software Foundation
+
+  paths-ignore:
+    - 'licenses'
+    - '**/*.md'
+    - 'LICENSE'
+    - 'DISCLAIMER'
+    - 'NOTICE'
+    - '.gitignore'
+
+  comment: on-failure
\ No newline at end of file
diff --git a/README.md b/README.md
index 59dc130..2a92ab2 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,39 @@
-## Apache-ShenYu-Client  
-Apache-Shenyu-Client for python client allows you to access ShenYu Gateway, it supports registory python service to ShenYu Gateway.
+## Apache-ShenYu-Client
 
-### Requirements   
-Supported python version over 3.6
-Supported ShenYu version over 2.4.3
+[![Build and Test](https://github.com/apache/incubator-shenyu-client-python/actions/workflows/build.yml/badge.svg?branch=main)](https://github.com/apache/incubator-shenyu-client-python/actions)
+[![codecov.io](https://codecov.io/gh/apache/incubator-shenyu-client-python/coverage.svg?branch=main)](https://app.codecov.io/gh/apache/incubator-shenyu-client-python?branch=main)
 
-### instructions
-> 1、install  
-pip3 install Apache-ShenYu-Client -i https://pypi.python.org/simple
+Apache-Shenyu-Client for python client allows you to access ShenYu Gateway, it supports registry python service to ShenYu Gateway.
 
-> 2、usage
+### Requirements
 
-> 3.1、Use the decorator
+- python3.6+
+- ShenYu2.4.3+
+
+### Install
+
+`pip3 install Apache-ShenYu-Client -i https://pypi.python.org/simple`
+
+### Usage
+
+#### Use the decorator
 ```
->>import package:      
+import package:      
 
 from apache_shenyu_client.config import GatewayConfig
 from apache_shenyu_client.register import register_uri, register_metadata, register_all_metadata
+```
+_First, modify the configuration according to the project situation, If you do not configure it, you will not be able to use apache_shenyu_client._
 
-3.1.0、First, modify the configuration according to the project situation, If you do not configure it, you will not be able to use apache_shenyu_client.   
-#### Configure shenyu gateway services and port 
+- Configure shenyu gateway services and port 
+```
 GatewayConfig.test = {
         "servers": "xx.xx.xx.xx",
         "port": 1001
-    }   
-#### Configure python services information   
+    }
+```
+- Configure python services information
+```
 GatewayConfig.uri = {
         "app_name": "app2",             # app name
         "host": "172.24.43.28",         # python service host
@@ -32,8 +41,10 @@
         "context_path": "/flask_test",   # context_path
         "environment": "test",          # environment
         "rpc_type": "http"              # rpc type
-    }       
-#### Configure to get administrator token
+    }
+```
+- Configure to get administrator token
+```
 GatewayConfig.register = {
         "register_type": "http",
         "servers": "xx.xx.xx.xx",
@@ -42,40 +53,41 @@
             "password": "123456"
         }
     }
+```
+- Proxy all api
+  - Using a decorator at the entry of a service request to register for this service: `@register_uri`
+  - Using a decorator at the entry of a service request: `@register_all_metadata(register_all=True)`
 
-3.1.1、proxy all api
-
-3.1.1.1、Using a decorator at the entry of a service request to register for this service: @register_uri 
-3.1.1.2、Using a decorator at the entry of a service request: @register_all_metadata(register_all=True)
-
-3.1.2、proxy some api
-3.1.2.1、Using a decorator at the entry of a service request to register for this service: @register_uri 
-3.1.2.2、use a decorator on that api definition: @register_metadata，need param: path, as follows 3.1.2.3:
-
-3.1.2.3、this is a python flask service api, path is "/search"
+- Proxy some api
+  - Using a decorator at the entry of a service request to register for this service: @register_uri 
+  - Use a decorator on that api definition: @register_metadata，need param: path, as follows 3.1.2.3:
+  - This is a python flask service api, path is "/search"
+    ```
     @user.route('/search', methods=['GET'])
     def user_search_handler():
         data = UserBusiness.search_by_nickname()
         return json_detail_render(0, data)`
+    
+    proxy：
+    @register_metadata("/search")
+    @user.route('/search', methods=['GET'])
+    def user_search_handler():
+        data = UserBusiness.search_by_nickname()
+        return json_detail_render(0, data)
+    
+    ```
 
-proxy：
-@register_metadata("/search")
-@user.route('/search', methods=['GET'])
-def user_search_handler():
-    data = UserBusiness.search_by_nickname()
-    return json_detail_render(0, data)
+#### Function call usage
 
 ```
-
-> 3.2、function call usage
-```
->>import package
+import package
 
 from apache_shenyu_client.config import GatewayConfig
 from apache_shenyu_client.api import GatewayProxy
 gt = GatewayProxy()
-
-3.2.1、Modify the configuration according to the project situation
+```
+- Modify the configuration according to the project situation
+```
 GatewayConfig.uri = {
         "app_name": "app2",            # app name
         "host": "172.24.43.28",        # python service host
@@ -84,14 +96,16 @@
         "environment": "test",         # environment
         "rpc_type": "http"             # rpc type
     }
-
-3.2.2、register uri: gt.register_uri()
-
-"/helloqq2" is the path to register  
-
-3.2.2.1、register some path:   
-gt.register_metadata("/helloqq2")
-
-3.2.2.1、register all path:   
-gt.register_metadata(register_all=True)
 ```
+- Register uri
+
+    ```gt.register_uri()``` and `"/helloqq2"` is the path to register  
+
+  - register some path:
+    ```
+    gt.register_metadata("/helloqq2")
+    ```
+  - register all path:
+    ```
+    gt.register_metadata(register_all=True)
+    ```
