name: CI on: pull_request: push: jobs: build: strategy: fail-fast: false matrix: os: - macos-latest - ubuntu-latest - windows-latest ocaml-compiler: - 5.2.x - 4.14.x - 4.13.x include: # OCaml 4.12.x: skipping windows (fail) - ocaml-compiler: 4.12.x os: ubuntu-latest - ocaml-compiler: 4.12.x os: macos-latest # OCaml 4.11.x: skipping macos & windows (fail) - ocaml-compiler: 4.11.x os: ubuntu-latest # OCaml 4.10.x: skipping windows (fail) - ocaml-compiler: 4.10.x os: ubuntu-latest - ocaml-compiler: 4.10.x os: macos-latest # OCaml 4.08.x: skipping macos & windows (fail) # Keep the minimal version of OCaml in sync in here and `dune-project` - ocaml-compiler: 4.08.x os: ubuntu-latest runs-on: ${{ matrix.os }} steps: - name: Set git to use LF run: | git config --global core.autocrlf false git config --global core.eol lf git config --global core.ignorecase false - name: Checkout code uses: actions/checkout@v4 - name: Use OCaml ${{ matrix.ocaml-compiler }} uses: ocaml/setup-ocaml@v3 with: ocaml-compiler: ${{ matrix.ocaml-compiler }} - name: Install dependencies run: opam install . --deps-only --with-doc --with-test --with-dev-setup - name: Build run: opam exec -- dune build - name: Run tests run: opam exec -- dune runtest - name: Check for uncommitted changes run: git diff --exit-code - name: Lint fmt uses: ocaml/setup-ocaml/lint-fmt@v3 - name: Lint doc uses: ocaml/setup-ocaml/lint-doc@v3