ci: run lint / mypy / unit tests / coverage as GH actions (#287)

Make GH Action checks required
diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml
index e621885..67fcd59 100644
--- a/.github/sync-repo-settings.yaml
+++ b/.github/sync-repo-settings.yaml
@@ -1,3 +1,28 @@
+# https://github.com/googleapis/repo-automation-bots/tree/main/packages/sync-repo-settings
+# Rules for main branch protection
+branchProtectionRules:
+# Identifies the protection rule pattern. Name of the branch to be protected.
+# Defaults to `main`
+- pattern: main
+  requiresCodeOwnerReviews: true
+  requiresStrictStatusChecks: true
+  requiredStatusCheckContexts:
+    - 'cla/google'
+    # No Kokoro:  the following are Github actions
+    - 'lint-mypy'
+    - 'unit-3.6'
+    - 'unit-3.7'
+    - 'unit-3.8'
+    - 'unit-3.9'
+    - 'unit-3.10'
+    - 'unit_grpc_gcp-3.6'
+    - 'unit_grpc_gcp-3.7'
+    - 'unit_grpc_gcp-3.8'
+    - 'unit_grpc_gcp-3.9'
+    - 'unit_grpc_gcp-3.10'
+    - 'unit_wo_grpc-3.6'
+    - 'unit_wo_grpc-3.10'
+    - 'cover'
 permissionRules:
   - team: actools-python
     permission: admin
diff --git a/.github/workflows/unittest_lint.yml b/.github/workflows/unittest_lint.yml
new file mode 100644
index 0000000..302be97
--- /dev/null
+++ b/.github/workflows/unittest_lint.yml
@@ -0,0 +1,119 @@
+name: "Lint / Unit tests / Cover / Mypy"
+
+on:
+  pull_request:
+    branches:
+      - main
+
+
+jobs:
+
+  run-lint-mypy:
+    name: lint-mypy
+    runs-on: ubuntu-latest
+
+    steps:
+
+    - name: Checkout
+      uses: actions/checkout@v2
+
+    - name: Setup Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: "3.10"
+
+    - name: Install nox
+      run: |
+        python -m pip install --upgrade setuptools pip wheel
+        python -m pip install nox
+
+    - name: Run lint
+      run: |
+        nox -s lint
+
+    - name: Run lint_setup_py
+      run: |
+        nox -s lint_setup_py
+
+    - name: Run mypy
+      run: |
+        nox -s mypy
+
+  run-unittests:
+    name: unit${{ matrix.option }}-${{ matrix.python }}
+    runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        option: ["", "_grpc_gcp", "_wo_grpc"]
+        python:
+          - "3.6"
+          - "3.7"
+          - "3.8"
+          - "3.9"
+          - "3.10"
+        exclude:
+          - option: "_wo_grpc"
+            python: 3.7
+          - option: "_wo_grpc"
+            python: 3.8
+          - option: "_wo_grpc"
+            python: 3.9
+
+    steps:
+
+    - name: Checkout
+      uses: actions/checkout@v2
+
+    - name: Setup Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python }}
+
+    - name: Install nox
+      run: |
+        python -m pip install --upgrade setuptools pip wheel
+        python -m pip install nox
+
+    - name: Run unit tests
+      env:
+        COVERAGE_FILE: .coverage${{ matrix.option }}-${{matrix.python }}
+      run: |
+        nox -s unit${{ matrix.option }}-${{ matrix.python }}
+
+    - name: Upload coverage results
+      uses: actions/upload-artifact@v2
+      with:
+        name: coverage-artifacts
+        path: .coverage${{ matrix.option }}-${{ matrix.python }}
+
+  report-coverage:
+    name: cover
+    runs-on: ubuntu-latest
+    needs:
+        - run-unittests
+
+    steps:
+
+    - name: Checkout
+      uses: actions/checkout@v2
+
+    - name: Setup Python
+      uses: actions/setup-python@v2
+      with:
+        python-version: "3.10"
+
+    - name: Install coverage
+      run: |
+        python -m pip install --upgrade setuptools pip wheel
+        python -m pip install coverage
+
+    - name: Download coverage results
+      uses: actions/download-artifact@v2
+      with:
+        name: coverage-artifacts
+        path: .coverage-results/
+
+    - name: Report coverage results
+      run: |
+        coverage combine .coverage-results/.coverage*
+        coverage report --show-missing --fail-under=100
diff --git a/noxfile.py b/noxfile.py
index db37c56..003a276 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -132,7 +132,7 @@
     default(session)
 
 
-@nox.session(python=["3.6", "3.7", "3.8", "3.9"])
+@nox.session(python=["3.6", "3.7", "3.8", "3.9", "3.10"])
 def unit_grpc_gcp(session):
     """Run the unit test suite with grpcio-gcp installed."""
     constraints_path = str(