16
16
env :
17
17
GIT_URL : " ${{ github.server_url }}/${{ github.repository }}.git"
18
18
BRANCH : " ${{ github.ref }}"
19
- # github runners currently have two cores
19
+ # GitHub runners currently have two cores
20
20
NR_JOBS : " 2"
21
- CMAKE_DEBUG : " -DCMAKE_BUILD_TYPE=Debug"
22
- CMAKE_RELEASE : " -DCMAKE_BUILD_TYPE=Release"
23
-
24
- CARL_PARSER_GIT_URL : " https://github.com/ths-rwth/carl-parser"
25
- CARL_PARSER_BRANCH : " master14"
26
- PYCARL_GIT_URL : " https://github.com/moves-rwth/pycarl.git"
27
- PYCARL_BRANCH : " master"
28
-
29
21
30
22
jobs :
31
23
indepthTests :
@@ -46,44 +38,22 @@ jobs:
46
38
# GITHUB_ENV is a magic variable pointing to a file; if a line with format {NAME}={VALUE}
47
39
# then the env variable with name NAME will be created/updated with VALUE
48
40
run : |
49
- ([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "CMAKE_ARGS=${CMAKE_DEBUG} " || echo "CMAKE_ARGS=${CMAKE_RELEASE} ") >> $GITHUB_ENV
41
+ ([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "BUILD_TYPE=Debug " || echo "BUILD_TYPE=Release ") >> $GITHUB_ENV
50
42
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "IMG=${DEBUG_IMG}" || echo "IMG=${RELEASE_IMG}") >> $GITHUB_ENV
51
43
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "DEBUG_SWITCH=--debug" || true) >> $GITHUB_ENV
52
44
# Restrict tests to directory 'tests' (excluding examples and documentation) if not all libraries are present
53
45
([[ "${{ matrix.setupArgs.disableFlags }}" != "" ]] && echo "TEST_OPT=--addopts tests" || true) >> $GITHUB_ENV
54
46
55
- - name : Init Docker
56
- run : sudo docker run -d -it --name storm --privileged movesrwth/$IMG
57
- # We should not do partial updates :/
58
- # but we need to install some dependencies
59
- # Surely we can find a better way to do this at some point
60
- - name : Update base system
61
- run : |
62
- sudo docker exec storm apt-get update
63
- sudo docker exec storm apt-get upgrade -qqy
64
- - name : install dependencies
65
- run : sudo docker exec storm apt-get install -qq -y maven uuid-dev python3 python3-pip
66
47
- name : Git clone
67
- run : |
68
- # git clone cannot clone individual commits based on a sha and some other refs
69
- # this workaround fixes this and fetches only one commit
70
- sudo docker exec storm bash -c "mkdir /opt/stormpy; cd /opt/stormpy; git init && git remote add origin ${GIT_URL} && git fetch --depth 1 origin ${BRANCH} && git checkout FETCH_HEAD"
71
- sudo docker exec storm git clone --depth 1 --branch $CARL_PARSER_BRANCH $CARL_PARSER_GIT_URL /opt/carl-parser
72
- sudo docker exec storm git clone --depth 1 --branch $PYCARL_BRANCH $PYCARL_GIT_URL /opt/pycarl
73
- - name : Run cmake for carl-parser
74
- run : sudo docker exec storm bash -c "mkdir /opt/carl-parser/build; cd /opt/carl-parser/build; cmake .. ${CMAKE_ARGS}"
75
- - name : make carl-parser
76
- run : sudo docker exec storm bash -c "cd /opt/carl-parser/build; make -j ${NR_JOBS}"
77
- - name : Build pycarl
78
- run : |
79
- sudo docker exec storm bash -c "cd /opt/pycarl; python3 setup.py build_ext $DEBUG_SWITCH -j ${NR_JOBS} develop"
80
- - name : Build stormpy
81
- run : |
82
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py build_ext --storm-dir /opt/storm/build/ $DEBUG_SWITCH ${{ matrix.setupArgs.disableFlags }} -j ${NR_JOBS} develop"
83
- sudo docker exec storm bash -c "cd /opt/stormpy; pip3 install -e '.${{ matrix.setupArgs.optionalLibs }}'"
48
+ uses : actions/checkout@v3
49
+ - name : Build stormpy from Dockerfile
50
+ run : docker build -t movesrwth/stormpy:ci-${{ matrix.debugOrRelease }} . --build-arg STORM_BASE=movesrwth/${IMG} --build-arg build_type=${BUILD_TYPE} --build-arg setup_args="${DEBUG_SWITCH} ${{ matrix.setupArgs.disableFlags }}" --build-arg setup_args_pycarl=${DEBUG_SWITCH} --build-arg no_threads=${NR_JOBS}
51
+ - name : Run Docker
52
+ run : docker run -d -it --name ci movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
53
+ - name : Build optional stormpy libraries
54
+ run : docker exec ci bash -c "cd /opt/stormpy; pip3 install -e '.${{ matrix.setupArgs.optionalLibs }}'"
84
55
- name : Run tests
85
- run : |
86
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py test $TEST_OPT"
56
+ run : docker exec ci bash -c "cd /opt/stormpy; python setup.py test $TEST_OPT"
87
57
88
58
89
59
stableTest :
@@ -103,40 +73,24 @@ jobs:
103
73
# GITHUB_ENV is a magic variable pointing to a file; if a line with format {NAME}={VALUE}
104
74
# then the env variable with name NAME will be created/updated with VALUE
105
75
run : |
106
- ([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "CMAKE_ARGS=${CMAKE_DEBUG} " || echo "CMAKE_ARGS=${CMAKE_RELEASE} ") >> $GITHUB_ENV
76
+ ([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "BUILD_TYPE=Debug " || echo "BUILD_TYPE=Release ") >> $GITHUB_ENV
107
77
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "IMG=${DEBUG_IMG}" || echo "IMG=${RELEASE_IMG}") >> $GITHUB_ENV
108
78
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "DEBUG_SWITCH=--debug" || true) >> $GITHUB_ENV
109
79
110
- - name : Init Docker
111
- run : sudo docker run -d -it --name storm --privileged movesrwth/$IMG
112
- # We should not do partial updates :/
113
- # but we need to install some dependencies
114
- # Surely we can find a better way to do this at some point
115
- - name : Update base system
116
- run : |
117
- sudo docker exec storm apt-get update
118
- sudo docker exec storm apt-get upgrade -qqy
119
- - name : install dependencies
120
- run : sudo docker exec storm apt-get install -qq -y maven uuid-dev python3 python3-pip
121
80
- name : Git clone
122
- run : |
123
- # git clone cannot clone individual commits based on a sha and some other refs
124
- # this workaround fixes this and fetches only one commit
125
- sudo docker exec storm bash -c "mkdir /opt/stormpy; cd /opt/stormpy; git init && git remote add origin ${GIT_URL} && git fetch --depth 1 origin ${BRANCH} && git checkout FETCH_HEAD"
126
- sudo docker exec storm git clone --depth 1 --branch $CARL_PARSER_BRANCH $CARL_PARSER_GIT_URL /opt/carl-parser
127
- sudo docker exec storm git clone --depth 1 --branch $PYCARL_BRANCH $PYCARL_GIT_URL /opt/pycarl
128
- - name : Run cmake for carl-parser
129
- run : sudo docker exec storm bash -c "mkdir /opt/carl-parser/build; cd /opt/carl-parser/build; cmake .. ${CMAKE_ARGS}"
130
- - name : make carl-parser
131
- run : sudo docker exec storm bash -c "cd /opt/carl-parser/build; make -j ${NR_JOBS}"
132
- - name : Build pycarl
133
- run : |
134
- sudo docker exec storm bash -c "cd /opt/pycarl; python3 setup.py build_ext $DEBUG_SWITCH -j ${NR_JOBS} develop"
81
+ uses : actions/checkout@v3
82
+ - name : Replace Dockerfile
83
+ run : cp .github/workflows/Dockerfile.stable Dockerfile
84
+ - name : Build dependencies
85
+ run : docker build -t movesrwth/stormpy:ci-${{ matrix.debugOrRelease }} . --build-arg STORM_BASE=movesrwth/${IMG} --build-arg build_type=${BUILD_TYPE} --build-arg setup_args_pycarl=${DEBUG_SWITCH} --build-arg no_threads=${NR_JOBS}
86
+ - name : Run Docker
87
+ run : docker run -d -it --name ci movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
135
88
- name : Build stormpy
89
+ # Build stormpy explicitly to catch exit code
136
90
id : build_stormpy
137
91
shell : bash {0} // Deactivate fast-fail to handle exit code for incompatibility
138
92
run : |
139
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py build_ext --storm-dir /opt/storm/build/ $ DEBUG_SWITCH -j ${NR_JOBS} develop"
93
+ docker exec ci bash -c "cd /opt/stormpy; python setup.py build_ext ${ DEBUG_SWITCH} -j ${NR_JOBS} develop"
140
94
status=$?
141
95
if [ $status -eq 42 ]; then
142
96
# Warn about incompatibility but do not handle as failure
@@ -149,8 +103,7 @@ jobs:
149
103
fi
150
104
- name : Run tests
151
105
if : steps.build_stormpy.outputs.run_tests == 'true'
152
- run : |
153
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py test"
106
+ run : docker exec ci bash -c "cd /opt/stormpy; python setup.py test"
154
107
155
108
156
109
deploy :
@@ -172,62 +125,37 @@ jobs:
172
125
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "IMG=${DEBUG_IMG}" || echo "IMG=${RELEASE_IMG}") >> $GITHUB_ENV
173
126
([[ ${{ matrix.debugOrRelease }} == "debug" ]] && echo "DEBUG_SWITCH=--debug" || true) >> $GITHUB_ENV
174
127
175
- - name : Login into docker
176
- # Only login if using master on original repo (and not for pull requests or forks)
177
- if : github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
178
- run : echo "${{ secrets.STORM_CI_DOCKER_PASSWORD }}" | sudo docker login -u "${{ secrets.STORM_CI_DOCKER_USERNAME }}" --password-stdin
179
- - name : Init Docker
180
- run : sudo docker run -d -it --name storm --privileged movesrwth/$IMG
181
-
182
- # We should not do partial updates :/
183
- # but we need to install some dependencies
184
- # Surely we can find a better way to do this at some point
185
- - name : Update base system
186
- run : |
187
- sudo docker exec storm apt-get update
188
- sudo docker exec storm apt-get upgrade -qqy
189
- - name : install dependencies
190
- run : sudo docker exec storm apt-get install -qq -y maven uuid-dev python3 python3-pip
191
128
- name : Git clone
192
- run : |
193
- # git clone cannot clone individual commits based on a sha and some other refs
194
- # this workaround fixes this and fetches only one commit
195
- sudo docker exec storm bash -c "mkdir /opt/stormpy; cd /opt/stormpy; git init && git remote add origin ${GIT_URL} && git fetch --depth 1 origin ${BRANCH} && git checkout FETCH_HEAD"
196
- sudo docker exec storm git clone --depth 1 --branch $CARL_PARSER_BRANCH $CARL_PARSER_GIT_URL /opt/carl-parser
197
- sudo docker exec storm git clone --depth 1 --branch $PYCARL_BRANCH $PYCARL_GIT_URL /opt/pycarl
198
- - name : Run cmake for carl-parser
199
- run : sudo docker exec storm bash -c "mkdir /opt/carl-parser/build; cd /opt/carl-parser/build; cmake .. ${CMAKE_ARGS}"
200
- - name : make carl-parser
201
- run : sudo docker exec storm bash -c "cd /opt/carl-parser/build; make -j ${NR_JOBS}"
202
-
203
- - name : Build pycarl
204
- run : |
205
- sudo docker exec storm bash -c "cd /opt/pycarl; python3 setup.py build_ext $DEBUG_SWITCH -j ${NR_JOBS} develop"
206
- - name : Build stormpy
207
- run : |
208
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py build_ext --storm-dir /opt/storm/build/ $DEBUG_SWITCH -j ${NR_JOBS} develop"
129
+ uses : actions/checkout@v3
130
+ - name : Build stormpy from Dockerfile
131
+ run : docker build -t movesrwth/stormpy:ci-${{ matrix.debugOrRelease }} . --build-arg STORM_BASE=movesrwth/${IMG} --build-arg build_type=${BUILD_TYPE} --build-arg setup_args=${DEBUG_SWITCH} --build-arg setup_args_pycarl=${DEBUG_SWITCH} --build-arg no_threads=${NR_JOBS}
132
+ - name : Run Docker
133
+ run : docker run -d -it --name ci movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
209
134
- name : Run tests
210
- run : |
211
- sudo docker exec storm bash -c "cd /opt/stormpy; python3 setup.py test"
135
+ run : docker exec ci bash -c "cd /opt/stormpy; python setup.py test"
212
136
137
+ - name : Login into docker
138
+ # Only login if using master on original repo (and not for pull requests or forks)
139
+ if : github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
140
+ run : echo "${{ secrets.STORM_CI_DOCKER_PASSWORD }}" | docker login -u "${{ secrets.STORM_CI_DOCKER_USERNAME }}" --password-stdin
213
141
- name : Deploy stormpy
214
142
# Only deploy if using master on original repo (and not for pull requests or forks)
215
143
if : github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
216
144
run : |
217
- sudo docker commit storm movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
218
- sudo docker push movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
145
+ docker commit ci movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
146
+ docker push movesrwth/stormpy:ci-${{ matrix.debugOrRelease }}
219
147
220
148
- name : Install documentation dependencies
221
149
if : matrix.debugOrRelease == 'release'
222
150
run : |
223
- sudo docker exec storm apt-get install -qq -y pandoc
224
- sudo docker exec storm bash -c "cd /opt/stormpy; pip3 install -e '.[doc,numpy]'"
151
+ docker exec ci apt-get install -qq -y pandoc
152
+ docker exec ci bash -c "cd /opt/stormpy; pip install -e '.[doc,numpy]'"
225
153
- name : Build documentation
226
154
if : matrix.debugOrRelease == 'release'
227
155
run : |
228
- sudo docker exec storm bash -c "cd /opt/stormpy/doc; make html"
229
- sudo docker exec storm rm -r /opt/stormpy/doc/build/html/_sources
230
- sudo docker cp storm :/opt/stormpy/doc/build/html .
156
+ docker exec ci bash -c "cd /opt/stormpy/doc; make html"
157
+ docker exec ci rm -r /opt/stormpy/doc/build/html/_sources
158
+ docker cp ci :/opt/stormpy/doc/build/html .
231
159
- name : Deploy documentation
232
160
# Only deploy for release version and using master on original repo (and not for pull requests or forks)
233
161
if : matrix.debugOrRelease == 'release' && github.repository_owner == 'moves-rwth' && github.ref == 'refs/heads/master'
0 commit comments