version: 2.1

jobs:
  compile:
    parameters:
      os:
        type: string
      go:
        type: string
    docker:
      - image: registry.example.invalid/ci/go:<< parameters.go >>
    steps:
      - checkout
      - run: go build ./...

workflows:
  cross-build:
    jobs:
      - compile:
          name: compile-<< matrix.os >>-<< matrix.go >>
          matrix:
            parameters:
              os: [linux, darwin, windows]
              go: ["1.22", "1.23"]
            exclude:
              - os: windows
                go: "1.22"
          filters:
            tags:
              only: /^v.*/
