Support for OCaml trunk #2367
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
pull_request: | |
push: | |
branches: | |
- master | |
schedule: | |
# Prime the caches every Monday | |
- cron: 0 1 * * MON | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
ocaml-compiler: | |
- 4.08.x | |
- 4.09.x | |
- 4.10.x | |
- 4.11.x | |
- 4.12.x | |
- 4.13.x | |
- 5.0.x | |
skip-test: | |
- true | |
skip-doc: | |
- true | |
skip-effects: | |
- true | |
include: | |
- os: ubuntu-latest | |
ocaml-compiler: 4.14.x | |
skip-effects: true | |
skip-test: false | |
skip-doc: true | |
- os: macos-latest | |
ocaml-compiler: 4.14.x | |
skip-effects: true | |
skip-test: false | |
skip-doc: true | |
- os: windows-latest | |
ocaml-compiler: 4.14.x | |
skip-effects: true | |
skip-test: false | |
skip-doc: true | |
- os: ubuntu-latest | |
ocaml-compiler: 5.1.x | |
skip-effects: false | |
skip-test: false | |
skip-doc: false | |
- os: macos-latest | |
ocaml-compiler: 5.1.x | |
skip-effects: true | |
skip-test: false | |
skip-doc: true | |
- os: windows-latest | |
ocaml-compiler: ocaml.5.1.1,ocaml-option-mingw | |
skip-effects: false | |
skip-test: false | |
skip-doc: true | |
- os: ubuntu-latest | |
ocaml-compiler: ocaml-variants.5.3.0+trunk | |
skip-effects: false | |
skip-test: false | |
skip-doc: true | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set-up Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: lts/* | |
- name: Set-up OCaml ${{ matrix.ocaml-compiler }} | |
if: runner.os == 'Windows' | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
opam-repositories: | | |
dra27: https://github.com/dra27/opam-repository.git#windows-5.0 | |
default: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset | |
opam: https://github.com/ocaml/opam-repository.git | |
dune-cache: true | |
opam-depext: false | |
- name: Set-up OCaml ${{ matrix.ocaml-compiler }} | |
if: runner.os != 'Windows' | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
allow-prerelease-opam: true | |
dune-cache: true | |
opam-depext: false | |
- run: opam pin add ppxlib git+https://github.com/hhugo/ppxlib.git#jsoo-ocaml-52 --no-action | |
if: ${{ matrix.ocaml-compiler == 'ocaml-variants.5.3.0+trunk' }} | |
- run: opam pin add ocaml-compiler-libs git+https://github.com/art-w/ocaml-compiler-libs.git#ocaml-5.2-trunk --no-action | |
if: ${{ matrix.ocaml-compiler == 'ocaml-variants.5.3.0+trunk' }} | |
- run: opam pin add ./ --no-action | |
- run: opam install . --best-effort | |
if: ${{ matrix.skip-test }} | |
- run: opam install . --with-test | |
if: ${{ !matrix.skip-test }} | |
- run: opam exec -- make all | |
if: ${{ !matrix.skip-test }} | |
- run: opam exec -- make tests | |
if: ${{ !matrix.skip-test }} | |
- run: opam exec -- dune build @all @runtest --profile using-effects | |
if: ${{ !matrix.skip-effects }} | |
- run: opam exec -- git diff --exit-code | |
if: ${{ !matrix.skip-test }} | |
- name: build doc | |
if: ${{ !matrix.skip-doc && github.event_name == 'push' && github.ref_name == 'master'}} | |
run: | | |
opam install odoc lwt_log cohttp-lwt-unix yojson ocp-indent graphics higlo | |
opam exec -- make doc | |
- name: synchronize doc | |
if: ${{ !matrix.skip-doc && github.event_name == 'push' && github.ref_name == 'master' }} | |
uses: JamesIves/github-pages-deploy-action@v4 | |
with: | |
branch: wikidoc | |
folder: doc-dev | |
clean: true | |
target-folder: doc/dev/ | |
lint-fmt: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set-up OCaml 4.14.x | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.14.x | |
allow-prerelease-opam: true | |
dune-cache: true | |
- name: Lint fmt | |
uses: ocaml/setup-ocaml/lint-fmt@v2 |