Merge pull request #264 from GillianPlatform/nat/merge-kanillian #900
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: | |
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@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Installing esy | |
run: sudo npm install -g [email protected] --unsafe-perm | |
- name: Installing Python prerequisites | |
run: sudo pip install sphinx furo | |
- name: Restore Cache | |
id: restore-cache | |
uses: actions/cache@v3 | |
with: | |
path: _export | |
key: ${{ runner.os }}-esy-0.6.12-${{ hashFiles('esy.lock/index.json') }} | |
restore-keys: | | |
${{ runner.os }}-esy-0.6.12- | |
- name: Esy install | |
run: "esy install" | |
- name: Import Cache | |
run: | | |
esy import-dependencies _export | |
rm -rf _export | |
- name: Esy build | |
run: "esy build" | |
id: esy-build | |
- name: Basic checks | |
run: "esy test" | |
- name: Wisl checks | |
run: "./wisl/scripts/quicktests.sh" | |
- name: Format checking | |
run: "esy format-check" | |
- name: Building release | |
run: "esy release" | |
- name: Sending artifact for next jobs | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ runner.os }}-release | |
path: _release | |
- name: Building docs | |
run: "esy 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: | | |
esy cleanup . | |
esy export-dependencies | |
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: c14d61c5d636e0bf5e4d608ec0e880575ddef6a7 | |
- 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 | |
with: | |
path: _export | |
key: docker-esy-0.6.12-${{ hashFiles('esy.lock/index.json') }} | |
restore-keys: | | |
docker-esy-0.6.12- | |
- 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 }} esy test | |
- name: extract dependencies from docker | |
run: | | |
rm -rf _export | |
docker run --name deps ${{ env.DOCKER_TEST_TAG }} bash -c "esy cleanup . && esy export-dependencies" | |
docker cp deps:/app/Gillian/_export ./ | |
docker rm deps | |
if: steps.restore-cache.outputs.cache-hit != 'true' | |
deploy-docs: | |
if: github.ref == 'refs/heads/master' | |
runs-on: ubuntu-latest | |
needs: [build] | |
strategy: | |
fail-fast: false | |
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 |