Add ocamlformat to CI #388
Workflow file for this run
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] | |
jobs: | |
ocamlformat: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.14.x | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
opam depext --install --yes dune | |
opam install --yes ocamlformat=0.26.2 | |
- name: Run format check | |
run: dune fmt --preview | |
install-ubuntu: | |
needs: ocamlformat | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: # 2x2 versions ran here, with 2 different ocaml versions and with/without labltk | |
ocaml-compiler: | |
- 4.13.x | |
- 4.14.x | |
additional-packages: | |
- | |
- labltk | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: ${{ matrix.ocaml-compiler }} | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install --yes gnuplot-nox \ | |
poppler-utils graphviz texlive-latex-recommended \ | |
texlive-fonts-recommended texlive-pictures tex4ht \ | |
texlive-latex-extra | |
opam depext --install --yes dune odoc camlp-streams \ | |
${{ matrix.additional-packages }} | |
opam install --yes . --deps-only | |
- name: Make Kappa | |
run: opam exec -- make all | |
- name: Make documentation | |
run: opam exec -- make doc_html | |
- name: Make check | |
run: opam exec -- make --jobs=2 check | |
- name: Archive documentation | |
uses: actions/upload-artifact@v4 | |
if: matrix.ocaml-compiler == '4.14.x' && matrix.additional-packages == '' | |
with: | |
name: doc | |
path: | | |
man | |
_build/default/_doc/_html/kappa-library | |
python: | |
needs: ocamlformat | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.13.x | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install --yes gnuplot-nox \ | |
poppler-utils graphviz texlive-latex-recommended \ | |
texlive-fonts-recommended texlive-pictures tex4ht | |
opam install --yes . --deps-only | |
pip install nose | |
- name: Make Kappa | |
run: | | |
opam exec -- make all | |
opam exec -- dune build @install | |
- name: Uninstall nose | |
run: opam exec -- pip uninstall -y nose | |
- name: Reinstall nose | |
run: "opam exec -- pip install nose-py3" | |
- name: Nose tests | |
run: opam exec -- nosetests -v tests/kappy | |
js: | |
needs: ocamlformat | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.13.x | |
- name: Install system dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install --yes gnuplot-nox \ | |
poppler-utils graphviz texlive-latex-recommended \ | |
texlive-fonts-recommended texlive-pictures tex4ht | |
- name: Install OPAM dependencies | |
run: | | |
opam install --yes . --deps-only | |
- name: Make Kappa | |
run: opam exec -- make all | |
- name: Make Javascript app | |
run: | | |
opam exec -- make Kappapp.tar.gz build/site/index.html | |
cp -r gui/js_lib/viz . | |
mv build/Kappapp.tar.gz . | |
mv build/site . | |
- name: Archive Javascript app | |
uses: actions/upload-artifact@v4 | |
with: | |
name: js | |
path: | | |
site | |
viz | |
Kappapp.tar.gz | |
macos: | |
needs: ocamlformat | |
runs-on: macos-13 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v2 | |
with: | |
ocaml-compiler: 4.13.x | |
- name: Install OPAM dependencies | |
run: | | |
opam install --yes . --deps-only | |
- name: Make Kappa | |
run: opam exec -- make all | |
- name: Make MacOS app | |
run: | | |
opam exec -- make Kappapp.app | |
mv build/Kappapp.app . | |
- name: Sign MacOS binaries | |
run: | | |
find Kappapp.app/Contents/ \( -name \*.app -or -name \*.framework \) \ | |
-exec codesign --deep -s - \{\} \; | |
codesign -s - Kappapp.app | |
zip -y -r Kappapp.app.zip Kappapp.app | |
- name: Archive MacOS app | |
uses: actions/upload-artifact@v4 | |
with: | |
name: macos | |
path: | | |
Kappapp.app.zip | |
windows: | |
needs: ocamlformat | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup OCaml | |
uses: ocaml/setup-ocaml@v3 | |
with: | |
ocaml-compiler: 4.14.x | |
- name: Install OPAM dependencies | |
run: | | |
opam install --yes . --deps-only | |
- name: Make Kappa | |
run: opam exec -- make all | |
- name: Make Windows app | |
run: | | |
opam exec -- make KappaBin | |
# Note: This runs powershell thus the different path syntax | |
mv .\build\KappaBin . | |
# Note: Windows VMs on GitHub Action do not have zip command but provide 7z | |
7z a -tzip KappaBin.zip KappaBin | |
- name: Archive Windows app | |
uses: actions/upload-artifact@v4 | |
with: | |
name: windows | |
path: | | |
KappaBin.zip | |
deploy-docs: | |
needs: install-ubuntu | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download doc artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: doc | |
- name: Install SSH Key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.DEPLOY_KEY }} | |
known_hosts: api.kappalanguage.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJooIEJd6sgRL5JUKGqh9zB3Xla1MchqR8IWl7Nh9ahm9Ji6IwV9QSKG9YQEIHdJWxBk4UzbfRWGkDK9q1GggyM= | |
- run: dev/update-web.sh native | |
deploy-js: | |
needs: js | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download js artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: js | |
- name: Install SSH Key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.DEPLOY_KEY }} | |
known_hosts: api.kappalanguage.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJooIEJd6sgRL5JUKGqh9zB3Xla1MchqR8IWl7Nh9ahm9Ji6IwV9QSKG9YQEIHdJWxBk4UzbfRWGkDK9q1GggyM= | |
- run: dev/update-web.sh js | |
deploy-macos: | |
needs: macos | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download MacOS artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: macos | |
- name: Install SSH Key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.DEPLOY_KEY }} | |
known_hosts: api.kappalanguage.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJooIEJd6sgRL5JUKGqh9zB3Xla1MchqR8IWl7Nh9ahm9Ji6IwV9QSKG9YQEIHdJWxBk4UzbfRWGkDK9q1GggyM= | |
- run: dev/update-web.sh MacOS | |
deploy-windows: | |
needs: windows | |
runs-on: ubuntu-22.04 | |
if: github.ref == 'refs/heads/master' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download Windows artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: windows | |
- name: Install SSH Key | |
uses: shimataro/ssh-key-action@v2 | |
with: | |
key: ${{ secrets.DEPLOY_KEY }} | |
known_hosts: api.kappalanguage.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJooIEJd6sgRL5JUKGqh9zB3Xla1MchqR8IWl7Nh9ahm9Ji6IwV9QSKG9YQEIHdJWxBk4UzbfRWGkDK9q1GggyM= | |
- run: dev/update-web.sh windows |