Allow useful CI to run in forks
[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     - .rules:basic
10   stage: pre-build
11   tags: []
12   variables:
13     KUBERNETES_CPU_LIMIT: 8
14     KUBERNETES_CPU_REQUEST: 4
15     KUBERNETES_MEMORY_LIMIT: 8Gi
16     CMAKE_COMPILER_SCRIPT: ""
17     CMAKE_EXTRA_OPTIONS: ""
18     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=None"
19     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
20     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
21     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
22     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
23     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
24     BUILD_DIR: simple-build
25   script:
26     - echo $CMAKE_COMPILER_SCRIPT
27     - echo $CMAKE_EXTRA_OPTIONS
28     - echo $CMAKE_SIMD_OPTIONS
29     - echo $CMAKE_GPU_OPTIONS
30     - echo $CMAKE_MPI_OPTIONS
31     - echo $CMAKE_PRECISION_OPTIONS
32     - echo $CMAKE_BUILD_TYPE_OPTIONS
33     - echo $CMAKE_GMXAPI_OPTIONS
34     - if [[ -d $BUILD_DIR ]] ; then
35       echo "Cleaning up build directory" ;
36       rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
37       else
38       echo "Preparing new build directory" ;
39       mkdir $BUILD_DIR ;
40       fi
41     - cd $BUILD_DIR
42     - cmake ..
43       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
44       $CMAKE_COMPILER_SCRIPT
45       $CMAKE_EXTRA_OPTIONS
46       $CMAKE_SIMD_OPTIONS
47       $CMAKE_MPI_OPTIONS
48       $CMAKE_PRECISION_OPTIONS
49       $CMAKE_BUILD_TYPE_OPTIONS
50       $CMAKE_GPU_OPTIONS
51       $CMAKE_GMXAPI_OPTIONS
52       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
53       2>&1 | tee cmakeLog.log
54     - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
55     - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
56     - cmake --build . -- -j8 2>&1 | tee buildLogFile.log
57     - cmake --build . --target tests -- -j8 2>&1 | tee testBuildLogFile.log
58     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
59       | grep -v "CMake" | tee buildErrors.log || true
60     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
61     - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
62     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
63     - ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
64     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
65       ctestLog.log | tee ctestErrors.log
66     - xsltproc scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > JUnitTestResults.xml
67     - if [ -s ctestErrors.log ] ; then
68       echo "Error during running ctest";
69       exit 1;
70       fi
71     - cd ..
72   artifacts:
73     reports:
74       junit: $BUILD_DIR/JUnitTestResults.xml
75     paths:
76       - $BUILD_DIR/*log
77     when: always
78     expire_in: 1 week
79
80 # Jobs running in first pre-build stage
81
82 .gromacs:base:configure:
83   extends:
84     - .variables:default
85   cache: {}
86   stage: configure-build
87   variables:
88     KUBERNETES_CPU_LIMIT: 1
89     KUBERNETES_CPU_REQUEST: 1
90     KUBERNETES_MEMORY_LIMIT: 2Gi
91     CMAKE_COMPILER_SCRIPT: ""
92     CMAKE_EXTRA_OPTIONS: ""
93     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AUTO"
94     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
95     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
96     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=Debug"
97     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
98   script:
99     - echo $CMAKE_COMPILER_SCRIPT
100     - echo $CMAKE_EXTRA_OPTIONS
101     - echo $CMAKE_SIMD_OPTIONS
102     - echo $CMAKE_GPU_OPTIONS
103     - echo $CMAKE_MPI_OPTIONS
104     - echo $CMAKE_PRECISION_OPTIONS
105     - echo $CMAKE_BUILD_TYPE_OPTIONS
106     - echo $CMAKE_GMXAPI_OPTIONS
107     - if [[ -d $BUILD_DIR ]] ; then
108       rm -rf $BUILD_DIR && mkdir $BUILD_DIR ;
109       else
110       echo "Preparing new build directory" ;
111       mkdir $BUILD_DIR ;
112       fi
113     - cd $BUILD_DIR
114     - cmake ..
115       -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
116       $CMAKE_COMPILER_SCRIPT
117       $CMAKE_EXTRA_OPTIONS
118       $CMAKE_SIMD_OPTIONS
119       $CMAKE_MPI_OPTIONS
120       $CMAKE_PRECISION_OPTIONS
121       $CMAKE_BUILD_TYPE_OPTIONS
122       $CMAKE_GPU_OPTIONS
123       $CMAKE_GMXAPI_OPTIONS
124       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
125       2>&1 | tee cmakeLog.log
126     - awk '/CMake Warning/,/^--|^$/' cmakeLog.log | tee cmakeErrors.log
127     - if [ -s cmakeErrors.log  ] ; then echo "Found CMake warning while processing build"; cat cmakeErrors.log ; exit 1; fi
128     - cd ..
129   artifacts:
130     when: always
131     paths:
132       - $BUILD_DIR
133
134 .gromacs:base:release:configure:
135   extends:
136     - .variables:default
137   cache: {}
138   stage: release-configure
139   variables:
140     KUBERNETES_CPU_LIMIT: 1
141     KUBERNETES_CPU_REQUEST: 1
142     KUBERNETES_MEMORY_LIMIT: 2Gi
143     CMAKE_COMPILER_SCRIPT: ""
144     CMAKE_EXTRA_OPTIONS: ""
145     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=AUTO"
146     CMAKE_MPI_OPTIONS: "-DGMX_THREAD_MPI=ON"
147     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
148     CMAKE_BUILD_TYPE_OPTIONS: "-DCMAKE_BUILD_TYPE=RelWithAssert"
149     CMAKE_GPU_OPTIONS: "-DGMX_GPU=OFF"
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       "-DREGRESSIONTEST_PATH=../$RELEASE_REGRESSIONTESTS"
205       -DCMAKE_INSTALL_PREFIX=../$INSTALL_DIR -DGMX_COMPILER_WARNINGS=ON
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-gcc7
223     - .rules:not-for-release
224   dependencies: []
225
226 gromacs:gcc-7:release:configure:
227   extends:
228     - .gromacs:base:release:configure
229     - .use-gcc7
230     - .rules:nightly-only-for-release
231   cache: {}
232   variables:
233     RELEASE_BUILD_DIR: release-builds-gcc
234   dependencies:
235     - archive:package
236     - regressiontests:package
237     - prepare-release-version
238
239 gromacs:gcc-7-simd-sse41:configure:
240   extends:
241     - .gromacs:base:configure
242     - .use-gcc7
243     - .rules:not-for-release
244   dependencies: []
245   variables:
246     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
247
248 gromacs:gcc-7-double:configure:
249   extends:
250     - .gromacs:base:configure
251     - .use-gcc7
252     - .rules:not-for-release
253   dependencies: []
254   variables:
255     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
256
257 gromacs:gcc-7-double:release:configure:
258   extends:
259     - .gromacs:base:release:configure
260     - .use-gcc7
261     - .rules:nightly-only-for-release
262   cache: {}
263   variables:
264     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
265     RELEASE_BUILD_DIR: release-builds-gcc
266   dependencies:
267     - archive:package
268     - regressiontests:package
269     - prepare-release-version
270
271 gromacs:gcc-8:configure:
272   extends:
273     - .gromacs:base:configure
274     - .use-gcc8
275     - .rules:not-for-release
276   dependencies: []
277
278 gromacs:gcc-8:release:configure:
279   extends:
280     - .gromacs:base:release:configure
281     - .use-gcc8
282     - .rules:nightly-only-for-release
283   cache: {}
284   variables:
285     RELEASE_BUILD_DIR: release-builds-gcc
286   dependencies:
287     - archive:package
288     - regressiontests:package
289     - prepare-release-version
290
291 gromacs:gcc-8-cuda-10.2:configure:
292   extends:
293     - .gromacs:base:configure
294     - .use-cuda
295     - .use-gcc8:cuda-10.2
296     - .rules:not-for-release
297   variables:
298     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
299   # TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
300   dependencies: []
301
302 # For version of clang before 7, we need to always provide the full version
303 # Use something like this instead in the download script:
304 # APT_COMPILER_VERSION=$(($COMPILER_MAJOR_VERSION < 7 ? "${COMPILER_MAJOR_VERSION}.0" : $COMPILER_MAJOR_VERSION))
305 gromacs:clang-6:configure:
306   extends:
307     - .gromacs:base:configure
308     - .use-clang6
309     - .rules:not-for-release
310   dependencies: []
311   variables:
312     COMPILER_MAJOR_VERSION: "6.0"
313     CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
314
315 gromacs:clang-7:configure:
316   extends:
317     - .gromacs:base:configure
318     - .use-clang7
319     - .rules:not-for-release
320   dependencies: []
321
322 gromacs:clang-7:release:configure:
323   extends:
324     - .gromacs:base:release:configure
325     - .use-clang7
326     - .rules:nightly-only-for-release
327   cache: {}
328   variables:
329     RELEASE_BUILD_DIR: release-builds-clang
330   dependencies:
331     - archive:package
332     - regressiontests:package
333     - prepare-release-version
334
335 gromacs:clang-8:configure:
336   extends:
337     - .gromacs:base:configure
338     - .use-clang8
339     - .rules:not-for-release
340   dependencies: []
341
342 gromacs:clang-8:release:configure:
343   extends:
344     - .gromacs:base:release:configure
345     - .use-clang8
346     - .rules:nightly-only-for-release
347   cache: {}
348   variables:
349     RELEASE_BUILD_DIR: release-builds-clang
350   dependencies:
351     - archive:package
352     - regressiontests:package
353     - prepare-release-version
354
355 # Jobs running during build stage
356
357 .gromacs:base:build:
358   # Dockerfiles are from dockerhub, user eriklindahl
359   # image in admin/dockerimages/ci-docs-py27
360   stage: build
361   script:
362     - cd $BUILD_DIR
363     - cmake --build . -- -j8 2>&1 | tee buildLogFile.log
364     - cmake --build . --target tests -- -j8 2>&1 | tee testBuildLogFile.log
365     - awk '/warning/,/warning.*generated|^$/' buildLogFile.log testBuildLogFile.log
366       | grep -v "CMake" | tee buildErrors.log || true
367     - grep "cannot be built" buildLogFile.log testBuildLogFile.log | tee -a buildErrors.log || true
368     - cmake --build . --target install 2>&1 | tee installBuildLogFile.log
369     - if [ -s buildErrors.log ] ; then echo "Found compiler warning during build"; cat buildErrors.log; exit 1; fi
370     - cd ..
371   artifacts:
372     when: always
373     paths:
374       - $BUILD_DIR
375       - $INSTALL_DIR/
376
377 gromacs:gcc-7:build:
378   extends:
379     - .gromacs:base:build
380     - .use-ccache
381     - .variables:default
382     - .use-gcc7
383     - .rules:not-for-release
384   needs:
385     - job: gromacs:gcc-7:configure
386       artifacts: true
387
388 gromacs:gcc-7:release:build:
389   extends:
390     - .gromacs:base:build
391     - .use-ccache
392     - .variables:default
393     - .use-gcc7
394     - .rules:nightly-only-for-release
395   stage: release-build
396   variables:
397     BUILD_DIR: release-builds-gcc
398   needs:
399     - job: gromacs:gcc-7:release:configure
400       artifacts: true
401
402 gromacs:gcc-7-simd-sse41:build:
403   extends:
404     - .gromacs:base:build
405     - .use-ccache
406     - .variables:default
407     - .use-gcc7
408     - .rules:not-for-release
409   needs:
410     - job: gromacs:gcc-7-simd-sse41:configure
411       artifacts: true
412
413 gromacs:gcc-7-double:build:
414   extends:
415     - .gromacs:base:build
416     - .use-ccache
417     - .variables:default
418     - .use-gcc7
419     - .rules:not-for-release
420   needs:
421     - job: gromacs:gcc-7-double:configure
422       artifacts: true
423
424 gromacs:gcc-7-double:release:build:
425   extends:
426     - .gromacs:base:build
427     - .use-ccache
428     - .variables:default
429     - .use-gcc7
430     - .rules:nightly-only-for-release
431   stage: release-build
432   variables:
433     BUILD_DIR: release-builds-gcc
434   needs:
435     - job: gromacs:gcc-7-double:release:configure
436       artifacts: true
437
438 gromacs:gcc-8:build:
439   extends:
440     - .gromacs:base:build
441     - .use-ccache
442     - .variables:default
443     - .use-gcc8
444     - .rules:not-for-release
445   needs:
446     - job: gromacs:gcc-8:configure
447       artifacts: true
448
449 gromacs:gcc-8:release:build:
450   extends:
451     - .gromacs:base:build
452     - .use-ccache
453     - .variables:default
454     - .use-gcc8
455     - .rules:nightly-only-for-release
456   stage: release-build
457   variables:
458     BUILD_DIR: release-builds-gcc
459   needs:
460     - job: gromacs:gcc-8:release:configure
461       artifacts: true
462
463 gromacs:gcc-8-cuda-10.2:build:
464   extends:
465     - .gromacs:base:build
466     - .use-ccache
467     - .variables:default
468     - .use-cuda
469     - .use-gcc8:cuda-10.2
470     - .rules:not-for-release
471   variables:
472     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
473   # TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
474   needs:
475     - job: gromacs:gcc-8-cuda-10.2:configure
476       artifacts: true
477
478 gromacs:clang-6:build:
479   extends:
480     - .gromacs:base:build
481     - .use-ccache
482     - .variables:default
483     - .use-clang6
484     - .rules:not-for-release
485   needs:
486     - job: gromacs:clang-6:configure
487       artifacts: true
488
489 gromacs:clang-7:build:
490   extends:
491     - .gromacs:base:build
492     - .use-ccache
493     - .variables:default
494     - .use-clang7
495     - .rules:not-for-release
496   needs:
497     - job: gromacs:clang-7:configure
498       artifacts: true
499
500 gromacs:clang-7:release:build:
501   extends:
502     - .gromacs:base:build
503     - .use-ccache
504     - .variables:default
505     - .use-clang7
506     - .rules:nightly-only-for-release
507   stage: release-build
508   variables:
509     BUILD_DIR: release-builds-clang
510   needs:
511     - job: gromacs:clang-7:release:configure
512       artifacts: true
513
514 gromacs:clang-8:build:
515   extends:
516     - .gromacs:base:build
517     - .use-ccache
518     - .variables:default
519     - .use-clang8
520     - .rules:not-for-release
521   needs:
522     - job: gromacs:clang-8:configure
523       artifacts: true
524
525 gromacs:clang-8:release:build:
526   extends:
527     - .gromacs:base:build
528     - .use-ccache
529     - .variables:default
530     - .use-clang8
531     - .rules:nightly-only-for-release
532   stage: release-build
533   variables:
534     BUILD_DIR: release-builds-clang
535   needs:
536     - job: gromacs:clang-8:release:configure
537       artifacts: true
538
539 # Jobs running during test stage
540
541 .gromacs:base:test:
542   extends:
543     - .variables:default
544   variables:
545     REGRESSIONTEST_TOTAL_RANK_NUMBER: 4
546     REGRESSIONTEST_OMP_RANK_NUMBER: 2
547     REGRESSIONTEST_PME_RANK_NUMBER: 1
548     REGRESSIONTEST_MPI_RUN_COMMAND: ""
549     REGRESSIONTEST_DOUBLE: ""
550   stage: test
551   retry:
552     max: 2
553   script:
554     - cd $BUILD_DIR
555     - ctest -D ExperimentalTest --output-on-failure | tee ctestLog.log || true
556     - awk '/The following tests FAILED/,/^Errors while running CTest|^$/'
557       ctestLog.log | tee ctestErrors.log
558     - xsltproc scripts/CTest2JUnit.xsl Testing/`head -n 1 < Testing/TAG`/Test.xml > JUnitTestResults.xml
559     - if [ -s ctestErrors.log ] ; then
560       echo "Error during running ctest";
561       exit 1;
562       fi
563     - cd ..
564     - tar xzf gmx-regressiontests.tar.gz
565     - source $INSTALL_DIR/bin/GMXRC
566     - cd regressiontests
567     - 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"
568     - 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
569   artifacts:
570     reports:
571       junit: $BUILD_DIR/JUnitTestResults.xml
572     paths:
573       - $BUILD_DIR/Testing
574       - $BUILD_DIR/tests
575       - regressiontests
576     when: always
577     expire_in: 1 week
578
579 gromacs:gcc-7:test:
580   extends:
581     - .gromacs:base:test
582     - .use-gcc7
583     - .rules:not-for-release
584   needs:
585     - job: gromacs:gcc-7:build
586     - job: regressiontests:prepare
587
588 gromacs:gcc-7:release:test:
589   extends:
590     - .gromacs:base:test
591     - .use-gcc7
592     - .rules:nightly-only-for-release
593   stage: release-tests
594   variables:
595     BUILD_DIR: release-builds-gcc
596   needs:
597     - job: gromacs:gcc-7:release:configure
598       artifacts: true
599     - job: gromacs:gcc-7:release:build
600       artifacts: true
601     - job: regressiontests:package
602
603 gromacs:gcc-7-simd-sse41:test:
604   extends:
605     - .gromacs:base:test
606     - .use-gcc7
607     - .rules:not-for-release
608   needs:
609     - job: gromacs:gcc-7-simd-sse41:build
610     - job: regressiontests:prepare
611
612 gromacs:gcc-7-double:test:
613   extends:
614     - .gromacs:base:test
615     - .use-gcc7
616     - .rules:not-for-release
617   variables:
618     REGRESSIONTEST_DOUBLE: "-double"
619   needs:
620     - job: gromacs:gcc-7-double:build
621     - job: regressiontests:prepare
622
623 gromacs:gcc-7-double:release:test:
624   extends:
625     - .gromacs:base:test
626     - .use-gcc7
627     - .rules:nightly-only-for-release
628   stage: release-tests
629   variables:
630     BUILD_DIR: release-builds-gcc
631   needs:
632     - job: gromacs:gcc-7-double:release:configure
633       artifacts: true
634     - job: gromacs:gcc-7-double:release:build
635       artifacts: true
636     - job: regressiontests:package
637
638 gromacs:gcc-8:test:
639   extends:
640     - .gromacs:base:test
641     - .use-gcc8
642     - .rules:not-for-release
643   needs:
644     - job: gromacs:gcc-8:build
645     - job: regressiontests:prepare
646
647 gromacs:gcc-8:release:test:
648   extends:
649     - .gromacs:base:test
650     - .use-gcc8
651     - .rules:nightly-only-for-release
652   stage: release-tests
653   variables:
654     BUILD_DIR: release-builds-gcc
655   needs:
656     - job: gromacs:gcc-8:release:configure
657       artifacts: true
658     - job: gromacs:gcc-8:release:build
659       artifacts: true
660     - job: regressiontests:package
661
662 gromacs:gcc-8-cuda-10.2:test:
663   extends:
664     - .gromacs:base:test
665     - .use-cuda
666     - .use-gcc8:cuda-10.2
667     - .rules:not-for-release
668   variables:
669     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
670     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
671     REGRESSIONTEST_PME_RANK_NUMBER: 0
672     REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
673     REGRESSIONTEST_OMP_RANK_NUMBER: 1
674     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
675   # TODO: Enable GMX_PYTHON_PACKAGE when dependencies are in Docker image.
676   needs:
677     - job: gromacs:gcc-8-cuda-10.2:build
678     - job: regressiontests:prepare
679
680 gromacs:clang-6:test:
681   extends:
682     - .gromacs:base:test
683     - .use-clang6
684     - .rules:not-for-release
685   variables:
686     REGRESSIONTEST_OMP_RANK_NUMBER: 0
687   needs:
688     - job: gromacs:clang-6:build
689     - job: regressiontests:prepare
690
691 gromacs:clang-7:test:
692   extends:
693     - .gromacs:base:test
694     - .use-clang7
695     - .rules:not-for-release
696   needs:
697     - job: gromacs:clang-7:build
698     - job: regressiontests:prepare
699
700 gromacs:clang-7:release:test:
701   extends:
702     - .gromacs:base:test
703     - .use-clang7
704     - .rules:nightly-only-for-release
705   stage: release-tests
706   variables:
707     BUILD_DIR: release-builds-clang
708   needs:
709     - job: gromacs:clang-7:release:configure
710       artifacts: true
711     - job: gromacs:clang-7:release:build
712       artifacts: true
713     - job: regressiontests:package
714
715 gromacs:clang-8:test:
716   extends:
717     - .gromacs:base:test
718     - .use-clang8
719     - .rules:not-for-release
720   needs:
721     - job: gromacs:clang-8:build
722     - job: regressiontests:prepare
723
724 gromacs:clang-8:release:test:
725   extends:
726     - .gromacs:base:test
727     - .use-clang8
728     - .rules:nightly-only-for-release
729   stage: release-tests
730   variables:
731     BUILD_DIR: release-builds-clang
732   needs:
733     - job: gromacs:clang-8:release:configure
734       artifacts: true
735     - job: gromacs:clang-8:release:build
736       artifacts: true
737     - job: regressiontests:package