summaryrefslogtreecommitdiff
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml97
1 files changed, 97 insertions, 0 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..7fb78b3
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,97 @@
+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
+ - macos-latest
+ ocaml-compiler:
+ - 4.14.x
+ - 5.0.x
+ skip-test:
+ - false
+ include:
+ - os: ubuntu-latest
+ ocaml-compiler: 4.8.x
+ skip-test: true
+ - os: windows-latest
+ ocaml-compiler: 4.14.x
+ skip-test: false
+ - os: windows-latest
+ ocaml-compiler: ocaml.5.0.0,ocaml-option-mingw
+ skip-test: false
+
+ 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@v3
+
+ - name: Use 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: ${{ matrix.os == 'ubuntu-latest' }}
+ opam-depext: ${{ !matrix.skip-test }}
+ opam-depext-flags: --with-test
+
+ - name: Use OCaml ${{ matrix.ocaml-compiler }}
+ if: runner.os != 'Windows'
+ uses: ocaml/setup-ocaml@v2
+ with:
+ ocaml-compiler: ${{ matrix.ocaml-compiler }}
+ dune-cache: ${{ matrix.os == 'ubuntu-latest' }}
+ opam-depext: ${{ !matrix.skip-test }}
+ opam-depext-flags: --with-test
+
+
+ - run: opam install . --with-test
+ if: ${{ !matrix.skip-test }}
+
+ - run: opam install .
+ if: ${{ matrix.skip-test }}
+
+ - run: opam exec -- make build
+
+ - run: opam exec -- make test
+ if: ${{ !matrix.skip-test }}
+
+ - run: opam exec -- git diff --exit-code
+
+ lint-fmt:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Use OCaml 4.14.x
+ uses: ocaml/setup-ocaml@v2
+ with:
+ ocaml-compiler: 4.14.x
+ dune-cache: true
+
+ - name: Lint fmt
+ uses: ocaml/setup-ocaml/lint-fmt@v2