2 changed files with 0 additions and 287 deletions
@ -1,210 +0,0 @@ |
|||
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: |
|||
CARL_BRANCH: "master14" |
|||
CARL_GIT_URL: "https://github.com/smtrat/carl.git" |
|||
STORM_GIT_URL: "${{ github.server_url }}/${{ github.repository }}.git" |
|||
STORM_BRANCH: "${{ github.ref }}" |
|||
# github runners currently have two cores |
|||
NR_JOBS: "2" |
|||
|
|||
# cmake arguments |
|||
CMAKE_DEBUG: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_SPOT_SHIPPED=ON" |
|||
CMAKE_RELEASE: "-DCMAKE_BUILD_TYPE=Release -DSTORM_DEVELOPER=OFF -DSTORM_PORTABLE=ON -DSTORM_USE_SPOT_SHIPPED=ON" |
|||
|
|||
CARL_CMAKE_DEBUG: "-DCMAKE_BUILD_TYPE=Debug -DUSE_CLN_NUMBERS=ON -DUSE_GINAC=ON -DTHREAD_SAFE=ON -DBUILD_ADDONS=ON -DBUILD_ADDON_PARSER=ON" |
|||
CARL_CMAKE_RELEASE: "-DCMAKE_BUILD_TYPE=Release -DUSE_CLN_NUMBERS=ON -DUSE_GINAC=ON -DTHREAD_SAFE=ON -DBUILD_ADDONS=ON -DBUILD_ADDON_PARSER=ON" |
|||
|
|||
|
|||
jobs: |
|||
indepthTests: |
|||
name: Indepth Tests (${{ matrix.cmakeArgs.name }}) |
|||
runs-on: ubuntu-latest |
|||
env: |
|||
DISTRO: "ubuntu-20.10" |
|||
strategy: |
|||
matrix: |
|||
cmakeArgs: |
|||
- {name: "GMP exact; GMP rational functions; Spot", args: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_CLN_EA=OFF -DSTORM_USE_CLN_RF=OFF -DSTORM_USE_SPOT_SHIPPED=ON"} |
|||
# This is the standard config |
|||
# - {name: "GMP exact; CLN rational functions; Spot", args: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_CLN_EA=OFF -DSTORM_USE_CLN_RF=ON -DSTORM_USE_SPOT_SHIPPED=ON"} |
|||
- {name: "CLN exact; GMP rational functions; Spot", args: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_CLN_EA=ON -DSTORM_USE_CLN_RF=OFF -DSTORM_USE_SPOT_SHIPPED=ON"} |
|||
- {name: "CLN exact; CLN rational functions; Spot", args: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_CLN_EA=ON -DSTORM_USE_CLN_RF=ON -DSTORM_USE_SPOT_SHIPPED=ON"} |
|||
- {name: "GMP exact; CLN rational functions; No Spot", args: "-DCMAKE_BUILD_TYPE=Debug -DSTORM_DEVELOPER=ON -DSTORM_PORTABLE=ON -DSTORM_USE_CLN_EA=ON -DSTORM_USE_CLN_RF=ON -DSTORM_USE_SPOT_SHIPPED=OFF"} |
|||
steps: |
|||
- name: Init Docker |
|||
run: sudo docker run -d -it --name storm --privileged movesrwth/storm-basesystem:${DISTRO} |
|||
- name: Git clone |
|||
# git clone cannot clone individual commits based on a sha and some other refs |
|||
# this workaround fixes this and fetches only one commit |
|||
run: | |
|||
sudo docker exec storm bash -c "mkdir /opt/storm; cd /opt/storm; git init && git remote add origin ${STORM_GIT_URL} && git fetch --depth 1 origin ${STORM_BRANCH} && git checkout FETCH_HEAD" |
|||
- name: Run cmake |
|||
run: sudo docker exec storm bash -c "mkdir /opt/storm/build; cd /opt/storm/build; cmake .. ${{ matrix.cmakeArgs.args }}" |
|||
- name: Build storm |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; make -j ${NR_JOBS}" |
|||
- name: Run unit tests |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; ctest test --output-on-failure" |
|||
|
|||
noDeploy: |
|||
name: Build and Test |
|||
runs-on: ubuntu-latest |
|||
strategy: |
|||
matrix: |
|||
distro: ["ubuntu-18.04", "debian-10", "debian-9", "ubuntu-20.04"] |
|||
debugOrRelease: ["release"] |
|||
steps: |
|||
- name: Setup cmake arguments |
|||
# this is strangely the best way to implement environment variables based on the value of another |
|||
# GITHUB_ENV is a magic variable pointing to a file; if a line with format {NAME}={VALUE} |
|||
# then the env variable with name NAME will be created/updated with VALUE |
|||
run: | |
|||
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "CMAKE_ARGS=${CMAKE_DEBUG}" || echo "CMAKE_ARGS=${CMAKE_RELEASE}") >> $GITHUB_ENV |
|||
|
|||
- name: Init Docker |
|||
run: sudo docker run -d -it --name storm --privileged movesrwth/storm-basesystem:${{ matrix.distro }} |
|||
- name: Git clone |
|||
# git clone cannot clone individual commits based on a sha and some other refs |
|||
# this workaround fixes this and fetches only one commit |
|||
run: | |
|||
sudo docker exec storm bash -c "mkdir /opt/storm; cd /opt/storm; git init && git remote add origin ${STORM_GIT_URL} && git fetch --depth 1 origin ${STORM_BRANCH} && git checkout FETCH_HEAD" |
|||
- name: Run cmake |
|||
run: sudo docker exec storm bash -c "mkdir /opt/storm/build; cd /opt/storm/build; cmake .. ${CMAKE_ARGS}" |
|||
- name: Build storm |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; make -j ${NR_JOBS}" |
|||
|
|||
# A bit hacky... but its usefullnes has been proven in production |
|||
- name: Check release makeflags |
|||
if: matrix.debugOrRelease == 'release' |
|||
run: | |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -O3' || (echo \"Error: Missing flag \'-O3\' for release build.\" && false)" |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -DNDEBUG' || (echo \"Error: Missing flag \'-DNDEBUG\' for release build.\" && false)" |
|||
- name: Check debug makeflags |
|||
if: matrix.debugOrRelease == 'debug' |
|||
run: | |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -g' || (echo \"Error: Missing flag \'-g\' for debug build.\" && false)" |
|||
|
|||
- name: Run unit tests |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; ctest test --output-on-failure" |
|||
|
|||
deploy: |
|||
name: Build, Test and Deploy |
|||
runs-on: ubuntu-latest |
|||
env: |
|||
DISTRO: "ubuntu-20.10" |
|||
strategy: |
|||
matrix: |
|||
debugOrRelease: ["debug", "release"] |
|||
steps: |
|||
- name: Setup cmake arguments |
|||
# this is strangely the best way to implement environment variables based on the value of another |
|||
# GITHUB_ENV is a magic variable pointing to a file; if a line with format {NAME}={VALUE} |
|||
# then the env variable with name NAME will be created/updated with VALUE |
|||
run: | |
|||
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "CMAKE_ARGS=${CMAKE_DEBUG}" || echo "CMAKE_ARGS=${CMAKE_RELEASE}") >> $GITHUB_ENV |
|||
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "CARL_CMAKE_ARGS=${CARL_CMAKE_DEBUG}" || echo "CARL_CMAKE_ARGS=${CARL_CMAKE_RELEASE}") >> $GITHUB_ENV |
|||
|
|||
- 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' |
|||
run: echo "${{ secrets.STORM_CI_DOCKER_PASSWORD }}" | sudo docker login -u "${{ secrets.STORM_CI_DOCKER_USERNAME }}" --password-stdin |
|||
- name: Init Docker |
|||
run: sudo docker run -d -it --name storm --privileged movesrwth/storm-basesystem:${DISTRO} |
|||
|
|||
##### |
|||
# Build & DEPLOY CARL |
|||
##### |
|||
# We should not do partial updates :/ |
|||
# but we need to install some dependencies |
|||
# Surely we can find a better way to do this at some point |
|||
- name: Update base system |
|||
run: | |
|||
sudo docker exec storm apt-get update |
|||
sudo docker exec storm apt-get upgrade -qqy |
|||
- name: install dependencies |
|||
run: sudo docker exec storm apt-get install -qq -y uuid-dev pkg-config |
|||
- name: Git clone carl |
|||
run: sudo docker exec storm git clone --depth 1 --branch $CARL_BRANCH $CARL_GIT_URL /opt/carl |
|||
- name: Run cmake for carl |
|||
run: sudo docker exec storm bash -c "mkdir /opt/carl/build; cd /opt/carl/build; cmake .. ${CARL_CMAKE_ARGS}" |
|||
- name: Build carl |
|||
run: sudo docker exec storm bash -c "cd /opt/carl/build; make lib_carl -j ${NR_JOBS}" |
|||
- name: Deploy carl |
|||
# 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: | |
|||
sudo docker commit storm movesrwth/carl:ci-${{ matrix.debugOrRelease }} |
|||
sudo docker push movesrwth/carl:ci-${{ matrix.debugOrRelease }} |
|||
|
|||
|
|||
##### |
|||
# Build & TEST & DEPLOY STORM |
|||
##### |
|||
- name: Git shallow clone |
|||
# Only clone shallow if not using master on original repo (and not for pull requests or forks) |
|||
if: ${{ !(github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master') }} |
|||
run: | |
|||
# git clone cannot clone individual commits based on a sha and some other refs |
|||
sudo docker exec storm bash -c "mkdir /opt/storm; cd /opt/storm; git init && git remote add origin ${STORM_GIT_URL} && git fetch --depth 1 origin ${STORM_BRANCH} && git checkout FETCH_HEAD" |
|||
- name: Git deep clone |
|||
# needed for versioning for now on deployment |
|||
if: github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master' |
|||
run: | |
|||
sudo docker exec storm git clone --branch master $STORM_GIT_URL /opt/storm |
|||
- name: Run cmake |
|||
run: sudo docker exec storm bash -c "mkdir /opt/storm/build; cd /opt/storm/build; cmake .. ${CMAKE_ARGS}" |
|||
- name: Build storm |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; make -j ${NR_JOBS}" |
|||
|
|||
# A bit hacky... but its usefulness has been proven in production |
|||
- name: Check release makeflags |
|||
if: matrix.debugOrRelease == 'release' |
|||
run: | |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -O3' || (echo \"Error: Missing flag \'-O3\' for release build.\" && false)" |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -DNDEBUG' || (echo \"Error: Missing flag \'-DNDEBUG\' for release build.\" && false)" |
|||
- name: Check debug makeflags |
|||
if: matrix.debugOrRelease == 'debug' |
|||
run: | |
|||
sudo docker exec storm bash -c "/opt/storm/build/bin/storm --version | grep 'with flags .* -g' || (echo \"Error: Missing flag \'-g\' for debug build.\" && false)" |
|||
- name: Run unit tests |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; ctest test --output-on-failure" |
|||
|
|||
- 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: | |
|||
sudo docker commit storm movesrwth/storm:ci-${{ matrix.debugOrRelease }} |
|||
sudo docker push movesrwth/storm:ci-${{ matrix.debugOrRelease }} |
|||
|
|||
notify: |
|||
name: Email notification |
|||
runs-on: ubuntu-latest |
|||
needs: [indepthTests, noDeploy, 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@v2 |
|||
- uses: dawidd6/action-send-mail@v2 |
|||
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 <you-broke-it@stormchecker.org> |
|||
if: env.WORKFLOW_CONCLUSION != 'success' # notify only if failure |
@ -1,77 +0,0 @@ |
|||
name: Doxygen |
|||
# Builds and deploys storms doxygen documentation |
|||
|
|||
on: |
|||
schedule: |
|||
# run daily |
|||
- cron: '0 8 * * *' |
|||
# needed to trigger the workflow manually |
|||
workflow_dispatch: |
|||
|
|||
env: |
|||
BASE_IMG: "movesrwth/carl:ci-release" |
|||
STORM_GIT_URL: "${{ github.server_url }}/${{ github.repository }}.git" |
|||
STORM_BRANCH: "master" |
|||
# github runners currently have two cores |
|||
NR_JOBS: "2" |
|||
|
|||
|
|||
jobs: |
|||
|
|||
deploy: |
|||
name: Create documentation |
|||
runs-on: ubuntu-latest |
|||
# Do not run on forks |
|||
if: github.repository_owner == 'moves-rwth' |
|||
steps: |
|||
- name: Init Docker |
|||
run: sudo docker run -d -it --name storm --privileged ${BASE_IMG} |
|||
|
|||
# We should not do partial updates :/ |
|||
# but we need to install some dependencies |
|||
# Surely we can find a better way to do this at some point |
|||
- name: Update base system |
|||
run: | |
|||
sudo docker exec storm apt-get update |
|||
sudo docker exec storm apt-get upgrade -qqy |
|||
- name: install dependencies |
|||
run: sudo docker exec storm apt-get install -qq -y doxygen graphviz |
|||
- name: Git clone storm |
|||
run: sudo docker exec storm git clone --depth 1 --branch $STORM_BRANCH $STORM_GIT_URL /opt/storm |
|||
- name: Run cmake |
|||
run: sudo docker exec storm bash -c "mkdir /opt/storm/build; cd /opt/storm/build; cmake .." |
|||
- name: Build doxygen |
|||
run: sudo docker exec storm bash -c "cd /opt/storm/build; make doc -j ${NR_JOBS}" |
|||
- name: Copy doxygen |
|||
run: sudo docker cp storm:/opt/storm/build/doc/html . |
|||
- name: Deploy doxygen |
|||
uses: peaceiris/actions-gh-pages@v3 |
|||
with: |
|||
deploy_key: ${{ secrets.DOC_DEPLOY_KEY }} |
|||
publish_dir: ./html |
|||
external_repository: moves-rwth/storm-doc |
|||
publish_branch: master |
|||
force_orphan: true |
|||
|
|||
notify: |
|||
name: Email notification |
|||
runs-on: ubuntu-latest |
|||
needs: [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@v2 |
|||
- uses: dawidd6/action-send-mail@v2 |
|||
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] Doxygen generation 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 <you-broke-it@stormchecker.org> |
|||
if: env.WORKFLOW_CONCLUSION != 'success' # notify only if failure |
Write
Preview
Loading…
Cancel
Save
Reference in new issue