romdo/go-debounce

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
---
name: CI
on: [push]

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v3
        with:
          go-version: 1.19 # golangci-lint requires 1.19+
      - uses: actions/cache@v3
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-golangcilint-${{ hashFiles('**/Makefile') }}
          restore-keys: |
            ${{ runner.os }}-golangcilint-
      - name: Check if mods are tidy
        run: make lint
        env:
          GOLANGCILINTARGS: --out-format=github-actions

  tidy:
    name: Tidy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v3
        with:
          go-version: 1.18
      - uses: actions/cache@v3
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
      - name: Check if mods are tidy
        run: make check-tidy

  cov:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v3
        with:
          go-version: 1.18
      - uses: actions/cache@v3
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
      - name: Publish coverage
        uses: paambaati/codeclimate-action@v3.2.0
        env:
          VERBOSE: "true"
          GOMAXPROCS: 4
          TESTARGS: -max-retries=2
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        with:
          coverageCommand: make cov
          prefix: github.com/${{ github.repository }}
          coverageLocations: |
            ${{ github.workspace }}/coverage.out:gocov

  test:
    name: Test
    strategy:
      fail-fast: false
      matrix:
        go_version:
          - "1.18"
          - "1.19"
          - "1.20"
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-go@v3
        with:
          go-version: ${{ matrix.go_version }}
      - uses: actions/cache@v3
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
      - name: Run tests
        run: make test
        env:
          TESTARGS: -max-retries=2

  release-please:
    needs: [lint, tidy, test]
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: google-github-actions/release-please-action@v3
        id: release-please
        with:
          command: manifest