Merge pull request #236 from sdttttt/sdttttt-patch-2

Ftr: Migrate travis Ci to GithubActions
diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml
new file mode 100644
index 0000000..50480b8
--- /dev/null
+++ b/.github/workflows/github-actions.yml
@@ -0,0 +1,113 @@
+name: CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: "*"
+
+jobs:
+  build:
+    name: ${{ matrix.os }} - Go${{ matrix.go_version }} - JDK${{ matrix.jdk_version }}
+
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+      matrix:
+        os: 
+          - ubuntu-latest
+        go_version:
+          - 1.12
+        jdk_version:
+          - 1.8
+    env:
+      DING_TOKEN: 049ae645b5dfb16e3240f81c1757333549ca46b30a5d6b40df562c63c36cf166
+      DING_SIGN: SEC128fb97348610e9d4529bfb59ad7f3fd716b972785a0d04f1cee2c83ec160e59
+
+    steps:
+    - uses: actions/checkout@v2
+
+    - name: Set up JDK ${{ matrix.jdk_version }}
+      uses: actions/setup-java@v1
+      with:
+        java-version: ${{ matrix.jdk_version }}
+
+    - name: Set up Go ${{ matrix.go_version }}
+      uses: actions/setup-go@v2
+      with:
+        go-version: ${{ matrix.go_version }}
+      id: go
+
+    - name: Cache Go Dependence
+      uses: actions/cache@v2
+      with:
+        path: ~/go/pkg/mod
+        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
+        restore-keys: ${{ runner.os }}-go-
+
+    - name: Cache local Maven repository
+      uses: actions/cache@v2
+      with:
+        path: ~/.m2/repository
+        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+        restore-keys: ${{ runner.os }}-maven-
+
+    - name: Java Test And Package
+      run: |
+        mvn clean package -DskipTests=true -f test_hessian/pom.xml
+        mvn test -f test_hessian/pom.xml
+        mvn clean package -f test_dubbo/pom.xml
+
+    - name: Validate License
+      run: |
+        sh before_validate_license.sh
+        chmod u+x /tmp/tools/license/license-header-checker
+        /tmp/tools/license/license-header-checker -v -a -r -i vendor  /tmp/tools/license/license.txt . go  && [[ -z `git status -s` ]]
+    
+    - name: Go Test
+      run: go mod vendor && go test -race -v && go test -bench . -race -coverprofile=coverage.txt
+      
+    - name: Coverage
+      run: bash <(curl -s https://codecov.io/bash)
+
+
+      # Because the contexts of push and PR are different, there are two Notify.
+      # Notifications are triggered only in the apache/dubbo-go-hessian2 repository.
+    - name: DingTalk Message Notify only Push
+      uses: zcong1993/actions-ding@v3.0.1
+      # Whether job is successful or not, always () is always true.
+      if: |
+        always() && 
+        github.event_name == 'push' &&
+        github.repository == 'apache/dubbo-go-hessian2'
+      with:
+        # DingDing bot token
+        dingToken: ${{ env.DING_TOKEN }}
+        secret: ${{ env.DING_SIGN }}
+        # Post Body to send
+        body: |
+          {
+            "msgtype": "markdown",
+            "markdown": {
+                "title": "Github Actions",
+                "text": "## Github Actions \n - name: CI \n - repository: ${{ github.repository }} \n - trigger: ${{ github.actor }} \n - event: ${{ github.event_name }} \n - ref: ${{ github.ref }} \n - status: [${{ job.status	}}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) \n - environment: ${{ runner.os }} \n > SHA: [${{ github.sha }}](${{ github.event.compare }})"
+            }
+          }
+          
+    - name: DingTalk Message Notify only PR
+      uses: zcong1993/actions-ding@v3.0.1
+      if: | 
+        always() && 
+        github.event_name == 'pull_request' &&
+        github.repository == 'apache/dubbo-go-hessian2'
+      with:
+        dingToken: ${{ env.DING_TOKEN }}
+        secret: ${{ env.DING_SIGN }}
+        body: |
+          {
+            "msgtype": "markdown",
+            "markdown": {
+                "title": "Github Actions",
+                "text": "## Github Actions \n - name: CI \n - repository: ${{ github.repository }} \n - pr_title: **${{ github.event.pull_request.title }}** \n - trigger: ${{ github.actor }} \n - event: ${{ github.event_name }} \n - ref: [${{ github.ref }}](${{ github.event.pull_request._links.html.href }}) \n - status: [${{ job.status	}}](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) \n - environment: ${{ runner.os }} \n > SHA: [${{ github.sha }}](${{ github.event.pull_request._links.html.href }})"
+            }
+          }