chore(ci): migrate pegasus ci to github action (#690)

diff --git a/.github/workflows/ci-pull-request-title.yaml b/.github/workflows/ci-pull-request-title.yaml
index 2e58da6..db323f1 100644
--- a/.github/workflows/ci-pull-request-title.yaml
+++ b/.github/workflows/ci-pull-request-title.yaml
@@ -10,6 +10,6 @@
   main:
     runs-on: ubuntu-latest
     steps:
-      - uses: amannn/action-semantic-pull-request@v2.2.0
+      - uses: amannn/action-semantic-pull-request@v3.1.0
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ci-pull-request.yaml b/.github/workflows/ci-pull-request.yaml
new file mode 100644
index 0000000..ee3c3fb
--- /dev/null
+++ b/.github/workflows/ci-pull-request.yaml
@@ -0,0 +1,67 @@
+# Developer Notes:
+#
+# This config is for github actions. Before merging your changes of this file,
+# it's recommended to create a PR against the ci-test branch to test if it works
+# as expected.
+
+name: pull_request
+
+on:
+  # run on each pull request
+  pull_request:
+    types: [ synchronize, reopened, labeled ]
+    branches:
+      - master
+      - 'v[0-9]+.*' # release branch
+      - ci-test # testing branch for github action
+    paths:
+      - 'rdsn/**'
+      - 'src/**'
+      - '.github/workflows/ci-pull-request.yml'
+  push:
+    paths:
+      - '.github/workflows/ci-pull-request.yml'
+  # for manually triggering workflow
+  workflow_dispatch:
+
+defaults:
+  run:
+    shell: bash
+
+jobs:
+  lint:
+    name: Lint
+    runs-on: ubuntu-latest
+    container:
+      image: apachepegasus/clang-format-3.9
+    defaults:
+      run:
+        working-directory: /root/incubator-pegasus
+    steps:
+      - name: Clone Apache Pegasus Source
+        working-directory: /root
+        run: |
+          git clone --recursive --depth=1 https://github.com/apache/incubator-pegasus.git
+      - name: clang-format
+        run: ./rdsn/scripts/linux/run-clang-format.py --clang-format-executable clang-format-3.9 -e ./src/shell/linenoise -e ./src/shell/sds -e ./rdsn -r ./src
+
+  test:
+    name: Test
+    needs: lint
+    runs-on: ubuntu-latest
+    container:
+      image: apachepegasus/ci-env
+    defaults:
+      run:
+        working-directory: /root/incubator-pegasus
+    steps:
+      - name: Clone Apache Pegasus Source
+        working-directory: /root
+        run: |
+          git clone --recursive --depth=1 https://github.com/apache/incubator-pegasus.git
+      - name: Unpack prebuilt third-parties
+        run: unzip /root/pegasus-thirdparty-output.zip -d ./rdsn/thirdparty
+      - name: Compilation
+        run: ./run.sh build -c --skip_thirdparty
+      - name: Unit Testing
+        run: ./run.sh test --on_travis
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 209bd46..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-sudo: required
-dist: bionic
-
-language: cpp
-
-compiler:
-    - gcc
-
-addons:
-  apt:
-    packages:
-      - libsnappy-dev
-      - liblz4-dev
-      - clang-format-3.9
-      - libaio-dev
-      - libzstd-dev
-
-cache:
-    - ccache
-    - apt
-
-before_install:
-  - python --version
-  - pip install -U cmake # use the latest version of cmake
-
-before_script:
-    - cd rdsn/thirdparty
-    - wget https://github.com/XiaoMi/pegasus-common/releases/download/deps/pegasus-thirdparty-prebuild-bionic.zip
-    - unzip pegasus-thirdparty-prebuild-bionic.zip
-    - rm -f pegasus-thirdparty-prebuild-bionic.zip
-    - cd ../..
-    - ulimit -c unlimited -S
-
-script:
-    - ./scripts/travis.sh
-
-after_script:
-    - ./run.sh stop_zk
-
-notifications:
-    email: false
diff --git a/rdsn b/rdsn
index 7404376..d8cbbe5 160000
--- a/rdsn
+++ b/rdsn
@@ -1 +1 @@
-Subproject commit 7404376b45cde468df2435cab3f6913fe7e2dd40
+Subproject commit d8cbbe59854fd382d10954349f24c058ffa1b107