Skip to content

Builds, tests & co

Builds, tests & co #7

Workflow file for this run

name: Builds, tests & co
on:
pull_request:
push:
schedule:
# Prime the caches every Monday
- cron: 0 1 * * MON
permissions: read-all
jobs:
hygiene:
name: Hygiene
runs-on: ubuntu-latest
steps:
- name: Checkout tree
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set-up Node.js 20
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v4.0.2
with:
node-version: 20
- run: corepack enable
- run: yarn install --immutable
- run: yarn format:check
if: always()
- run: yarn lint
if: always()
- run: yarn typecheck
if: always()
- name: Ensure dist directory is up-to-date
shell: bash
run: |
yarn build
if [ "$(git status dist lint-doc lint-fmt lint-opam --porcelain | wc -l)" -gt "0" ]; then
echo "Detected uncommitted changes after build. See status below:"
git diff
exit 1
fi
test:
name: Test
needs: hygiene
strategy:
fail-fast: false
matrix:
# https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources
os:
- macos-14
- ubuntu-22.04
ocaml-compiler:
- "5.1"
allow-prerelease-opam:
- false
include:
- os: windows-2022
ocaml-compiler: "4.14"
allow-prerelease-opam: false
- os: ubuntu-22.04
ocaml-compiler: ocaml-variants.5.1.0+options,ocaml-option-flambda
allow-prerelease-opam: true
- os: windows-2022
ocaml-compiler: ocaml-variants.5.1.0+options,ocaml-option-mingw
allow-prerelease-opam: false
opam-repositories: |
windows-5.0: https://github.com/dra27/opam-repository.git#windows-5.0
sunset: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset
default: https://github.com/ocaml/opam-repository.git
runs-on: ${{ matrix.os }}
steps:
- name: Checkout tree
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set-up Mold
if: runner.os == 'Linux'
uses: rui314/setup-mold@v1
- name: Set-up OCaml ${{ matrix.ocaml-compiler }}
uses: ./
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
allow-prerelease-opam: ${{ matrix.allow-prerelease-opam }}
dune-cache: ${{ matrix.os != 'windows-2022' }}
opam-repositories: ${{ matrix.opam-repositories }}
- run: opam depext --install uri
- run: opam install ocamlbuild