...
1on:
2 - pull_request
3permissions:
4 contents: read
5name: CI
6jobs:
7 build:
8 strategy:
9 matrix:
10 go-version: [1.19.x, 1.20.x, 1.21.x]
11 os: [ubuntu-latest, macos-latest, windows-latest]
12 runs-on: ${{ matrix.os }}
13 steps:
14 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
15 with:
16 go-version: ${{ matrix.go-version }}
17 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
18 - run: go build ./...
19 test:
20 runs-on: ubuntu-latest
21 steps:
22 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
23 with:
24 check-latest: true
25 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
26 - run: go test ./...
27 node_test:
28 runs-on: ubuntu-latest
29 steps:
30 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
31 - uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4
32 with:
33 node-version: 10
34 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
35 with:
36 check-latest: true
37 - run: >
38 cd examples/internal/browser &&
39 npm install gulp-cli &&
40 npm install &&
41 ./node_modules/.bin/gulp
42 generate:
43 container:
44 image: docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env:1.19
45 options: "--user root"
46 credentials:
47 username: ${{ github.actor }}
48 password: ${{ secrets.GITHUB_TOKEN }}
49 runs-on: ubuntu-latest
50 steps:
51 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
52 - run: make install
53 - run: make clean
54 - run: make generate
55 - run: go mod tidy
56 - run: git diff --exit-code
57 bazel:
58 container:
59 image: docker.pkg.github.com/grpc-ecosystem/grpc-gateway/build-env:1.19
60 options: "--user root"
61 credentials:
62 username: ${{ github.actor }}
63 password: ${{ secrets.GITHUB_TOKEN }}
64 runs-on: ubuntu-latest
65 steps:
66 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
67 - uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4
68 with:
69 path: /home/vscode/.cache/_grpc_gateway_bazel
70 key: v1-bazel-cache-${{ hashFiles('repositories.bzl') }}
71 restore-keys: v1-bazel-cache-
72 - name: Configure bazel
73 run:
74 | # put .bazelrc in $HOME so that it's read before project's .bazelrc
75 cat > /home/vscode/.bazelrc << EOF
76 startup --output_base=/home/vscode/.cache/_grpc_gateway_bazel
77 build --@io_bazel_rules_go//go/config:race
78 # Workaround https://github.com/bazelbuild/bazel/issues/3645
79 # See https://docs.bazel.build/versions/0.23.0/command-line-reference.html
80 build --local_ram_resources=7168 # Github runners have 7G of memory
81 build --local_cpu_resources=2 # Github runners have 2 vCPU
82 EOF
83 - name: Check that Bazel BUILD files are up-to-date
84 run: bazel run //:gazelle && git diff --exit-code
85 - name: Check that repositories.bzl is up-to-date
86 run: |
87 bazel run //:gazelle -- update-repos -from_file=go.mod -to_macro=repositories.bzl%go_repositories &&
88 git diff --exit-code
89 - name: Check formatting of Bazel BUILD files
90 run: bazel run //:buildifier && git diff --exit-code
91 - name: Run tests with Bazel
92 run: bazel test //...
93 gorelease:
94 runs-on: ubuntu-latest
95 steps:
96 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
97 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
98 with:
99 go-version: 1.19
100 check-latest: true
101 - run: go run golang.org/x/exp/cmd/gorelease@latest -base=v2.19.0
102 proto_lint:
103 runs-on: ubuntu-latest
104 steps:
105 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
106 - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5
107 with:
108 check-latest: true
109 - run: make install
110 - run: PATH=$PATH:~/go/bin buf build
111 - run: PATH=$PATH:~/go/bin buf lint
112 - run: PATH=$PATH:~/go/bin buf format -w && git diff --exit-code
113 - run: PATH=$PATH:~/go/bin buf breaking --path protoc-gen-openapiv2/ --against 'https://github.com/grpc-ecosystem/grpc-gateway.git#branch=main'
114 golangci:
115 permissions:
116 pull-requests: read # for golangci/golangci-lint-action to fetch pull requests
117 runs-on: ubuntu-latest
118 steps:
119 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4
120 - uses: golangci/golangci-lint-action@3a919529898de77ec3da873e3063ca4b10e7f5cc # v3
121 with:
122 version: v1.54.2
123 fuzz:
124 runs-on: ubuntu-latest
125 steps:
126 - name: Build Fuzzers
127 id: build
128 uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
129 with:
130 oss-fuzz-project-name: "grpc-gateway"
131 dry-run: false
132 language: go
133 - name: Run Fuzzers
134 uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
135 with:
136 oss-fuzz-project-name: "grpc-gateway"
137 fuzz-seconds: 600
138 dry-run: false
139 language: go
140 - name: Upload Crash
141 uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4
142 if: failure() && steps.build.outcome == 'success'
143 with:
144 name: artifacts
145 path: ./out/artifacts
View as plain text