Reduce artifact size
[alexxy/gromacs.git] / admin / gitlab-ci / gromacs.gitlab-ci.yml
1 # Build, test, and install variously configured GROMACS installations.
2
3 # Initial build that always needs to pass before follow-up stages run
4 simple-build:
5   extends:
6     - .variables:default
7     - .use-ccache
8     - .use-clang:base
9     - .rules:basic-push
10   stage: pre-build
11   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
12   variables:
13     KUBERNETES_CPU_LIMIT: 8
14     KUBERNETES_CPU_REQUEST: 4
15     KUBERNETES_MEMORY_REQUEST: 8Gi
16     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
17     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
18     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
19     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
20     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
21     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
22     COMPILER_MAJOR_VERSION: 9
23     BUILD_DIR: simple-build
24   script:
25     - echo $CMAKE_COMPILER_SCRIPT
26     - echo $CMAKE_EXTRA_OPTIONS
27     - echo $CMAKE_SIMD_OPTIONS
28     - echo $CMAKE_GPU_OPTIONS
29     - echo $CMAKE_MPI_OPTIONS
30     - echo $CMAKE_PRECISION_OPTIONS
31     - echo $CMAKE_BUILD_TYPE_OPTIONS
32     - echo $CMAKE_GMXAPI_OPTIONS
33     - if [[ -d $BUILD_DIR ]] ; then
34       echo "Cleaning up build directory" ;
35       rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
36       else
37       echo "Preparing new build directory" ;
38       mkdir $BUILD_DIR ;
39       fi
40     - cd $BUILD_DIR
41     - cmake ..
42       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
43       $CMAKE_COMPILER_SCRIPT
44       $CMAKE_EXTRA_OPTIONS
45       $CMAKE_SIMD_OPTIONS
46       $CMAKE_MPI_OPTIONS
47       $CMAKE_PRECISION_OPTIONS
48       $CMAKE_BUILD_TYPE_OPTIONS
49       $CMAKE_GPU_OPTIONS
50       $CMAKE_GMXAPI_OPTIONS
51       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
52       2>&1 | tee cmakeLog.log
53     - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
54     - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
55     - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
56     - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
57     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
58       | grep -v "CMake" | tee buildErrors.log || true
59     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
60     - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
61     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
62     - ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
63     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
64       ctestLog.log | tee ctestErrors.log
65     - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > JUnitTestResults.xml
66     - if [ -s ctestErrors.log ] ; then
67       echo "Error during running ctest";
68       exit 1;
69       fi
70     - cd ..
71   artifacts:
72     reports:
73       junit: $BUILD_DIR/JUnitTestResults.xml
74     paths:
75       - $BUILD_DIR/*log
76     when: always
77     expire_in: 1 week
78
79 # Jobs running in first pre-build stage
80
81 .gromacs:base:configure:
82   extends:
83     - .variables:default
84   stage: configure-build
85   cache: {}
86   variables:
87     KUBERNETES_CPU_LIMIT: 1
88     KUBERNETES_CPU_REQUEST: 1
89     KUBERNETES_MEMORY_REQUEST: 2Gi
90     CMAKE_COMPILER_SCRIPT: ""
91     CMAKE_EXTRA_OPTIONS: ""
92     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
93     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
94     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
95     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
96     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
97   script:
98     - echo $CMAKE_COMPILER_SCRIPT
99     - echo $CMAKE_EXTRA_OPTIONS
100     - echo $CMAKE_SIMD_OPTIONS
101     - echo $CMAKE_GPU_OPTIONS
102     - echo $CMAKE_MPI_OPTIONS
103     - echo $CMAKE_PRECISION_OPTIONS
104     - echo $CMAKE_BUILD_TYPE_OPTIONS
105     - echo $CMAKE_GMXAPI_OPTIONS
106     - if [[ -d $BUILD_DIR ]] ; then
107       rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
108       else
109       echo "Preparing new build directory" ;
110       mkdir $BUILD_DIR ;
111       fi
112     - cd $BUILD_DIR
113     - cmake ..
114       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
115       $CMAKE_COMPILER_SCRIPT
116       $CMAKE_EXTRA_OPTIONS
117       $CMAKE_SIMD_OPTIONS
118       $CMAKE_MPI_OPTIONS
119       $CMAKE_PRECISION_OPTIONS
120       $CMAKE_BUILD_TYPE_OPTIONS
121       $CMAKE_GPU_OPTIONS
122       $CMAKE_GMXAPI_OPTIONS
123       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
124       2>&1 | tee cmakeLog.log
125     - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
126     - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
127     - cd ..
128   artifacts:
129     when: always
130     paths:
131       - $BUILD_DIR
132
133 .gromacs:base:release:configure:
134   extends:
135     - .variables:default
136   stage: release-configure
137   cache: {}
138   variables:
139     KUBERNETES_CPU_LIMIT: 1
140     KUBERNETES_CPU_REQUEST: 1
141     KUBERNETES_MEMORY_REQUEST: 2Gi
142     CMAKE_COMPILER_SCRIPT: ""
143     CMAKE_EXTRA_OPTIONS: ""
144     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
145     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
146     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
147     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
148     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
149     CMAKE_REGRESSIONTEST_OPTIONS: "-DREGRESSIONTEST_PATH=../\\$RELEASE_REGRESSIONTESTS"
150     RELEASE_BUILD_DIR: release-builds
151     RELEASE_SOURCE: release-source-from-tarball
152     RELEASE_REGRESSIONTESTS: release-regressiontests-from-tarball
153   script:
154     - VERSION=`cat version.json |
155       python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
156     - if [[ $GROMACS_RELEASE != "true" ]] ; then
157       VERSION=$VERSION-dev ;
158       fi
159     - SOURCENAME=gromacs-$VERSION
160     - SOURCETARBALL=$SOURCENAME.tar.gz
161     - REGTESTNAME=regressiontests-$VERSION
162     - REGTESTTARBALL=$REGTESTNAME.tar.gz
163     - echo "$SOURCETARBALL"
164     - echo "$REGTESTTARBALL"
165     - RELEASE_TARBALLS=release-tarballs
166     - rm -rf $RELEASE_TARBALLS $RELEASE_SOURCE $RELEASE_REGRESSIONTESTS && mkdir $RELEASE_TARBALLS
167     - mv $SOURCETARBALL $RELEASE_TARBALLS
168     - mv $REGTESTTARBALL $RELEASE_TARBALLS
169     - cd $RELEASE_TARBALLS
170     # We rename the source and regressiontest directories
171     # to have names for them that don't change for different versions.
172     - tar -xf $SOURCETARBALL
173     - mv $SOURCENAME ../$RELEASE_SOURCE
174     - tar -xf $REGTESTTARBALL
175     - mv $REGTESTNAME ../$RELEASE_REGRESSIONTESTS
176     - rm $SOURCETARBALL $REGTESTTARBALL
177     - cd ..
178     - echo $CMAKE_COMPILER_SCRIPT
179     - echo $CMAKE_EXTRA_OPTIONS
180     - echo $CMAKE_SIMD_OPTIONS
181     - echo $CMAKE_GPU_OPTIONS
182     - echo $CMAKE_MPI_OPTIONS
183     - echo $CMAKE_PRECISION_OPTIONS
184     - echo $CMAKE_BUILD_TYPE_OPTIONS
185     - echo $CMAKE_GMXAPI_OPTIONS
186     - if [[ -d $RELEASE_BUILD_DIR ]] ; then
187       echo "Cleaning up build directory" ;
188       rm -rf $RELEASE_BUILD_DIR && mkdir $RELEASE_BUILD_DIR ;
189       else
190       echo "Preparing new build directory" ;
191       mkdir $RELEASE_BUILD_DIR ;
192       fi
193     - cd $RELEASE_BUILD_DIR
194     - cmake ../$RELEASE_SOURCE/
195       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
196       $CMAKE_COMPILER_SCRIPT
197       $CMAKE_EXTRA_OPTIONS
198       $CMAKE_SIMD_OPTIONS
199       $CMAKE_MPI_OPTIONS
200       $CMAKE_PRECISION_OPTIONS
201       $CMAKE_BUILD_TYPE_OPTIONS
202       $CMAKE_GPU_OPTIONS
203       $CMAKE_GMXAPI_OPTIONS
204       $CMAKE_REGRESSIONTEST_OPTIONS
205       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR
206       2>&1 | tee cmakeLog.log
207     - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
208     - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
209     - cd ..
210   artifacts:
211     when: always
212     paths:
213       - $RELEASE_BUILD_DIR
214       - $RELEASE_REGRESSIONTESTS
215       - $RELEASE_SOURCE
216
217 # Templates for configuration stage
218
219 gromacs:gcc-7:configure:
220   extends:
221     - .gromacs:base:configure
222     - .use-gcc:base
223     - .use-opencl
224     - .rules:merge-requests
225   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
226   variables:
227     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AVX2_256"
228     CMAKE_EXTRA_OPTIONS: "-DGMX_EXTERNAL_CLFFT=ON"
229     COMPILER_MAJOR_VERSION: 7
230
231 gromacs:gcc-8-cuda-10.1:configure:
232   extends:
233     - .gromacs:base:configure
234     - .use-gcc:base
235     - .use-cuda
236     - .rules:merge-requests
237   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
238   variables:
239     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
240     COMPILER_MAJOR_VERSION: 8
241
242 gromacs:clang-TSAN:configure:
243   extends:
244     - .gromacs:base:configure
245     - .use-clang:base
246     - .rules:merge-requests
247   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
248   variables:
249     COMPILER_MAJOR_VERSION: 8
250     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=TSAN"
251
252 gromacs:clang-8:configure:
253   extends:
254     - .gromacs:base:configure
255     - .use-clang:base
256     - .rules:merge-requests
257   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
258   variables:
259     COMPILER_MAJOR_VERSION: 8
260
261 gromacs:clang-9-mpi:configure:
262   extends:
263    - .gromacs:base:configure
264    - .use-clang:base
265    - .use-mpi
266    - .rules:merge-requests
267   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
268   variables:
269     COMPILER_MAJOR_VERSION: 9
270     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
271
272 gromacs:clang-static-analyzer:configure:
273   extends:
274     - .gromacs:base:configure
275     - .use-clang:base
276     - .rules:merge-requests
277   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
278   variables:
279      CMAKE_COMPILER_SCRIPT: "-DCMAKE_CXX_COMPILER=/usr/local/libexec/c++-analyzer -DCMAKE_C_COMPILER=gcc"
280      CMAKE_EXTRA_OPTIONS: "-DGMX_CLANG_ANALYZER=ON -DGMX_OPENMP=OFF -DGMX_USE_RDTSCP=OFF -DGMX_FFT_LIBRARY=fftpack -DGMX_DEVELOPER_BUILD=ON"
281      CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
282
283 gromacs:clang-ASAN:configure:
284   extends:
285     - .gromacs:base:configure
286     - .use-clang:base
287     - .rules:merge-requests
288   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
289   variables:
290     COMPILER_MAJOR_VERSION: 8
291     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=ASAN"
292
293 gromacs:clang-UBSAN:configure:
294   extends:
295     - .gromacs:base:configure
296     - .use-clang:base
297     - .rules:merge-requests
298   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
299   variables:
300     COMPILER_MAJOR_VERSION: 8
301     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=UBSAN"
302
303 gromacs:gcc-8-cuda-10.1:release:configure:
304   extends:
305     - .gromacs:base:release:configure
306     - .use-gcc:base
307     - .use-mpi
308     - .use-cuda
309     - .rules:nightly-only-for-release
310   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
311   variables:
312     COMPILER_MAJOR_VERSION: 8
313     RELEASE_BUILD_DIR: release-builds-gcc
314     CMAKE_EXTRA_OPTIONS: "-DGMX_BUILD_MDRUN_ONLY=ON"
315     CMAKE_BUILD_TYPE_OPTIONS : "-DCMAKE_BUILD_TYPE=RelWithAssert"
316     CMAKE_REGRESSIONTEST_OPTIONS: ""
317   dependencies:
318     - archive:package
319     - regressiontests:package
320     - prepare-release-version
321
322 gromacs:gcc-7:release:configure:
323   extends:
324     - .gromacs:base:release:configure
325     - .use-gcc:base
326     - .rules:nightly-only-for-release
327   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
328   variables:
329     COMPILER_MAJOR_VERSION: 7
330     RELEASE_BUILD_DIR: release-builds-gcc
331     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
332   dependencies:
333     - archive:package
334     - regressiontests:package
335     - prepare-release-version
336
337 gromacs:clang-9:release:configure:
338   extends:
339     - .gromacs:base:release:configure
340     - .use-clang:base
341     - .use-mpi
342     - .rules:nightly-only-for-release
343   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
344   variables:
345     COMPILER_MAJOR_VERSION: 9
346     RELEASE_BUILD_DIR: release-builds-clang
347     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=ON"
348     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
349   dependencies:
350     - archive:package
351     - regressiontests:package
352     - prepare-release-version
353
354 gromacs:clang-8-cuda-10.1:release:configure:
355   extends:
356     - .gromacs:base:release:configure
357     - .use-clang:base
358     - .use-cuda
359     - .rules:nightly-only-for-release
360   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
361   variables:
362     COMPILER_MAJOR_VERSION: 8
363     RELEASE_BUILD_DIR: release-builds-clang
364     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
365
366 # Jobs running during build stage
367
368 .gromacs:base:build:
369   stage: build
370   script:
371     - cd $BUILD_DIR
372     - cmake --build . -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee buildLogFile.log
373     - cmake --build . --target tests -- -j$KUBERNETES_CPU_LIMIT 2>&1 | tee testBuildLogFile.log
374     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
375       | grep -v "CMake" | tee buildErrors.log || true
376     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
377     - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
378     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
379     - for file in `find . -mindepth 1 -name "*.o" ! -type l` ; do echo $file ; rm $file ; done 2>&1 > remove-build-objects.log
380     - cd ..
381   artifacts:
382     when: always
383     paths:
384       - $BUILD_DIR
385       - $INSTALL_DIR/
386
387 .gromacs:static-analyzer-build:
388   stage: build
389   script:
390     - cd $BUILD_DIR
391     - scan-build -o scan_html cmake --build . -- -j8 2>&1 | tee buildLogFile.log
392     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log
393       | grep -v "CMake" | tee buildErrors.log || true
394     - grep "cannot be built" buildLogFile.log | tee -a buildErrors.log || true
395     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
396     - cd ..
397   artifacts:
398     when: always
399     paths:
400       - $BUILD_DIR/scan_html
401
402 gromacs:gcc-7:build:
403   extends:
404     - .variables:default
405     - .gromacs:base:build
406     - .before_script:default
407     - .use-ccache
408     - .rules:merge-requests
409   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
410   needs:
411     - job: gromacs:gcc-7:configure
412       artifacts: true
413
414 gromacs:gcc-8-cuda-10.1:build:
415   extends:
416     - .variables:default
417     - .gromacs:base:build
418     - .before_script:default
419     - .use-ccache
420     - .rules:merge-requests
421   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
422   needs:
423     - job: gromacs:gcc-8-cuda-10.1:configure
424
425 gromacs:clang-TSAN:build:
426   extends:
427     - .variables:default
428     - .gromacs:base:build
429     - .use-clang:base
430     - .use-ccache
431     - .rules:merge-requests
432   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
433   needs:
434     - job: gromacs:clang-TSAN:configure
435
436 gromacs:clang-ASAN:build:
437   extends:
438     - .variables:default
439     - .gromacs:base:build
440     - .use-clang:base
441     - .use-ccache
442     - .rules:merge-requests
443   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
444   tags:
445     - k8s-scilifelab
446   needs:
447     - job: gromacs:clang-ASAN:configure
448
449 gromacs:clang-UBSAN:build:
450   extends:
451     - .variables:default
452     - .gromacs:base:build
453     - .use-clang:base
454     - .use-ccache
455     - .rules:merge-requests
456   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
457   tags:
458     - k8s-scilifelab
459   needs:
460     - job: gromacs:clang-UBSAN:configure
461
462 gromacs:clang-static-analyzer:build:
463   extends:
464     - .variables:default
465     - .gromacs:static-analyzer-build
466     - .use-clang:base
467     - .use-ccache
468     - .rules:merge-requests
469   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
470   tags:
471     - k8s-scilifelab
472   needs:
473     - job: gromacs:clang-static-analyzer:configure
474
475 gromacs:clang-8:build:
476   extends:
477     - .variables:default
478     - .gromacs:base:build
479     - .before_script:default
480     - .use-ccache
481     - .rules:merge-requests
482   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
483   needs:
484     - job: gromacs:clang-8:configure
485
486 gromacs:clang-9-mpi:build:
487   extends:
488     - .variables:default
489     - .gromacs:base:build
490     - .before_script:default
491     - .use-ccache
492     - .rules:merge-requests
493   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
494   needs:
495     - job: gromacs:clang-9-mpi:configure
496
497 gromacs:gcc-8-cuda-10.1:release:build:
498   extends:
499     - .variables:default  
500     - .gromacs:base:build
501     - .before_script:default
502     - .use-ccache
503     - .rules:nightly-only-for-release
504   stage: release-build
505   variables:
506     BUILD_DIR: release-builds-gcc
507   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
508   needs:
509     - job: gromacs:gcc-8-cuda-10.1:release:configure
510
511 gromacs:gcc-7:release:build:
512   extends:
513     - .variables:default
514     - .gromacs:base:build
515     - .before_script:default
516     - .use-ccache
517     - .rules:nightly-only-for-release
518   stage: release-build
519   variables:
520     BUILD_DIR: release-builds-gcc
521   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
522   needs:
523     - job: gromacs:gcc-7:release:configure
524
525 gromacs:clang-9:release:build:
526   extends:
527     - .variables:default
528     - .gromacs:base:build
529     - .before_script:default
530     - .use-ccache
531     - .rules:nightly-only-for-release
532   stage: release-build
533   variables:
534     BUILD_DIR: release-builds-clang
535   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
536   needs:
537     - job: gromacs:clang-9:release:configure
538
539 gromacs:clang-8-cuda-10.1:release:build:
540   extends:
541     - .variables:default
542     - .gromacs:base:build
543     - .before_script:default
544     - .use-ccache
545     - .rules:nightly-only-for-release
546   stage: release-build
547   variables:
548     BUILD_DIR: release-builds-clang
549   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
550   needs:
551     - job: gromacs:clang-8-cuda-10.1:release:configure
552
553 # Jobs running during test stage
554
555 .gromacs:base:test:
556   extends:
557     - .variables:default
558   stage: test
559   cache: {}
560   retry:
561     max: 1
562   variables:
563     CTEST_RUN_MODE: "ExperimentalTest"
564   script:
565     - cd $BUILD_DIR
566     - export UBSAN_OPTIONS=halt_on_error=1:print_stacktrace=1:suppressions=$CI_PROJECT_DIR/admin/ubsan-suppressions.txt
567     # Needed to run MPI enabled code in the docker images, until we set up different users
568     - export OMPI_ALLOW_RUN_AS_ROOT=1
569     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
570     - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
571     - ctest -D $CTEST_RUN_MODE --output-on-failure | tee ctestLog.log || true
572     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
573       ctestLog.log | tee ctestErrors.log
574     - xsltproc $CI_PROJECT_DIR/scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/*.xml > JUnitTestResults.xml
575     - if [ -s ctestErrors.log ] ; then
576       echo "Error during running ctest";
577       exit 1;
578       fi
579     - cd ..
580   artifacts:
581     reports:
582       junit: $BUILD_DIR/JUnitTestResults.xml
583     paths:
584       - $BUILD_DIR/Testing
585       - $BUILD_DIR/tests
586     when: always
587     expire_in: 1 week
588
589 .gromacs:base:regressiontest:
590   extends:
591     - .variables:default
592   variables:
593     KUBERNETES_CPU_LIMIT: 4
594     KUBERNETES_CPU_REQUEST: 4
595     KUBERNETES_MEMORY_REQUEST: 4Gi
596     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
597     REGRESSIONTEST_OMP_RANK_NUMBER: 2
598     REGRESSIONTEST_PME_RANK_NUMBER: 1
599     REGRESSIONTEST_MPI_RUN_COMMAND: ""
600     REGRESSIONTEST_DOUBLE: ""
601     REGRESSIONTEST_PARALLEL: "-nt"
602   stage: test
603   cache: {}
604   retry:
605     max: 1
606   script:
607     - export LSAN_OPTIONS="suppressions=$CI_PROJECT_DIR/admin/lsan-suppressions.txt:print_suppressions=0"
608     - export ASAN_OPTIONS="check_initialization_order=1:detect_invalid_pointer_pairs=1:strict_init_order=true:strict_string_checks=true:detect_stack_use_after_return=true"
609     # Needed to run MPI enabled code in the docker images, until we set up different users
610     - export OMPI_ALLOW_RUN_AS_ROOT=1
611     - export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
612     - tar xzf gmx-regressiontests.tar.gz
613     - source $INSTALL_DIR/bin/GMXRC
614     - cd regressiontests
615     - perl gmxtest.pl $REGRESSIONTEST_PARALLEL $REGRESSIONTEST_TOTAL_RANK_NUMBER -ntomp $REGRESSIONTEST_OMP_RANK_NUMBER -npme $REGRESSIONTEST_PME_RANK_NUMBER $REGRESSIONTEST_DOUBLE $REGRESSIONTEST_MPI_RUN_COMMAND -xml all
616   artifacts:
617     paths:
618       - regressiontests/gmxtest.xml
619     when: always
620     expire_in: 1 week
621
622 gromacs:gcc-7:test:
623   extends:
624     - .gromacs:base:test
625     - .rules:merge-requests
626   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
627   variables:
628     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
629     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
630   tags:
631     - k8s-scilifelab
632   needs:
633     - job: gromacs:gcc-7:build
634
635 gromacs:gcc-8-cuda-10.1:test:
636   extends:
637     - .gromacs:base:test
638     - .rules:merge-requests
639   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
640   variables:
641     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
642     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
643   tags:
644     - k8s-scilifelab
645   needs:
646     - job: gromacs:gcc-8-cuda-10.1:build
647
648 gromacs:clang-8:test:
649   extends:
650     - .gromacs:base:test
651     - .rules:merge-requests
652   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
653   needs:
654     - job: gromacs:clang-8:build
655
656 gromacs:clang-TSAN:test:
657   extends:
658     - .gromacs:base:test
659     - .rules:merge-requests
660   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
661   needs:
662     - job: gromacs:clang-TSAN:build
663
664 gromacs:clang-ASAN:test:
665   extends:
666     - .gromacs:base:test
667     - .use-clang:base
668     - .rules:merge-requests
669   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
670   variables:
671     CTEST_RUN_MODE: "ExperimentalMemCheck"
672   tags:
673     - k8s-scilifelab
674   needs:
675     - job: gromacs:clang-ASAN:build
676
677 gromacs:clang-UBSAN:test:
678   extends:
679     - .gromacs:base:test
680     - .use-clang:base
681     - .rules:merge-requests
682   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
683   tags:
684     - k8s-scilifelab
685   needs:
686     - job: gromacs:clang-UBSAN:build
687
688 gromacs:clang-9-mpi:test:
689   extends:
690     - .gromacs:base:test
691     - .rules:merge-requests
692   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
693   tags:
694     - k8s-scilifelab
695   needs:
696     - job: gromacs:clang-9-mpi:build
697
698 gromacs:gcc-7:regressiontest:
699   extends:
700     - .gromacs:base:regressiontest
701     - .rules:merge-requests
702   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
703   variables:
704     KUBERNETES_EXTENDED_RESOURCE_NAME: "amd.com/gpu"
705     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
706     REGRESSIONTEST_PME_RANK_NUMBER: 0
707     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
708     REGRESSIONTEST_OMP_RANK_NUMBER: 1
709   tags:
710     - k8s-scilifelab
711   needs:
712     - job: gromacs:gcc-7:build
713     - job: regressiontests:prepare
714
715 gromacs:gcc-8-cuda-10.1:regressiontest:
716   extends:
717     - .gromacs:base:regressiontest
718     - .rules:merge-requests
719   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
720   variables:
721     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
722     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
723     REGRESSIONTEST_PME_RANK_NUMBER: 0
724     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
725     REGRESSIONTEST_OMP_RANK_NUMBER: 1
726   tags:
727     - k8s-scilifelab
728   needs:
729     - job: gromacs:gcc-8-cuda-10.1:build
730     - job: regressiontests:prepare
731
732 gromacs:clang-8:regressiontest:
733   extends:
734     - .gromacs:base:regressiontest
735     - .rules:merge-requests
736   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
737   tags:
738     - k8s-scilifelab
739   needs:
740     - job: gromacs:clang-8:build
741     - job: regressiontests:prepare
742
743 gromacs:clang-TSAN:regressiontest:
744   extends:
745     - .gromacs:base:regressiontest
746     - .rules:merge-requests
747   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
748   tags:
749     - k8s-scilifelab
750   needs:
751     - job: gromacs:clang-TSAN:build
752     - job: regressiontests:prepare
753
754 gromacs:clang-ASAN:regressiontest:
755   extends:
756     - .gromacs:base:regressiontest
757     - .use-clang:base
758     - .rules:merge-requests
759   image: gromacs/cmake-3.13.0-llvm-8-tsan-master
760   tags:
761     - k8s-scilifelab
762   needs:
763     - job: gromacs:clang-ASAN:build
764     - job: regressiontests:prepare
765
766 gromacs:clang-9:regressiontest:
767   extends:
768     - .gromacs:base:regressiontest
769     - .rules:merge-requests
770   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
771   variables:
772     REGRESSIONTEST_DOUBLE: "-double"
773     REGRESSIONTEST_PARALLEL: "-np"
774   tags:
775     - k8s-scilifelab
776   needs:
777     - job: gromacs:clang-9-mpi:build
778     - job: regressiontests:prepare
779
780 gromacs:gcc-8-cuda-10.1:release:test:
781   extends:
782     - .gromacs:base:test
783     - .rules:nightly-only-for-release
784   stage: release-tests
785   image: gromacs/cmake-3.15.7-gcc-8-cuda-10.1-nvidiaopencl-clfft-openmpi-master
786   variables:
787     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
788     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
789     BUILD_DIR: release-builds-gcc
790   tags:
791     - k8s-scilifelab
792   needs:
793     - job: gromacs:gcc-8-cuda-10.1:release:configure
794     - job: gromacs:gcc-8-cuda-10.1:release:build
795
796 gromacs:gcc-7:release:test:
797   extends:
798     - .gromacs:base:test
799     - .rules:nightly-only-for-release
800   stage: release-tests
801   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
802   variables:
803     BUILD_DIR: release-builds-gcc
804   needs:
805     - job: gromacs:gcc-7:release:configure
806     - job: gromacs:gcc-7:release:build
807
808 gromacs:clang-9:release:test:
809   extends:
810     - .gromacs:base:test
811     - .rules:nightly-only-for-release
812   stage: release-tests
813   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
814   variables:
815     BUILD_DIR: release-builds-clang
816   needs:
817     - job: gromacs:clang-9:release:configure
818     - job: gromacs:clang-9:release:build
819
820 gromacs:clang-8-cuda-10.1:release:test:
821   extends:
822     - .gromacs:base:test
823     - .rules:nightly-only-for-release
824   stage: release-tests
825   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
826   variables:
827     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
828     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
829     BUILD_DIR: release-builds-clang
830   tags:
831     - k8s-scilifelab
832   needs:
833     - job: gromacs:clang-8-cuda-10.1:release:configure
834     - job: gromacs:clang-8-cuda-10.1:release:build
835
836 gromacs:gcc-7:release:regressiontest:
837   extends:
838     - .gromacs:base:regressiontest
839     - .rules:nightly-only-for-release
840   stage: release-tests
841   image: gromacs/cmake-3.13.0-gcc-7-amdopencl-clfft-openmpi-master
842   variables:
843     BUILD_DIR: release-builds-gcc
844   tags:
845     - k8s-scilifelab
846   needs:
847     - job: gromacs:gcc-7:release:build
848     - job: regressiontests:package
849
850 gromacs:clang-9:release:regressiontest:
851   extends:
852     - .gromacs:base:regressiontest
853     - .rules:nightly-only-for-release
854   stage: release-tests
855   image: gromacs/cmake-3.15.7-llvm-9-openmpi-master
856   variables:
857     BUILD_DIR: release-builds-clang
858     REGRESSIONTEST_DOUBLE: "-double"
859     REGRESSIONTEST_PARALLEL: "-np"
860   tags:
861     - k8s-scilifelab
862   needs:
863     - job: gromacs:clang-9:release:build
864     - job: regressiontests:package
865
866 gromacs:clang-8-cuda-10.1:release:regressiontest:
867   extends:
868     - .gromacs:base:regressiontest
869     - .rules:nightly-only-for-release
870   stage: release-tests
871   image: gromacs/cmake-3.15.7-llvm-8-cuda-10.1-openmpi-master
872   variables:
873     BUILD_DIR: release-builds-clang
874     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
875     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
876     REGRESSIONTEST_PME_RANK_NUMBER: 0
877     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
878     REGRESSIONTEST_OMP_RANK_NUMBER: 1
879   tags:
880     - k8s-scilifelab
881   needs:
882     - job: gromacs:clang-8-cuda-10.1:release:build
883     - job: regressiontests:package
884