github: add Github Actions workflow for tests; support in vet.sh (#4005)
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml
new file mode 100644
index 0000000..dbfc9db
--- /dev/null
+++ b/.github/workflows/testing.yml
@@ -0,0 +1,97 @@
+name: Testing
+
+# Trigger on pushes, PRs (excluding documentation changes), and nightly.
+on:
+ push:
+ pull_request:
+ paths-ignore:
+ - 'Documentation/**'
+ - 'version.go'
+ schedule:
+ - cron: 0 0 * * * # daily at 00:00
+
+# Always force the use of Go modules
+env:
+ GO111MODULE: on
+
+jobs:
+ # Check generated protos match their source repos (optional for PRs).
+ vet-proto:
+ runs-on: ubuntu-latest
+ steps:
+ # Setup the environment.
+ - name: Setup Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: 1.14
+ - name: Checkout repo
+ uses: actions/checkout@v2
+
+ # Run the vet checks.
+ - name: vet
+ run: ./vet.sh -install && ./vet.sh
+
+ # Run the main gRPC-Go tests.
+ tests:
+ # Proto checks are run in the above job.
+ env:
+ VET_SKIP_PROTO: 1
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ include:
+ - type: vet
+ goversion: 1.14
+ - type: race
+ goversion: 1.14
+ - type: 386
+ goversion: 1.14
+ - type: retry
+ goversion: 1.14
+ - type: extras
+ goversion: 1.14
+ - type: tests
+ goversion: 1.13
+ - type: tests
+ goversion: 1.12
+ - type: tests
+ goversion: 1.11 # Keep until interop tests no longer require Go1.11
+
+ steps:
+ # Setup the environment.
+ - name: Setup GOARCH=386
+ if: ${{ matrix.type == '386' }}
+ run: echo "GOARCH=386" >> $GITHUB_ENV
+ - name: Setup RETRY
+ if: ${{ matrix.type == 'retry' }}
+ run: echo "GRPC_GO_RETRY=on" >> $GITHUB_ENV
+ - name: Setup Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: ${{ matrix.goversion }}
+ - name: Checkout repo
+ uses: actions/checkout@v2
+
+ # Only run vet for 'vet' runs.
+ - name: Run vet.sh
+ if: ${{ matrix.type == 'vet' }}
+ run: ./vet.sh -install && ./vet.sh
+
+ # Main tests run for everything except when testing "extras" and the race detector.
+ - name: Run tests
+ if: ${{ matrix.type != 'extras' && matrix.type != 'race' }}
+ run: make test
+
+ # Race detector tests
+ - name: Run test race
+ if: ${{ matrix.TYPE == 'race' }}
+ run: make testrace
+
+ # Non-core gRPC tests (examples, interop, etc)
+ - name: Run extras tests
+ if: ${{ matrix.TYPE == 'extras' }}
+ run: |
+ examples/examples_test.sh
+ security/advancedtls/examples/examples_test.sh
+ interop/interop_test.sh
+ make testsubmodule
diff --git a/vet.sh b/vet.sh
index 7e14bef..48652f6 100755
--- a/vet.sh
+++ b/vet.sh
@@ -60,6 +60,14 @@
unzip ${PROTOC_FILENAME}
bin/protoc --version
popd
+ elif [[ "${GITHUB_ACTIONS}" = "true" ]]; then
+ PROTOBUF_VERSION=3.3.0
+ PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip
+ pushd /home/runner/go
+ wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME}
+ unzip ${PROTOC_FILENAME}
+ bin/protoc --version
+ popd
elif not which protoc > /dev/null; then
die "Please install protoc into your path"
fi