name: CI on: push: branches: - main pull_request: branches: - main jobs: test: name: Test runs-on: ubuntu-latest strategy: matrix: go-version: ['1.18', '1.21'] steps: - uses: actions/checkout@v7 - name: Set up Go uses: actions/setup-go@v6 with: go-version: ${{ matrix.go-version }} - name: Cache Go modules uses: actions/cache@v6 with: path: ~/go/pkg/mod key: ${{ runner.os }}-go-${{ matrix.go-version }}-${{ hashFiles('**/go.sum') }} restore-keys: | ${{ runner.os }}-go-${{ matrix.go-version }}- - name: Download dependencies run: go mod download - name: Run tests run: go test -v -race -coverprofile=coverage.out ./... - name: Upload coverage uses: codecov/codecov-action@v7 with: files: ./coverage.out flags: unittests name: codecov-umbrella lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 - name: Set up Go uses: actions/setup-go@v6 with: go-version: '1.21' - name: golangci-lint uses: golangci/golangci-lint-action@v9 with: version: latest args: --timeout=5m build: name: Build runs-on: ubuntu-latest needs: [test, lint] steps: - uses: actions/checkout@v7 - name: Set up Go uses: actions/setup-go@v6 with: go-version: '1.21' - name: Build run: go build -v ./... - name: Verify module run: go mod verify