Skip to content

Commit

Permalink
chore: Add github actions for CI (#6)
Browse files Browse the repository at this point in the history
* chore: Add github actions for CI

Signed-off-by: Vaibhav Rabber <[email protected]>

* install protoc

Signed-off-by: Vaibhav Rabber <[email protected]>

* more setup protoc

Signed-off-by: Vaibhav Rabber <[email protected]>

* fix

Signed-off-by: Vaibhav Rabber <[email protected]>

* fix link

* submodule

* protoc version

Signed-off-by: Vaibhav Rabber <[email protected]>

* upgrade protoc version

---------

Signed-off-by: Vaibhav Rabber <[email protected]>
  • Loading branch information
vrongmeal authored Jan 6, 2025
1 parent 5e0edfd commit 71b0a71
Show file tree
Hide file tree
Showing 12 changed files with 407 additions and 81 deletions.
116 changes: 116 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: CI
permissions:
contents: read
on:
pull_request:
push:
branches:
- main

env:
CLICOLOR: 1

concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
ci:
permissions:
contents: none
name: CI
needs: [examples, test, golangci-lint, gen-lint]
runs-on: ubuntu-latest
if: always()
steps:
- name: Failed
run: exit 1
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped')

examples:
name: Build examples
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- uses: arduino/setup-task@v2
with:
version: 3.40.x
- uses: arduino/setup-protoc@v3
with:
version: 29.x
- name: Setup protoc
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- name: Build
run: |
for eg in `go list ./examples/... | sed 's|.*/||'`; do
echo "Building '$eg' example"
task example:build NAME=$eg
done
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- uses: arduino/setup-task@v2
with:
version: 3.40.x
- uses: arduino/setup-protoc@v3
with:
version: 29.x
- name: Setup protoc
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- name: Test
run: task test

golangci-lint:
name: GolangCI Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- name: Lint
uses: golangci/golangci-lint-action@v6
with:
version: v1.63

gen-lint:
name: Code Generation Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-go@v5
with:
go-version: '1.23'
- uses: arduino/setup-task@v2
with:
version: 3.40.x
- uses: arduino/setup-protoc@v3
with:
version: 29.x
- name: Setup protoc
run: |
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
- name: Lint
run: task lint:gen
70 changes: 70 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
linters:
disable-all: true
enable:
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- unused
- containedctx
- contextcheck
- copyloopvar
- dupl
- dupword
- durationcheck
- err113
- errname
- errorlint
- exhaustive
- exptostd
- fatcontext
- forcetypeassert
- gci
- ginkgolinter
- gocheckcompilerdirectives
- gochecksumtype
- gocognit
- goconst
- gocritic
- godot
- gofmt
- gofumpt
- goimports
- goprintffuncname
- grouper
- importas
- intrange
- lll
- makezero
- mirror
- misspell
- nilerr
- nilnesserr
- nilnil
- nlreturn
- nolintlint
- nonamedreturns
- nosprintfhostport
- prealloc
- predeclared
- protogetter
- reassign
- recvcheck
- revive
- stylecheck
- tenv
- testableexamples
- testifylint
- unconvert
- unparam
- usestdlibvars
- wastedassign
- whitespace
- wsl

linters-settings:
exhaustive:
default-signifies-exhaustive: true
gochecksumtype:
default-signifies-exhaustive: false
41 changes: 38 additions & 3 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,55 @@ version: '3'
tasks:
example:
aliases: [eg]
requires:
vars: [NAME]
cmds:
- task: example:build
vars: { NAME: '{{.NAME}}' }
- .out/examples/{{.NAME}} {{.CLI_ARGS}}

example:build:
deps:
- gen
requires:
vars: [NAME]
cmds:
- go build -o .out/examples/{{.NAME}} ./examples/{{.NAME}}
- .out/examples/{{.NAME}} {{.CLI_ARGS}}

test:
deps:
- gen
cmds:
- go test ./...

lint:
deps:
- lint:gen
- lint:go

lint:go:
deps:
- gen
cmds:
- golangci-lint run

lint:gen:
deps:
- gen
cmds:
- |
git diff --exit-code pb/*.go s2/*.sync.go && echo "Up-to-date" || {
echo "Not up-to-date"
echo "Run task:gen and update the generated code"
exit 1
}
fmt:
deps:
- gen
cmds:
- golangci-lint run --fix &> /dev/null

gen:
deps:
- gen:proto
Expand All @@ -32,7 +67,7 @@ tasks:
msg: |
`protoc-gen-go` command not found
Install the Go extension using:
$ go install google.golang.org/grpc/cmd/protoc-gen-go@latest
$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
- sh: which protoc-gen-go-grpc
msg: |
`protoc-gen-go-grpc` command not found
Expand Down Expand Up @@ -93,7 +128,7 @@ tasks:
-i pb/s2_grpc.pb.go \
-t syncgen/client.sync.tmpl \
-o s2/client.sync.go
gen:sync:_bin:
sources:
- cmd/sync-docs/*.go
Expand Down
Loading

0 comments on commit 71b0a71

Please sign in to comment.