name: ci
on:
  push:
    branches: [main]
    tags: ['v*']
  pull_request:
    branches: [main]
  schedule:
    - cron: '15 22 * * *'
  workflow_dispatch: {} # support manual runs
permissions:
  contents: read
jobs:
  ci:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        go-version: [1.20.x, 1.21.x, 1.22.x]
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4
        with:
          fetch-depth: 1
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: ${{ matrix.go-version }}
      - name: Test
        run: make test
      - name: Lint
        # Often, lint & gofmt guidelines depend on the Go version. To prevent
        # conflicting guidance, run only on the most recent supported version.
        if: matrix.go-version == '1.22.x'
        run: make checkgenerate && make lint