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