CI #181
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: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
schedule: | |
# Prime the caches every Monday | |
- cron: 0 1 * * MON | |
permissions: | |
contents: write | |
jobs: | |
build: | |
name: Build and test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- macos-latest | |
- ubuntu-latest | |
# - windows-latest | |
ocaml-compiler: | |
- 4.14 | |
- 5.1.1 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Load opam cache when not Windows | |
if: runner.os != 'Windows' | |
id: opam-cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: ~/.opam | |
key: opam-${{ matrix.os }}-${{ matrix.ocaml-compiler }}-${{ hashFiles('**.opam') }} | |
- name: Load opam cache when Windows | |
if: runner.os == 'Windows' | |
id: opam-cache-windows | |
uses: actions/cache/restore@v3 | |
with: | |
path: _opam | |
key: opam-${{ matrix.os }}-${{ matrix.ocaml-compiler }}-${{ hashFiles('**.opam') }} | |
- name: Use OCaml ${{ matrix.ocaml-compiler }} | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
- name: Install | |
run: make install | |
- name: Build | |
run: make build | |
- name: Check formatting | |
run: make format-check | |
- name: Run tests | |
run: make test | |
- name: Run benchmarks | |
run: make bench | |
- name: Generate docs | |
if: github.ref == 'refs/heads/main' | |
run: make docs | |
- name: Publish docs | |
uses: crazy-max/ghaction-github-pages@v1 | |
if: github.ref == 'refs/heads/main' | |
with: | |
target_branch: gh-pages | |
build_dir: _build/default/_doc/_html/ | |
env: | |
GITHUB_TOKEN: ${{ github.token }} | |
- name: Save cache when not Windows | |
uses: actions/cache/save@v3 | |
if: steps.opam-cache.outputs.cache-hit != 'true' && runner.os != 'Windows' | |
with: | |
path: ~/.opam | |
key: opam-${{ matrix.os }}-${{ matrix.ocaml-compiler }}-${{ hashFiles('**.opam') }} | |
- name: Save cache when Windows | |
uses: actions/cache/save@v3 | |
if: steps.opam-cache-windows.outputs.cache-hit != 'true' && runner.os == 'Windows' | |
with: | |
path: _opam | |
key: opam-${{ matrix.os }}-${{ matrix.ocaml-compiler }}-${{ hashFiles('**.opam') }} |