Skip to content

Main workflow

Main workflow #83

Workflow file for this run

name: Main workflow
on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: "0 6 * * 1"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
ocaml-compiler:
- 4.11.x
- 4
- 5
package:
- ppx_protocol_conv
- ppx_protocol_conv_json
- ppx_protocol_conv_jsonm
- ppx_protocol_conv_msgpack
- ppx_protocol_conv_xml_light
- ppx_protocol_conv_xmlm
- ppx_protocol_conv_yaml
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Use OCaml ${{ matrix.ocaml-compiler }}
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: true
- name: Install build dependencies (${{ matrix.package }})
run: |
opam_files="./ppx_protocol_conv.opam"
if [ "${{ matrix.package }}" != "ppx_protocol_conv" ]; then
opam_files="$opam_files ./${{ matrix.package }}.opam"
fi
opam install $opam_files --deps-only
- name: Build (${{ matrix.package }})
run: |
dune_packages="${{ matrix.package }}"
if [ "${{ matrix.package }}" != "ppx_protocol_conv" ]; then
dune_packages="ppx_protocol_conv,${{ matrix.package }}"
fi
opam exec -- dune build -p "$dune_packages" @install
- name: Test (${{ matrix.package }})
if: startsWith(matrix.ocaml-compiler, '5')
run: |
opam install ./*.opam --deps-only --with-test
case "${{ matrix.package }}" in
ppx_protocol_conv)
opam exec -- dune runtest ppx/test test
;;
ppx_protocol_conv_json)
opam exec -- dune runtest drivers/json drivers/json/test
;;
ppx_protocol_conv_jsonm)
opam exec -- dune runtest drivers/jsonm/test
;;
ppx_protocol_conv_msgpack)
opam exec -- dune runtest drivers/msgpack/test
;;
ppx_protocol_conv_xml_light)
opam exec -- dune runtest drivers/xml_light/test
;;
ppx_protocol_conv_xmlm)
opam exec -- dune runtest drivers/xmlm/test
;;
ppx_protocol_conv_yaml)
opam exec -- dune runtest drivers/yaml/test
;;
esac