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