diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml new file mode 100644 index 00000000..8be75a95 --- /dev/null +++ b/.github/workflows/go.yml @@ -0,0 +1,77 @@ +name: Go +on: + push: + branches: + - main + - beta + - dev + - 'jc/**' + - 'feature/**' + paths: + - '**.go' + - 'go.mod' + - '.golangci.yml' + - '.github/workflows/go.yml' + pull_request: + paths: + - '**.go' + - 'go.mod' + - '.golangci.yml' + - '.github/workflows/go.yml' +env: + GOPROXY: "https://proxy.golang.org" + +permissions: + contents: read + +jobs: + # lint: + # permissions: + # contents: read # for actions/checkout to fetch code + # pull-requests: read # for golangci/golangci-lint-action to fetch pull requests + # name: Lint + # runs-on: ubuntu-latest + # steps: + # - name: Checkout code + # uses: actions/checkout@v3 + # - name: Run golangci-lint + # uses: golangci/golangci-lint-action@v3 + # with: + # version: latest + # args: --timeout=30m + + test: + name: Test + strategy: + matrix: + go-version: [ 1.18.x, 1.19.x ] + platform: [ ubuntu-latest, macos-latest ] + runs-on: ${{ matrix.platform }} + steps: + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.go-version }} + - name: Checkout code + uses: actions/checkout@v3 + - name: Run tests + run: go test -v -race ./... + + # Running tests with race detection consumes too much memory on Windows, + # see https://github.com/golang/go/issues/46099 for details. + test-windows: + name: TestOnWindows + strategy: + matrix: + go-version: [ 1.18.x, 1.19.x ] + platform: [ windows-latest ] + runs-on: ${{ matrix.platform }} + steps: + - name: Install Go + uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.go-version }} + - name: Checkout code + uses: actions/checkout@v3 + - name: Run tests + run: go test -v ./... diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 00000000..a86bdf46 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,24 @@ +linters-settings: + staticcheck: + checks: [ + "all", + "-SA1019" # There are valid use cases of strings.Title + ] + nakedret: + max-func-lines: 0 # Disallow any unnamed return statement + +linters: + enable: + # - unused + # - errcheck + # - gosimple + - govet + # - ineffassign + # - staticcheck + # - typecheck + # - nakedret + - gofmt + # - rowserrcheck + # - unconvert + - goimports + # - unparam