Skip to content

add parameters to data structure of the rules and change name to guar… #466

add parameters to data structure of the rules and change name to guar…

add parameters to data structure of the rules and change name to guar… #466

Workflow file for this run

name: ci
on: [push]
jobs:
lint-ocamlformat:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup OCaml
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.14.x
dune-cache: true
- 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: |
# needs `opam exec --` as `dune` is not in the shell PATH
opam exec -- dune fmt --preview
cli-and-doc:
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@v3
with:
ocaml-compiler: ${{ matrix.ocaml-compiler }}
dune-cache: true
- 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:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup OCaml
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.13.x
dune-cache: true
- 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
webapp-ubuntu:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup OCaml
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.13.x
dune-cache: true
- 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: online-ui
path: |
site
viz
- name: Archive Javascript app
uses: actions/upload-artifact@v4
with:
name: linux
path: |
Kappapp.tar.gz
webapp-macos:
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup OCaml
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 4.13.x
dune-cache: true
- 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
webapp-windows:
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
dune-cache: true
- 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 KappappWin
# Note: This runs powershell thus the different path syntax
mv .\build\KappappWin .
# Note: Windows VMs on GitHub Action do not have zip command but provide 7z
7z a -tzip KappappWin.zip KappappWin
- name: Archive Windows app
uses: actions/upload-artifact@v4
with:
name: windows
path: KappappWin.zip
webapp-playwright-test:
needs: [cli-and-doc, webapp-ubuntu]
if: github.ref == 'refs/heads/master'
timeout-minutes: 75
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Install dependencies
run: |
npm ci
sudo apt-get update
sudo apt-get install lighttpd
sudo npm install -D @playwright/test@latest
npm install --save-dev @types/node @types/yauzl
- name: Install Playwright Browsers
run: npx playwright install --with-deps
- name: Download online-ui
uses: actions/download-artifact@v4
with:
name: online-ui
- name: Setup webapp server
run: >-
echo '
include_shell "/usr/share/lighttpd/create-mime.conf.pl"
server.document-root = "/home/runner/work/KappaTools/KappaTools/site"
server.port = 12345
server.username = "root"
server.groupname = "root"
' > lighttpd.conf
lighttpd -f lighttpd.conf -D &
sleep 10 && curl -i http://127.0.0.1:12345/index.html # test
- name: Run Playwright tests
run: DEBUG=pw:webserver npx playwright test --retries=3 --trace retain-on-first-failure
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 30
deploy:
needs: [cli-and-doc, webapp-ubuntu, webapp-macos, webapp-windows, webapp-playwright-test]
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-22.04
strategy:
matrix:
deploy-name: [doc, online-ui, linux, macos, windows]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{matrix.deploy-name}}
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.DEPLOY_KEY }}
known_hosts: api.kappalanguage.org ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJooIEJd6sgRL5JUKGqh9zB3Xla1MchqR8IWl7Nh9ahm9Ji6IwV9QSKG9YQEIHdJWxBk4UzbfRWGkDK9q1GggyM=
- name: Run deploy script
run: dev/deploy-to-website.sh ${{matrix.deploy-name}}
# TODO: see if add cache
# # from https://github.com/hazelgrove/hazel/blob/868f673119827a35ec67fad5e7e0d5135ce91d4c/.github/workflows/deploy_branches.yml#L19-L29
# - name: Retrieve the switch environment if cached
# id: opam-cache-switch
# uses: actions/cache@v4
# with:
# path: '_opam'
# key: ${{ runner.os }}-opam-${{ env.cache-name }}-${{ matrix.ocaml-compiler }}-${{ matrix.additional-packages}}-${{ hashFiles('*.opam') }}