name: Go on: push: branches: - main pull_request: permissions: contents: read concurrency: # This will make sure we only apply the concurrency limits on pull requests # but not pushes to master branch by making the concurrency group name unique # for pushes group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: fmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: "go.mod" cache: false - name: fmt run: go fmt ./... - name: Check diff run: git diff --exit-code mocks: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: "go.mod" cache: false - name: "Run mockery" run: go tool github.com/vektra/mockery/v3 - name: Check diff run: git diff --exit-code lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: "go.mod" cache: false - name: golangci-lint uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 with: only-new-issues: true version: v2.5.0 test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-go@v6 with: go-version-file: "go.mod" cache: true - name: Run tests run: go test ./... -race