[ci skip] Remove indirection for default tags parameter.
[alexxy/gromacs.git] / admin / gitlab-ci / testing-matrix.gitlab-ci.yml
1
2 .configure-extends-template:
3   extends:
4     - .configure-build-template
5     - .no-cache-template
6     - .variables-template
7
8 .configure-release-extends-template:
9   extends:
10     - .configure-build-release-template
11     - .no-cache-template
12     - .variables-template
13
14 .build-extends-template:
15   extends:
16     - .binary-build-template
17     - .build-cache-template
18     - .variables-template
19
20 .test-extends-template:
21   extends:
22     - .test-base-template
23     - .pull-cache-template
24     - .test-script-template
25     - .variables-template
26
27 .regressiontests-extends-template:
28   extends:
29     - .no-cache-template
30     - .variables-template
31
32
33 # Templates for configuration stage
34 .configure-gcc:
35   extends:
36     - .configure-extends-template
37     - .gcc-before-script-template
38     - .build-gcc-template
39
40 .configure-gcc-release:
41   extends:
42     - .configure-release-extends-template
43     - .gcc-before-script-template
44     - .build-gcc-template
45
46 .configure-gcc-cuda:
47   extends:
48     - .configure-gcc
49     - .cuda-template
50
51 .configure-clang:
52   extends:
53     - .configure-extends-template
54     - .clang-before-script-template
55     - .build-clang-template
56
57 .configure-clang-release:
58   extends:
59     - .configure-release-extends-template
60     - .clang-before-script-template
61     - .build-clang-template
62
63 # Templates for build stage
64 .build-archive:
65   extends:
66     - .build-extends-template
67     - .documentation-before-script-template
68     - .build-docs-binary-template
69     - .archive-build-template
70
71 .build-gcc:
72   extends:
73     - .build-extends-template
74     - .gcc-before-script-template
75     - .build-gcc-template
76
77 .build-clang:
78   extends:
79     - .build-extends-template
80     - .clang-before-script-template
81     - .build-clang-template
82
83 .build-gcc-cuda:
84   extends:
85     - .build-gcc
86     - .cuda-template
87
88 # Templates for test stage
89 .test-gcc:
90   extends:
91     - .test-extends-template
92     - .gcc-before-script-template
93     - .test-gcc-template
94
95 .test-gcc-cuda:
96   extends:
97     - .test-gcc
98     - .cuda-template
99
100 .test-clang:
101   extends:
102     - .test-extends-template
103     - .clang-before-script-template
104     - .test-clang-template
105
106 # Special job to package regressiontest files and have them available for testing
107 # Runs during pre-build
108 prepare-regressiontests:
109   extends:
110     - .regressiontests-extends-template
111     - .regressiontests-template
112
113 prepare-release-version:
114   extends:
115     - .regressiontests-extends-template
116     - .release-version-template
117
118 # Initial build that always needs to pass before follow-up stages run
119 simple-build:
120   extends:
121     - .simple-build-template
122     - .build-cache-template
123     - .variables-template
124     - .gcc-before-script-template
125     - .build-gcc-template
126     - .gcc7-template
127   variables:
128     COMPILER_MAJOR_VERSION: 7
129     BUILD_DIR: simple-build
130   except:
131     variables:
132       - $GROMACS_RELEASE
133
134 # Jobs running in first pre-build stage
135 configure-gcc-7:
136   extends:
137     - .configure-gcc
138     - .gcc7-template
139   needs:
140     - job: simple-build
141       artifacts: false
142   variables:
143     COMPILER_MAJOR_VERSION: 7
144   except:
145     variables:
146       - $GROMACS_RELEASE
147
148 configure-gcc-7-gmxapi:
149   extends:
150     - .configure-gcc
151     - .configure-gmxapi-template
152     - .gcc7-template
153   needs:
154     - job: simple-build
155       artifacts: false
156   variables:
157     COMPILER_MAJOR_VERSION: 7
158   except:
159     variables:
160       - $GROMACS_RELEASE
161
162 configure-gcc-7-double:
163   extends:
164     - .configure-gcc
165     - .gcc7-template
166   needs:
167     - job: simple-build
168       artifacts: false
169   variables:
170     COMPILER_MAJOR_VERSION: 7
171     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
172   except:
173     variables:
174       - $GROMACS_RELEASE
175
176 configure-gcc-8:
177   extends:
178     - .configure-gcc
179     - .gcc8-template
180   needs:
181     - job: simple-build
182       artifacts: false
183   variables:
184     COMPILER_MAJOR_VERSION: 8
185   except:
186     variables:
187       - $GROMACS_RELEASE
188
189 configure-gcc-8-cuda-10.2:
190   extends:
191     - .configure-gcc-cuda
192     - .gcc-8-cuda-10.2-template
193   needs:
194     - job: simple-build
195       artifacts: false
196   except:
197     variables:
198       - $GROMACS_RELEASE
199
200 configure-gcc-7-simd-sse41:
201   extends:
202     - .configure-gcc
203     - .gcc7-template
204   needs:
205     - job: simple-build
206       artifacts: false
207   variables:
208     COMPILER_MAJOR_VERSION: 7
209     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
210   except:
211     variables:
212       - $GROMACS_RELEASE
213
214 configure-clang-7:
215   extends:
216     - .configure-clang
217     - .clang7-template
218   needs:
219     - job: simple-build
220       artifacts: false
221   variables:
222     COMPILER_MAJOR_VERSION: 7
223   except:
224     variables:
225       - $GROMACS_RELEASE
226
227 configure-clang-7-gmxapi:
228   extends:
229     - .configure-clang
230     - .configure-gmxapi-template
231     - .clang7-template
232   needs:
233     - job: simple-build
234       artifacts: false
235   variables:
236     COMPILER_MAJOR_VERSION: 7
237   except:
238     variables:
239       - $GROMACS_RELEASE
240
241 configure-clang-8:
242   extends:
243     - .configure-clang
244     - .clang8-template
245   needs:
246     - job: simple-build
247       artifacts: false
248   variables:
249     COMPILER_MAJOR_VERSION: 8
250   except:
251     variables:
252       - $GROMACS_RELEASE
253
254 # For version of clang before 7, we need to always provide the full version
255 # Use something like this instead in the download script:
256 # APT_COMPILER_VERSION=$(($COMPILER_MAJOR_VERSION < 7 ? "${COMPILER_MAJOR_VERSION}.0" : $COMPILER_MAJOR_VERSION))
257 configure-clang-6:
258   extends:
259     - .configure-clang
260     - .clang6-template
261   needs:
262     - job: simple-build
263       artifacts: false
264   variables:
265     COMPILER_MAJOR_VERSION: "6.0"
266     CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
267   except:
268     variables:
269       - $GROMACS_RELEASE
270
271 configure-clang-tidy:
272   extends:
273     - .configure-clang
274     - .clang7-template
275   needs:
276     - job: simple-build
277       artifacts: false
278   variables:
279     BUILD_DIR: build-clang-tidy
280     COMPILER_MAJOR_VERSION: 7
281     CMAKE_EXTRA_OPTIONS: -DCLANG_TIDY=clang-tidy-$COMPILER_MAJOR_VERSION -DGMX_CLANG_TIDY=ON -DGMX_COMPILER_WARNINGS=ON
282     EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
283   except:
284     variables:
285       - $GROMACS_RELEASE
286
287 # Only running in scheduled pipelines that are not release builds
288 configure-archive-nightly:
289   stage: nightly-configure
290   only:
291     - triggers
292     - schedules
293   needs:
294     - job: simple-build
295       artifacts: false
296   except:
297     variables:
298       - $GROMACS_RELEASE
299   extends:
300     - .configure-docs
301   variables:
302     BUILD_DIR: build-package
303     CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
304     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
305     CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
306
307 configure-archive-release:
308   only:
309     refs:
310       - web
311       - triggers
312       - schedules
313     variables:
314       - $GROMACS_RELEASE
315
316   extends:
317     - .configure-docs
318   variables:
319     BUILD_DIR: build-package
320     CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
321     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
322     CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
323
324 # Jobs running during build stage
325 build-gcc-7:
326   extends:
327     - .build-gcc
328     - .gcc7-template
329   needs:
330     - job: simple-build
331       artifacts: false
332     - job: configure-gcc-7
333       artifacts: true
334   except:
335     variables:
336       - $GROMACS_RELEASE
337
338
339 build-gcc-7-gmxapi:
340   extends:
341     - .build-gcc
342     - .gmxapi-extra-installs
343     - .gcc7-template
344   needs:
345     - job: simple-build
346       artifacts: false
347     - job: configure-gcc-7-gmxapi
348       artifacts: true
349   except:
350     variables:
351       - $GROMACS_RELEASE
352
353 build-gcc-7-double:
354   extends:
355     - .build-gcc
356     - .gcc7-template
357   needs:
358     - job: simple-build
359       artifacts: false
360     - job: configure-gcc-7-double
361       artifacts: true
362   except:
363     variables:
364       - $GROMACS_RELEASE
365
366 build-gcc-8:
367   extends:
368     - .build-gcc
369     - .gcc8-template
370   needs:
371     - job: simple-build
372       artifacts: false
373     - job: configure-gcc-8
374       artifacts: true
375   except:
376     variables:
377       - $GROMACS_RELEASE
378
379 build-gcc-8-cuda-10.2:
380   extends:
381     - .build-gcc-cuda
382     - .gcc-8-cuda-10.2-template
383   needs:
384     - job: simple-build
385       artifacts: false
386     - job: configure-gcc-8-cuda-10.2
387       artifacts: true
388   except:
389     variables:
390       - $GROMACS_RELEASE
391
392 build-gcc-7-simd-sse41:
393   extends:
394     - .build-gcc
395     - .gcc7-template
396   needs:
397     - job: simple-build
398       artifacts: false
399     - job: configure-gcc-7-simd-sse41
400       artifacts: true
401   except:
402     variables:
403       - $GROMACS_RELEASE
404
405 build-clang-7:
406   extends:
407     - .build-clang
408     - .clang7-template
409   needs:
410     - job: simple-build
411       artifacts: false
412     - job: configure-clang-7
413       artifacts: true
414   except:
415     variables:
416       - $GROMACS_RELEASE
417
418 build-clang-7-gmxapi:
419   extends:
420     - .build-clang
421     - .gmxapi-extra-installs
422     - .clang7-template
423   needs:
424     - job: simple-build
425       artifacts: false
426     - job: configure-clang-7-gmxapi
427       artifacts: true
428   except:
429     variables:
430       - $GROMACS_RELEASE
431
432 build-clang-8:
433   extends:
434     - .build-clang
435     - .clang8-template
436   needs:
437     - job: simple-build
438       artifacts: false
439     - job: configure-clang-8
440       artifacts: true
441   except:
442     variables:
443       - $GROMACS_RELEASE
444
445 build-clang-6:
446   extends:
447     - .build-clang
448     - .clang6-template
449   needs:
450     - job: simple-build
451       artifacts: false
452     - job: configure-clang-6
453       artifacts: true
454   except:
455     variables:
456       - $GROMACS_RELEASE
457
458 # Jobs running during test stage
459 test-gcc-7:
460   extends:
461     - .test-gcc
462     - .gcc7-template
463   needs:
464     - job: simple-build
465       artifacts: false
466     - job: build-gcc-7
467   except:
468     variables:
469       - $GROMACS_RELEASE
470
471 test-gcc-7-gmxapi:
472   extends:
473     - .test-gcc
474     - .gmxapi-extra-installs
475     - .gcc7-template
476   needs:
477     - job: simple-build
478       artifacts: false
479     - job: build-gcc-7-gmxapi
480   except:
481     variables:
482       - $GROMACS_RELEASE
483
484 test-gcc-7-double:
485   extends:
486     - .test-gcc
487     - .gcc7-template
488   needs:
489     - job: simple-build
490       artifacts: false
491     - job: build-gcc-7-double
492   except:
493     variables:
494       - $GROMACS_RELEASE
495
496 test-gcc-8:
497   extends:
498     - .test-gcc
499     - .gcc8-template
500   needs:
501     - job: simple-build
502       artifacts: false
503     - job: build-gcc-8
504   except:
505     variables:
506       - $GROMACS_RELEASE
507
508 test-gcc-8-cuda-10.2:
509   variables:
510     KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
511     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
512   extends:
513     - .test-gcc-cuda
514     - .gcc-8-cuda-10.2-template
515   needs:
516     - job: simple-build
517       artifacts: false
518     - job: build-gcc-8-cuda-10.2
519   except:
520     variables:
521       - $GROMACS_RELEASE
522
523 test-gcc-7-simd-sse41:
524   extends:
525     - .test-gcc
526     - .gcc7-template
527   needs:
528     - job: simple-build
529       artifacts: false
530     - job: build-gcc-7-simd-sse41
531   except:
532     variables:
533       - $GROMACS_RELEASE
534
535 test-clang-7:
536   extends:
537     - .test-clang
538     - .clang7-template
539   needs:
540     - job: simple-build
541       artifacts: false
542     - job: build-clang-7
543   except:
544     variables:
545       - $GROMACS_RELEASE
546
547 test-clang-7-gmxapi:
548   extends:
549     - .test-clang
550     - .gmxapi-extra-installs
551     - .clang7-template
552   needs:
553     - job: simple-build
554       artifacts: false
555     - job: build-clang-7-gmxapi
556   except:
557     variables:
558       - $GROMACS_RELEASE
559
560 test-clang-8:
561   extends:
562     - .test-clang
563     - .clang8-template
564   needs:
565     - job: simple-build
566       artifacts: false
567     - job: build-clang-8
568   except:
569     variables:
570       - $GROMACS_RELEASE
571
572 test-clang-6:
573   extends:
574     - .test-clang
575     - .clang6-template
576   needs:
577     - job: simple-build
578       artifacts: false
579     - job: build-clang-6
580   except:
581     variables:
582       - $GROMACS_RELEASE