name: CI

on:
  pull_request:
    branches:
      - master
      - release-1.9
  push:
    branches:
      - master
      - release-1.9
    tags: '*'

concurrency:
  # Skip intermediate builds: always.
  # Cancel intermediate builds: always.
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{ github.event_name }}
    runs-on: ${{ matrix.os }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        version:
          - '1.3'
          - '1' # automatically expands to the latest stable 1.x release of Julia.
          - 'nightly'
        os:
          - ubuntu-latest
          - macos-latest
          - windows-latest
        arch:
          - x64
          - x86
        # 32-bit Julia binaries are not available on macOS
        exclude:
          - os: macOS-latest
            arch: x86
    steps:
      - uses: actions/checkout@v4
      - uses: julia-actions/cache@v2
      - uses: julia-actions/setup-julia@v2
        with:
          version: ${{ matrix.version }}
          arch: ${{ matrix.arch }}
      - run: julia --color=yes .ci/test_and_change_uuid.jl
      - uses: julia-actions/julia-buildpkg@v1
      - uses: julia-actions/julia-runtest@v1
      - uses: julia-actions/julia-processcoverage@v1
      - uses: codecov/codecov-action@v4
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          file: lcov.info
