on: - pull_request permissions: contents: read name: CI jobs: build: strategy: matrix: go-version: [1.19.x, 1.20.x, 1.21.x] os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5 with: go-version: ${{ matrix.go-version }} - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - run: go build ./... test: runs-on: ubuntu-latest steps: - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5 with: check-latest: true - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - run: go test ./... node_test: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4 with: node-version: 10 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5 with: check-latest: true - run: > cd examples/internal/browser && npm install gulp-cli && npm install && ./node_modules/.bin/gulp generate: container: image: docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env:1.19 options: "--user root" credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - run: make install - run: make clean - run: make generate - run: go mod tidy - run: git diff --exit-code bazel: container: image: docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env:1.19 options: "--user root" credentials: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4 with: path: /home/vscode/.cache/_grpc_gateway_bazel key: v1-bazel-cache-${{ hashFiles('repositories.bzl') }} restore-keys: v1-bazel-cache- - name: Configure bazel run: | # put .bazelrc in $HOME so that it's read before project's .bazelrc cat > /home/vscode/.bazelrc << EOF startup --output_base=/home/vscode/.cache/_grpc_gateway_bazel build --@io_bazel_rules_go//go/config:race # Workaround https://github.com/bazelbuild/bazel/issues/3645 # See https://docs.bazel.build/versions/0.23.0/command-line-reference.html build --local_ram_resources=7168 # Github runners have 7G of memory build --local_cpu_resources=2 # Github runners have 2 vCPU EOF - name: Check that Bazel BUILD files are up-to-date run: bazel run //:gazelle && git diff --exit-code - name: Check that repositories.bzl is up-to-date run: | bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories && git diff --exit-code - name: Check formatting of Bazel BUILD files run: bazel run //:buildifier && git diff --exit-code - name: Run tests with Bazel run: bazel test //... gorelease: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5 with: go-version: 1.19 check-latest: true - run: go run golang.org/x/exp/cmd/gorelease@latest -base=v2.19.0 proto_lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5 with: check-latest: true - run: make install - run: PATH=$PATH:~/go/bin buf build - run: PATH=$PATH:~/go/bin buf lint - run: PATH=$PATH:~/go/bin buf format -w && git diff --exit-code - run: PATH=$PATH:~/go/bin buf breaking --path protoc-gen-openapiv2/ --against 'https://github.com/grpc-ecosystem/grpc-gateway.git#branch=main' golangci: permissions: pull-requests: read # for golangci/golangci-lint-action to fetch pull requests runs-on: ubuntu-latest steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4 - uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3 with: version: v1.54.2 fuzz: runs-on: ubuntu-latest steps: - name: Build Fuzzers id: build uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master with: oss-fuzz-project-name: "grpc-gateway" dry-run: false language: go - name: Run Fuzzers uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master with: oss-fuzz-project-name: "grpc-gateway" fuzz-seconds: 600 dry-run: false language: go - name: Upload Crash uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4 if: failure() && steps.build.outcome == 'success' with: name: artifacts path: ./out/artifacts