From 12b119e972a5294ec6585ea000a95dbba2a9b831 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20Roch=C3=A9?= Date: Sat, 23 Dec 2023 11:41:49 +0100 Subject: [PATCH] ci: add github actions --- .github/dependabot.yml | 6 ++ .github/workflows/build-test.yml | 40 +++++++++++++ .github/workflows/deploy-doc.yml | 57 +++++++++++++++++++ .github/workflows/lint.yml | 57 +++++++++++++++++++ .../workflows/opam-dependency-submission.yml | 22 +++++++ 5 files changed, 182 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/build-test.yml create mode 100644 .github/workflows/deploy-doc.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/opam-dependency-submission.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7418925 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: monthly diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml new file mode 100644 index 0000000..d490940 --- /dev/null +++ b/.github/workflows/build-test.yml @@ -0,0 +1,40 @@ +name: Build and Test + +on: + - push + - pull_request + +jobs: + build-and-test: + strategy: + fail-fast: false + matrix: + os: + - macos-latest + - ubuntu-latest + # - windows-latest + ocaml-version: + - 4.14 + - 5.1 + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Use OCaml ${{ matrix.ocaml-version }} + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: ${{ matrix.ocaml-version }} + dune-cache: true + opam-depext-flags: "--with-test" + allow-prerelease-opam: true + + - run: opam install . --deps-only --with-test + + - name: build project + run: opam exec -- dune build + + - name: run test + run: opam exec -- dune runtest diff --git a/.github/workflows/deploy-doc.yml b/.github/workflows/deploy-doc.yml new file mode 100644 index 0000000..3ea17c7 --- /dev/null +++ b/.github/workflows/deploy-doc.yml @@ -0,0 +1,57 @@ +name: Deploy odoc to GitHub Pages + +on: + push: + branches: + - main + +permissions: read-all + +concurrency: + group: deploy-odoc + cancel-in-progress: true + +jobs: + deploy-odoc: + name: Deploy odoc to GitHub Pages + + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + permissions: + contents: read + id-token: write + pages: write + + runs-on: ubuntu-latest + + steps: + - name: Checkout tree + uses: actions/checkout@v4 + + - name: Set-up OCaml + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: "5.1" + dune-cache: true + opam-depext-flags: "--with-doc" + allow-prerelease-opam: true + + - name: Install dependencies + run: opam install . --deps-only --with-doc + + - name: Build documentation + run: opam exec -- dune build @doc + + - name: Set-up Pages + uses: actions/configure-pages@v4 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + path: _build/default/_doc/_html + + - name: Deploy odoc to GitHub Pages + id: deployment + uses: actions/deploy-pages@v3 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..cc34b59 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,57 @@ +name: Lint + +on: + - push + - pull_request + +jobs: + lint-fmt: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Use OCaml 5.1 + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 5.1 + dune-cache: true + opam-depext-flags: "--with-doc" + allow-prerelease-opam: true + + - name: Lint fmt + uses: ocaml/setup-ocaml/lint-fmt@v2 + + lint-opam: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Use OCaml 5.1 + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 5.1 + dune-cache: true + opam-depext-flags: "--with-doc" + allow-prerelease-opam: true + + - name: Lint opam + uses: ocaml/setup-ocaml/lint-opam@v2 + + lint-doc: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Use OCaml 5.1 + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 5.1 + dune-cache: true + opam-depext-flags: "--with-doc" + allow-prerelease-opam: true + + - name: Lint doc + uses: ocaml/setup-ocaml/lint-doc@v2 diff --git a/.github/workflows/opam-dependency-submission.yml b/.github/workflows/opam-dependency-submission.yml new file mode 100644 index 0000000..72b1bec --- /dev/null +++ b/.github/workflows/opam-dependency-submission.yml @@ -0,0 +1,22 @@ +name: Opam Dependency Submission + +on: + - push + - pull_request + +jobs: + opam-dependency-submission: + runs-on: ubuntu-latest + steps: + - name: Checkout tree + uses: actions/checkout@v4 + + - name: Set-up OCaml 5.1 + uses: ocaml/setup-ocaml@v2 + with: + ocaml-compiler: 5.1 + dune-cache: true + allow-prerelease-opam: true + + - name: Opam Dependency Submission + uses: ocaml/setup-ocaml/analysis@v2