name: Go on: push: branches: - main - 'release/**' 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" jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run golangci-lint uses: golangci/golangci-lint-action@v2 with: version: latest args: --timeout=30m test: name: Test strategy: matrix: go-version: [ 1.15.x, 1.16.x, 1.17.x ] platform: [ ubuntu-latest, macos-latest, windows-latest ] runs-on: ${{ matrix.platform }} steps: - name: Install Go uses: actions/setup-go@v2 with: go-version: ${{ matrix.go-version }} - name: Checkout code uses: actions/checkout@v2 - name: Run tests with coverage run: go test -v -race -coverprofile=coverage -covermode=atomic ./... - name: Upload coverage report to Codecov uses: codecov/codecov-action@v1.5.0 with: file: ./coverage flags: unittests