add top level readme #10
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: CAmkES | |
on: | |
push: | |
workflow_dispatch: | |
inputs: | |
docker_image: | |
type: string | |
description: Docker image to fetch | |
default: trustworthysystems/camkes | |
verbose: | |
type: boolean | |
description: Enable verbose testing output | |
default: false | |
jobs: | |
container: | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ inputs.docker_image != '' && inputs.docker_image || 'trustworthysystems/camkes' }} | |
name: 'camkes' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
path: case-examples | |
submodules: recursive | |
- name: Retrieve versions.properties | |
run: | | |
wget -q https://raw.githubusercontent.com/sireum/kekinian/master/versions.properties | |
- name: Cache Java | |
id: cache-java | |
uses: actions/cache@v3 | |
with: | |
path: /root/kekinian/bin/linux/java | |
key: ${{ runner.os }}-${{ hashFiles('versions.properties') }}-java | |
- name: Cache Scala | |
id: cache-scala | |
uses: actions/cache@v3 | |
with: | |
path: /root/kekinian/bin/scala | |
key: ${{ runner.os }}-${{ hashFiles('versions.properties') }}-scala | |
- name: Cache Coursier | |
id: cache-coursier | |
uses: actions/cache@v3 | |
with: | |
path: /root/cache/coursier | |
key: ${{ runner.os }}-${{ hashFiles('versions.properties') }}-coursier | |
- name: Cache OSATE | |
id: cache-osate | |
uses: actions/cache@v3 | |
with: | |
path: /root/kekinian/bin/linux/osate | |
key: ${{ runner.os }}-${{ hashFiles('jvm/src/main/resources/phantom_versions.properties') }}-osate | |
- name: Build | |
env: | |
# add verbose flag if workflow is restarted with "enable debug logging" checked or if requested | |
# via workflow dispatch | |
VERBOSE_DEBUG: ${{ ( runner.debug == '1' || inputs.verbose == '1' ) && ',verbose' || '' }} | |
run: | | |
# github sets HOME to /github/home but some tools (Sireum's Os.home, Haskell) use | |
# the containers /root instead leading to inconsistent installs. Setting HOME | |
# to be root resolves the issue | |
# https://github.com/actions/runner/issues/1474#issuecomment-965805123 | |
export HOME=/root | |
mv ./case-examples /root/ | |
export aptInstall="apt-get install -f -y --no-install-recommends" | |
export DEBIAN_FRONTEND=noninteractive | |
apt-get update | |
${aptInstall} p7zip-full | |
# Installing emacs installs some package(s) that resolve an issue where | |
# the OSATE gumbo parser fails to initialize when used in the docker container. | |
${aptInstall} emacs | |
mkdir -p $HOME/.ssh | |
touch $HOME/.ssh/config | |
chmod 700 $HOME/.ssh/config | |
(echo "Host gitlab.adventium.com"; echo "StrictHostKeyChecking no") >> $HOME/.ssh/config | |
export CASE_DIR=$HOME/CASE | |
mkdir -p $CASE_DIR/camkes | |
cd $CASE_DIR/camkes | |
repo init -u https://github.com/seL4/camkes-manifest.git | |
repo sync | |
mkdir -p $CASE_DIR/camkes-vm-examples | |
cd $CASE_DIR/camkes-vm-examples | |
repo init -u https://github.com/seL4/camkes-vm-examples-manifest.git | |
repo sync | |
cd $HOME | |
git clone --rec https://github.com/sireum/kekinian.git | |
kekinian/bin/build.cmd setup | |
export SIREUM_HOME=$HOME/kekinian | |
export PATH=$SIREUM_HOME/bin:$PATH | |
export OSATE_HOME=$SIREUM_HOME/bin/linux/osate | |
sireum hamr phantom -u -o $OSATE_HOME | |
$HOME/case-examples/.ci/test.cmd | |