name: Go

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:

  test:
    strategy:
      matrix:
        go-version: [1.17.x]
        os: [ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v2

      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: ${{ matrix.go-version }}

      - name: Format
        run: if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then exit 1; fi

      - name: Create k8s Kind Cluster
        uses: helm/kind-action@v1.2.0

      - name: Test all
        run: go test -coverprofile=coverage.txt -covermode=atomic ./...

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3