Restore CI Workflow

I accidentally deleted the main CI workflow as a part of
b4c1fed6ed9fe8219247ec4bf9c7d679eb2e3116. This patch restores the CI
workflow.
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000..b4fece1
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,67 @@
+# This is a basic workflow to help you get started with Actions
+
+name: MLGO CI
+
+on: [push, repository_dispatch, pull_request]
+
+jobs:
+  LicenseCheck:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - run: ./check-license.sh
+  Envvars:
+    runs-on: ubuntu-latest
+    outputs:
+      version_matrix: ${{ steps.set-output.outputs.version_matrix }}
+      do_cache: ${{ steps.set-output.outputs.do_cache }}
+    steps:
+      - id: set-output
+        run: |
+          if [ -z $ACT ]
+          then
+            _ver="['3.8', '3.9', '3.10']"
+            _cache="1"
+          else
+            # 3.8 instead of '3.8' to make github act work.
+            _ver="[3.8]"
+            _cache="0"
+          fi
+          echo "version_matrix=$_ver" >> $GITHUB_OUTPUT
+          echo "do_cache=$_cache" >> $GITHUB_OUTPUT
+  Checks:
+    runs-on: ubuntu-latest
+    needs: [Envvars]
+    strategy:
+      matrix:
+        python-version: ${{ fromJSON(needs.Envvars.outputs.version_matrix) }}
+        task: [Typecheck, Lint, Yapf, Test]
+        include:
+          - task: Typecheck
+            cmd: pytype -j auto --overriding-parameter-count-checks .
+          - task: Lint
+            cmd: pylint --rcfile .pylintrc --recursive yes .
+          - task: Yapf
+            cmd: yapf . -drp
+          - task: Test
+            cmd: pytest
+    steps:
+      - uses: actions/checkout@v3
+      - name: Install Python With Cached pip Packages
+        if: needs.Envvars.outputs.do_cache == '1'
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python-version }}
+          cache: 'pipenv'
+          cache-dependency-path: Pipfile.lock
+      - name: Install Python, no cache
+        if: needs.Envvars.outputs.do_cache == '0'
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python-version }}
+      - name: Install Pipenv
+        run: pip3 install pipenv
+      - name: Install Python Dependencies
+        run: pipenv sync --categories="packages dev-packages ci" --verbose
+      - name: ${{ matrix.task }}
+        run: pipenv run ${{ matrix.cmd }}