Skip to content

Switch to opam

Switch to opam #1000

Workflow file for this run

name: CI
on:
push:
branches: [master]
pull_request:
branches: [master]
merge_group:
workflow_dispatch:
env:
NODE_VERSION: 18
DOCKER_TEST_TAG: gillian:test
jobs:
build:
strategy:
fail-fast: false
matrix:
operating-system: [macos-latest, ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- uses: ocaml/setup-ocaml@v2
with:
ocaml-compiler: "ocaml-variants.5.2.0+options"
- name: Installing Python prerequisites
run: sudo pip install sphinx furo
- name: Restore Cache
id: restore-cache
uses: actions/cache@v3
env:
cache-name: cache-ocaml
with:
path: _opam
key: ${{ runner.os }}-${{ env.cache-name}}-ocaml-5.2.0-${{ hashFiles('**/*.opam') }}
restore-keys: |
${{ runner.os }}-${{ env.cache-name}}-ocaml-5.2.0
- name: Install dependencies
run: make init-ci
- name: Build Gillian
run: opam exec -- dune build @all
- name: Basic tests
run: opam exec -- dune test
- name: Wisl checks
run: "./wisl/scripts/quicktests.sh"
- name: Format checking
run: opam exec -- dune fmt
# - name: Sending artifact for next jobs
# uses: actions/upload-artifact@v3
# with:
# name: ${{ runner.os }}-release
# path: _release
- name: Building docs
run: make docs
if: runner.os == 'Linux'
- name: Sending docs artifact
uses: actions/upload-artifact@v3
with:
name: ${{ runner.os }}-docs
path: _docs
if: runner.os == 'Linux'
- name: Setting dependency cache
run: opam clean
if: steps.restore-cache.outputs.cache-hit != 'true'
gillian_c_tests:
strategy:
matrix:
operating-system: [ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
needs: build
steps:
- name: download release
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-release
path: release
- name: setting up node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: install release
run: |
yarn global add file://$(pwd)/release
echo "$(yarn global bin)" >> $GITHUB_PATH
- name: checkout project
uses: actions/checkout@v3
with:
path: Gillian
- name: init env
run: "Gillian-C/scripts/setup_environment.sh"
working-directory: "Gillian"
- name: Test All
run: "./testAll.sh"
working-directory: "Gillian/Gillian-C/environment/"
- name: Test Amazon
run: "make"
working-directory: "Gillian/Gillian-C/examples/amazon/"
gillian_js_tests:
strategy:
matrix:
operating-system: [ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
needs: build
steps:
- name: download release
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-release
path: release
- name: setting up node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: install release
run: |
yarn global add file://$(pwd)/release
echo "$(yarn global bin)" >> $GITHUB_PATH
- name: checkout project
uses: actions/checkout@v3
with:
path: Gillian
- name: init env
run: "Gillian-JS/scripts/setup_environment.sh"
working-directory: "Gillian"
- name: Test JaVerT
run: "./testJaVerT.sh"
working-directory: "Gillian/Gillian-JS/environment/"
# - name: Test Amazon
# run: "make"
# working-directory: "Gillian/Gillian-JS/Examples/Amazon/"
kanillian_c_tests:
strategy:
matrix:
operating-system: [ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
needs: build
steps:
- name: install CBMC
run: sudo apt install cbmc -y
- name: download release
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-release
path: release
- name: setting up node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: install release
run: |
yarn global add file://$(pwd)/release
echo "$(yarn global bin)" >> $GITHUB_PATH
- name: checkout project
uses: actions/checkout@v3
with:
path: Gillian
- name: init env
run: "kanillian/scripts/setup_environment.sh"
working-directory: "Gillian"
- name: Test All
run: "./testAll.sh"
working-directory: "Gillian/kanillian/environment/"
test262:
if: ( github.event_name == 'pull_request') && ( github.base_ref == 'master')
strategy:
matrix:
operating-system: [ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
needs: build
steps:
- name: download release
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-release
path: release
- name: setting up node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: install release
run: |
yarn global add file://$(pwd)/release
echo "$(yarn global bin)" >> $GITHUB_PATH
- name: checkout project
uses: actions/checkout@v3
with:
repository: GillianPlatform/javert-test262
path: test262
ref: 93e0d0b04093cabc3234a776eec5cc3e165f3b1a
- name: Test262
run: "gillian-js test262 test262/test --ci"
collections-c:
if: ( github.event_name == 'pull_request') && ( github.base_ref == 'master')
strategy:
matrix:
operating-system: [ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
needs: build
steps:
- name: download release
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-release
path: release
- name: setting up node
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}
- name: install release
run: |
yarn global add file://$(pwd)/release
echo "$(yarn global bin)" >> $GITHUB_PATH
- name: checkout project
uses: actions/checkout@v3
with:
repository: GillianPlatform/collections-c-for-gillian
path: collections-c
ref: ffa76e788a1fbdb67910bb7b794214ebc22c1b8c
- name: Symbolic Testing Collections-C
run: "./runGillianTests.sh"
working-directory: collections-c
# test-Buckets:
# if: ( github.event_name == 'pull_request') && ( github.base_ref == 'master')
# strategy:
# matrix:
# operating-system: [macos-latest]
# runs-on: ${{ matrix.operating-system }}
# needs: build
# steps:
# - name: download release
# uses: actions/download-artifact@v3
# with:
# name: ${{ runner.os }}-release
# path: release
# - name: setting up node
# uses: actions/setup-node@v3
# with:
# node-version: ${{ env.NODE_VERSION }}
# - name: install release
# run: |
# yarn global add file://$(pwd)/release
# echo "$(yarn global bin)" >> $GITHUB_PATH
# - name: checkout project
# uses: actions/checkout@v3
# with:
# path: Gillian
# - name: Symbolic Testing Buckets.js
# run: "gillian-js cosette-bulk Gillian/Gillian-JS/Examples/Cosette/Buckets --ci"
build-docker:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: set up docker buildx
uses: docker/setup-buildx-action@v2
with:
driver: docker
- name: Restore Cache
id: restore-cache
uses: actions/cache@v3
env:
cache-name: cache-ocaml
with:
path: _opam
key: docker-${{ env.cache-name }}-ocaml-5.2.0-${{ hashFiles('**/*.opam') }}
restore-keys: |
docker-${{ env.cache-name }}-ocaml-5.2.0
- name: build and export docker image
uses: docker/build-push-action@v4
with:
context: .
load: true
tags: ${{ env.DOCKER_TEST_TAG }}
- name: test
run: docker run --rm ${{ env.DOCKER_TEST_TAG }} opam exec -- dune test
- name: extract cache
if: steps.restore-cache.outputs.cache-hit != 'true'
run: /
rm -rf _opam
docker run --name deps ${{ env.DOCKER_TEST_TAG }} bash -c "opam clean"
docker cp deps:/home/opam/app/_opam ./
docker rm deps
deploy-docs:
if: github.ref == 'refs/heads/master'
runs-on: ubuntu-latest
needs: [build]
strategy:
fail-fast: false
matrix:
operating-system: [ubuntu-latest]
steps:
- name: Download built docs
uses: actions/download-artifact@v3
with:
name: ${{ runner.os }}-docs
path: docs
- name: Deploy docs
run: |
git config --global user.email "<>"
git config --global user.name "GitHub Actions"
git clone https://${{ secrets.DOCS_USER }}:${{ secrets.DOCS_TOKEN }}@github.com/GillianPlatform/GillianPlatform.github.io.git docs-repo --branch master
cd docs-repo
rm * -rf
cp -r ../docs/* .
git add -A
git commit -m "Deployment from $GITHUB_REPOSITORY@$GITHUB_SHA"
git push --force