Skip to content

Add scheduler to ExplicitQualitativeCheckResult #3161

Add scheduler to ExplicitQualitativeCheckResult

Add scheduler to ExplicitQualitativeCheckResult #3161

Workflow file for this run

name: Build Test
# Builds and tests storm on various platforms
# also deploys images to Dockerhub
on:
schedule:
# run daily
- cron: '0 6 * * *'
# needed to trigger the workflow manually
workflow_dispatch:
pull_request:
env:
# GitHub runners currently have 4 cores
NR_JOBS: "4"
jobs:
# Perform in-depth tests with different configurations
indepthTests:
name: Indepth Tests (${{ matrix.config.name }}, ${{ matrix.config.buildType }})
runs-on: ubuntu-latest
strategy:
matrix:
config:
- {name: "GMP exact; GMP rational functions; All dependencies",
baseImg: "storm-dependencies:latest",
buildType: "Debug",
disable_cudd: "OFF",
disable_glpk: "OFF",
disable_gmm: "OFF",
disable_gurobi: "OFF",
disable_mathsat: "OFF",
disable_soplex: "OFF",
disable_spot: "OFF",
disable_sylvan: "OFF",
disable_xerces: "OFF",
disable_z3: "OFF",
Developer: "ON",
ClnExact: "OFF",
ClnRatfunc: "OFF",
AllSanitizers: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
- {name: "CLN exact; GMP rational functions; All dependencies",
baseImg: "storm-dependencies:latest",
buildType: "Debug",
disable_cudd: "OFF",
disable_glpk: "OFF",
disable_gmm: "OFF",
disable_gurobi: "OFF",
disable_mathsat: "OFF",
disable_soplex: "OFF",
disable_spot: "OFF",
disable_sylvan: "OFF",
disable_xerces: "OFF",
disable_z3: "OFF",
Developer: "ON",
ClnExact: "ON",
ClnRatfunc: "OFF",
AllSanitizers: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
- {name: "CLN exact; CLN rational functions; All dependencies",
baseImg: "storm-dependencies:latest",
buildType: "Debug",
disable_cudd: "OFF",
disable_glpk: "OFF",
disable_gmm: "OFF",
disable_gurobi: "OFF",
disable_mathsat: "OFF",
disable_soplex: "OFF",
disable_spot: "OFF",
disable_sylvan: "OFF",
disable_xerces: "OFF",
disable_z3: "OFF",
Developer: "ON",
ClnExact: "ON",
ClnRatfunc: "ON",
AllSanitizers: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
- {name: "GMP exact; CLN rational functions; No dependencies",
baseImg: "storm-dependencies:latest",
buildType: "Debug",
disable_cudd: "ON",
disable_glpk: "ON",
disable_gmm: "ON",
disable_gurobi: "ON",
disable_mathsat: "ON",
disable_soplex: "ON",
disable_spot: "ON",
disable_sylvan: "ON",
disable_xerces: "ON",
disable_z3: "ON",
Developer: "ON",
ClnExact: "OFF",
ClnRatfunc: "ON",
AllSanitizers: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
- {name: "Minimal dependencies (without CLN)",
baseImg: "storm-basesystem:minimal_dependencies",
buildType: "Debug",
disable_cudd: "ON",
disable_glpk: "ON",
disable_gmm: "ON",
disable_gurobi: "ON",
disable_mathsat: "ON",
disable_soplex: "ON",
disable_spot: "ON",
disable_sylvan: "ON",
disable_xerces: "ON",
disable_z3: "ON",
Developer: "ON",
ClnExact: "OFF",
ClnRatfunc: "OFF",
AllSanitizers: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
steps:
- name: Git clone
uses: actions/checkout@v6
- name: Build storm from Dockerfile
run: |
docker build -t movesrwth/storm:ci . \
--build-arg BASE_IMAGE=movesrwth/${{ matrix.config.baseImg }} \
--build-arg build_type="${{ matrix.config.buildType }}" \
--build-arg carl_tag="master" \
--build-arg disable_cudd="${{ matrix.config.disable_cudd }}" \
--build-arg disable_glpk="${{ matrix.config.disable_glpk }}" \
--build-arg disable_gmm="${{ matrix.config.disable_gmm }}" \
--build-arg disable_gurobi="${{ matrix.config.disable_gurobi }}" \
--build-arg disable_mathsat="${{ matrix.config.disable_mathsat }}" \
--build-arg disable_soplex="${{ matrix.config.disable_soplex }}" \
--build-arg disable_spot="${{ matrix.config.disable_spot }}" \
--build-arg disable_sylvan="${{ matrix.config.disable_sylvan }}" \
--build-arg disable_xerces="${{ matrix.config.disable_xerces }}" \
--build-arg disable_z3="${{ matrix.config.disable_z3 }}" \
--build-arg developer="${{ matrix.config.Developer }}" \
--build-arg cln_exact="${{ matrix.config.ClnExact }}" \
--build-arg cln_ratfunc="${{ matrix.config.ClnRatfunc }}" \
--build-arg all_sanitizers="${{ matrix.config.AllSanitizers }}" \
--build-arg cmake_args="${{ matrix.config.cmakeArgs }}" \
--build-arg no_threads=${NR_JOBS}
- name: Run Docker
run: docker run -d -it --name ci movesrwth/storm:ci
- name: Run storm
run: docker exec ci bash -c "/opt/storm/build/bin/storm --version"
- name: Check compile flags
uses: ./.github/actions/check-compile-flags-action
with:
buildType: ${{ matrix.config.buildType }}
docker: true
- name: Run tests
# Disabled sanitizer checks for now
#run: docker exec ci bash -c "cd /opt/storm/build; ASAN_OPTIONS=detect_leaks=0,detect_odr_violation=0 ctest test --output-on-failure"
run: docker exec ci bash -c "cd /opt/storm/build; ctest test --output-on-failure"
- name: Build starter-project
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: "/opt/storm/build"
command: "--help" # TODO using --help as running the starter-project requires Z3.
- name: Install storm
run: docker exec ci bash -c "cd /opt/storm/build; make install"
- name: Remove build dir
run: |
docker exec ci bash -c "rm -rf /opt/storm/build"
- name: Run installed storm
run: |
docker exec ci bash -c "/usr/local/bin/storm --version"
- name: Build starter-project on installed Storm
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: ""
command: "--help" # TODO using --help as running the starter-project requires Z3.
compilerTests:
# Build and run with different compilers (GCC, Clang)
# Run on latest Archlinux version to get most recent compiler versions
name: Compiler Tests (${{ matrix.config.name }} on ${{ matrix.config.distro }}, ${{ matrix.config.buildType }})
runs-on: ubuntu-latest
strategy:
matrix:
config:
- {name: "GCC",
buildType: "Debug",
disable_gmm: "ON", # TOOD: enable again if GMM was fixed
Developer: "ON",
cmakeArgs: "-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DSTORM_WARNING_AS_ERROR=ON",
packages: "",
distro: "archlinux"
}
- {name: "Clang",
buildType: "Debug",
disable_gmm: "ON", # TOOD: enable again if GMM was fixed
Developer: "ON",
cmakeArgs: "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DSTORM_WARNING_AS_ERROR=ON",
packages: "clang",
distro: "archlinux"
}
- { name: "musl",
buildType: "Debug",
disable_gmm: "ON", # TOOD: enable again if GMM was fixed
Developer: "ON",
cmakeArgs: "-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DSTORM_WARNING_AS_ERROR=ON",
packages: "",
distro: "alpine"
}
steps:
- name: Git clone
uses: actions/checkout@v6
- name: Replace Dockerfile
run: cp .github/workflows/Dockerfile.${{ matrix.config.distro }} Dockerfile
- name: Build storm from Dockerfile
run: |
docker build -t movesrwth/storm:ci . \
--build-arg build_type="${{ matrix.config.buildType }}" \
--build-arg carl_tag="master" \
--build-arg disable_gmm="${{ matrix.config.disable_gmm }}" \
--build-arg developer="${{ matrix.config.Developer }}" \
--build-arg cmake_args="${{ matrix.config.cmakeArgs }}" \
--build-arg packages="${{ matrix.config.packages }}" \
--build-arg no_threads=${NR_JOBS}
# Omitting arguments disable_*, cln_exact, cln_ratfunc, all_sanitizers
- name: Run Docker
run: docker run -d -it --name ci movesrwth/storm:ci
- name: Run storm
run: docker exec ci bash -c "/opt/storm/build/bin/storm --version"
- name: Check compile flags
uses: ./.github/actions/check-compile-flags-action
with:
buildType: ${{ matrix.config.buildType }}
docker: true
- name: Run tests
run: docker exec ci bash -c "cd /opt/storm/build; ctest test --output-on-failure"
- name: Build starter-project
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: "/opt/storm/build"
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
- name: Install storm
run: docker exec ci bash -c "cd /opt/storm/build; make install"
- name: Remove build dir
run: |
docker exec ci bash -c "rm -rf /opt/storm/build"
- name: Run installed storm
run: |
docker exec ci bash -c "/usr/local/bin/storm --version"
- name: Build starter-project on installed Storm
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: ""
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
linuxTests:
name: Linux Tests (${{ matrix.distro }}, ${{ matrix.buildType }}) on ${{ matrix.runner }}
runs-on: ${{ matrix.runner }}
strategy:
matrix:
distro: ["debian-12", "ubuntu-24.04", "debian-13"]
buildType: ["Release"]
runner: [ubuntu-latest, ubuntu-24.04-arm]
steps:
- name: Git clone
uses: actions/checkout@v6
- name: Build storm from Dockerfile
run: |
docker build -t movesrwth/storm:ci . \
--build-arg BASE_IMAGE=movesrwth/storm-basesystem:${{ matrix.distro }} \
--build-arg build_type="${{ matrix.buildType }}" \
--build-arg carl_tag="master" \
--build-arg no_threads=${NR_JOBS} \
--build-arg cmake_args="-DSTORM_WARNING_AS_ERROR=ON"
# Omitting arguments developer, disable_*, cln_exact, cln_ratfunc, all_sanitizers
- name: Run Docker
run: docker run -d -it --name ci movesrwth/storm:ci
- name: Run storm
run: docker exec ci bash -c "/opt/storm/build/bin/storm --version"
- name: Check compile flags
uses: ./.github/actions/check-compile-flags-action
with:
buildType: ${{ matrix.buildType }}
docker: true
- name: Run tests
run: docker exec ci bash -c "cd /opt/storm/build; ctest test --output-on-failure"
- name: Build starter-project
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: "/opt/storm/build"
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
- name: Install storm
run: docker exec ci bash -c "cd /opt/storm/build; make install"
- name: Remove build dir
run: |
docker exec ci bash -c "rm -rf /opt/storm/build"
- name: Run installed storm
run: |
docker exec ci bash -c "/usr/local/bin/storm --version"
- name: Build starter-project on installed Storm
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: ""
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
macTests:
name: macOS Tests (${{ matrix.config.name }}, ${{ matrix.config.buildType }})
strategy:
matrix:
config:
- {name: "XCode 15.4, ARM",
distro: "macos-14",
xcode: "15.4",
buildType: "Debug"
}
- {name: "XCode Latest, ARM",
distro: "macos-15",
xcode: "latest-stable",
buildType: "Debug"
}
- {name: "XCode Latest, Intel",
distro: "macos-15-intel",
xcode: "latest-stable",
buildType: "Debug"
}
runs-on: ${{ matrix.config.distro }}
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: ${{ matrix.config.xcode }}
- name: Git clone
uses: actions/checkout@v6
- name: Install dependencies
# cmake and gmp are already installed
run: |
brew update
brew install automake boost cln ginac glpk hwloc xerces-c z3
- name: Configure storm
run: |
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE="${{ matrix.config.buildType }}" -DSTORM_CARL_GIT_TAG="master" -DSTORM_WARNING_AS_ERROR=ON
- name: Build storm
working-directory: ./build
run: make -j ${NR_JOBS}
- name: Run storm (build tree)
working-directory: ./build
run: ./bin/storm
- name: Check compile flags
uses: ./.github/actions/check-compile-flags-action
with:
buildType: ${{ matrix.config.buildType }}
docker: false
- name: Run tests
working-directory: ./build
run: ctest test --output-on-failure
- name: Build starter-project
uses: ./.github/actions/starter-project-action
with:
docker: false
stormDir: "${GITHUB_WORKSPACE}/build"
command: "${GITHUB_WORKSPACE}/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
- name: Install storm
working-directory: ./build
run: sudo make install
- name: Remove build dir
run: |
rm -rf ${GITHUB_WORKSPACE}/build
- name: Run installed storm
run: |
/usr/local/bin/storm --version
- name: Build starter-project on installed Storm
uses: ./.github/actions/starter-project-action
with:
docker: false
stormDir: ""
command: "${GITHUB_WORKSPACE}/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
deploy:
name: Test and Deploy (${{ matrix.buildType.name }})
runs-on: ubuntu-latest
strategy:
matrix:
buildType:
- {name: "Debug",
dockerTag: "ci-debug",
baseImg: "storm-dependencies:latest",
Developer: "ON",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
- {name: "Release",
dockerTag: "ci",
baseImg: "storm-dependencies:latest",
Developer: "OFF",
cmakeArgs: "-DSTORM_WARNING_AS_ERROR=ON"
}
steps:
- name: Git clone
uses: actions/checkout@v6
- name: Git describe
id: ghd
uses: proudust/gh-describe@v2
- name: Set static Storm version
run: echo "set(STORM_VERSION_COMMITS_AHEAD ${{ steps.ghd.outputs.distance }})" >> version.cmake
- name: Build storm from Dockerfile
run: |
docker build -t movesrwth/storm:${{ matrix.buildType.dockerTag }} . \
--build-arg BASE_IMAGE=movesrwth/${{ matrix.buildType.baseImg }} \
--build-arg build_type="${{ matrix.buildType.name }}" \
--build-arg carl_tag="master" \
--build-arg developer="${{ matrix.buildType.Developer }}" \
--build-arg cmake_args="${{ matrix.buildType.cmakeArgs }}" \
--build-arg no_threads=${NR_JOBS}
# Omitting arguments disable_*, cln_exact, cln_ratfunc, all_sanitizers
- name: Run Docker
run: docker run -d -it --name ci movesrwth/storm:${{ matrix.buildType.dockerTag }}
- name: Check compile flags
uses: ./.github/actions/check-compile-flags-action
with:
buildType: ${{ matrix.buildType.name }}
docker: true
- name: Run tests
run: docker exec ci bash -c "cd /opt/storm/build; ctest test --output-on-failure"
- name: Build starter-project
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: "/opt/storm/build"
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
- name: Install storm
run: docker exec ci bash -c "cd /opt/storm/build; make install"
- name: Temporarily move build dir
run: |
docker exec ci bash -c "mv /opt/storm/build /opt/storm/build-backup"
- name: Run installed storm
run: |
docker exec ci bash -c "/usr/local/bin/storm --version"
- name: Build starter-project on installed Storm
uses: ./.github/actions/starter-project-action
with:
docker: true
stormDir: ""
command: "/opt/storm/resources/examples/testfiles/dtmc/brp-16-2.pm 'P=? [F s=5]'"
- name: Restore build dir
run: |
docker exec ci bash -c "mv /opt/storm/build-backup /opt/storm/build"
- name: Login into docker
# Only login if using master on original repo (and not for pull requests or forks)
if: github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
uses: docker/login-action@v3
with:
username: ${{ secrets.STORM_CI_DOCKER_USERNAME }}
password: ${{ secrets.STORM_CI_DOCKER_TOKEN }}
- name: Deploy storm
# Only deploy if using master on original repo (and not for pull requests or forks)
if: github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
run: |
docker commit ci movesrwth/storm:${{ matrix.buildType.dockerTag }}
docker push movesrwth/storm:${{ matrix.buildType.dockerTag }}
notify:
name: Email notification
runs-on: ubuntu-latest
needs: [indepthTests, compilerTests, linuxTests, macTests, deploy]
# Only run in main repo and even if previous step failed
if: github.repository_owner == 'moves-rwth' && always()
steps:
- uses: technote-space/workflow-conclusion-action@v3
- uses: dawidd6/action-send-mail@v6
with:
server_address: ${{ secrets.STORM_CI_MAIL_SERVER }}
server_port: 587
username: ${{ secrets.STORM_CI_MAIL_USERNAME }}
password: ${{ secrets.STORM_CI_MAIL_PASSWORD }}
subject: "[You broke it] CI run failed for ${{ github.repository }}"
body:
"CI job of ${{ github.repository }} has failed for commit ${{ github.sha }}.\n\
The error type is: ${{ env.WORKFLOW_CONCLUSION }}.\n\n\
For more information, see https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"
to: ${{ secrets.STORM_CI_MAIL_RECIPIENTS }}
from: Github Actions <[email protected]>
if: env.WORKFLOW_CONCLUSION != 'success' # notify only if failure