name: Tests on: pull_request: branches: - master types: [ opened, synchronize ] workflow_dispatch: jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: golangci-lint uses: golangci/golangci-lint-action@v2 with: version: latest test_cover: name: Coverage runs-on: ubuntu-20.04 env: CGO_ENABLED: 0 steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: 1.18 - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Write coverage profile run: go test -v ./... -coverprofile=./coverage.txt -covermode=atomic -coverpkg=./pkg...,./cli/... - name: Upload coverage results to Codecov uses: codecov/codecov-action@v1 with: fail_ci_if_error: false path_to_write_report: ./coverage.txt verbose: true tests: name: Run tests runs-on: ${{ matrix.os }} strategy: matrix: os: [ ubuntu-20.04, windows-2022 ] go_versions: [ '1.16', '1.17', '1.18' ] exclude: - os: windows-2022 go_versions: '1.16' - os: windows-2022 go_versions: '1.17' - os: ubuntu-20.04 go_versions: '1.18' fail-fast: false steps: - uses: actions/checkout@v2 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@v2 with: go-version: '${{ matrix.go_versions }}' - name: Restore Go modules from cache uses: actions/cache@v2 with: path: /home/runner/go/pkg/mod key: deps-${{ hashFiles('go.sum') }} - name: Update Go modules run: go mod download -json - name: Run tests run: go test -v ./... - name: Run generic tests run: go test -v -count=1 ./... --tags=generic