Move the PmePPCommGpu initialization from forcerec to runner
[alexxy/gromacs.git] / .gitlab-ci.yml
1 include:
2   - local: '/admin/ci-templates/.include-template.yml'
3
4 .configure-extends-template:
5   extends:
6     - .configure-build-template
7     - .no-cache-template
8     - .variables-template
9     - .tags-template
10
11 .configure-release-extends-template:
12   extends:
13     - .configure-build-release-template
14     - .no-cache-template
15     - .variables-template
16     - .tags-template
17
18 .build-extends-template:
19   extends:
20     - .binary-build-template
21     - .build-cache-template
22     - .variables-template
23     - .tags-template
24
25 .test-extends-template:
26   extends:
27     - .test-base-template
28     - .pull-cache-template
29     - .test-script-template
30     - .variables-template
31     - .tags-template
32
33 .regressiontests-extends-template:
34   extends:
35     - .no-cache-template
36     - .variables-template
37     - .tags-template
38
39 # CI is organized into stages so that if early stages fail
40 # the later ones are not run.
41 stages:
42   # Initial test build for checking simple compilation and getting regressiontest repo
43   - pre-build
44   # Configuration for building and testing
45   - configure-build
46   # Build GROMACS in multiple configurations
47   - build
48   # Test each configuration, perhaps in multiple ways
49   - test
50   # Generate documentation files
51   - documentation
52   # Check documentation from source code for errors
53   - source-check
54   # Linting, docs, static analysis, coverage, code analysis...
55   - post-test
56   # Nightly work to configure builds
57   - nightly-configure
58   # Nightly build stage
59   - nightly-build
60   # Nightly deploy stage
61   - nightly-deploy
62   # Release work for packaging code
63   - release-package
64   # Release checksum verification
65   - release-verify
66   # Configure code for release builds
67   - release-configure
68   # Release work for packaging code
69   - release-build
70   # Tests for release code
71   - release-tests
72   # Prepare for deploying artifacts
73   - release-prepare-deploy
74   # Deploy stage for release builds
75   - release-deploy
76
77 # Templates for configuration stage
78 .configure-gcc:
79   extends:
80     - .configure-extends-template
81     - .gcc-before-script-template
82     - .build-gcc-template
83
84 .configure-gcc-release:
85   extends:
86     - .configure-release-extends-template
87     - .gcc-before-script-template
88     - .build-gcc-template
89
90 .configure-clang:
91   extends:
92     - .configure-extends-template
93     - .clang-before-script-template
94     - .build-clang-template
95
96 .configure-clang-release:
97   extends:
98     - .configure-release-extends-template
99     - .clang-before-script-template
100     - .build-clang-template
101
102 .configure-docs:
103   extends:
104     - .configure-extends-template
105     - .configure-docs-template
106     - .documentation-before-script-template
107
108 .configure-docs-release:
109   extends:
110     - .configure-extends-template
111     - .configure-docs-release-template
112     - .documentation-before-script-template
113
114 # Templates for build stage
115 .build-archive:
116   extends:
117     - .build-extends-template
118     - .documentation-before-script-template
119     - .build-docs-binary-template
120     - .archive-build-template
121
122 .build-gcc:
123   extends:
124     - .build-extends-template
125     - .gcc-before-script-template
126     - .build-gcc-template
127
128 .build-clang:
129   extends:
130     - .build-extends-template
131     - .clang-before-script-template
132     - .build-clang-template
133
134 .build-docs-binary:
135   extends:
136     - .build-extends-template
137     - .build-cache-template
138     - .build-docs-binary-template
139     - .documentation-before-script-template
140
141 .build-docs-webpage:
142   extends:
143     - .binary-build-template
144     - .variables-template
145     - .tags-template
146     - .no-cache-template
147     - .build-docs-webpage-template
148     - .documentation-before-script-template
149
150 .build-cuda-gcc:
151   extends:
152     - .build-gcc
153     - .build-cuda-template
154
155 # Templates for test stage
156 .test-gcc:
157   extends:
158     - .test-extends-template
159     - .gcc-before-script-template
160     - .test-gcc-template
161
162 .test-clang:
163   extends:
164     - .test-extends-template
165     - .clang-before-script-template
166     - .test-clang-template
167
168 # Special job to package regressiontest files and have them available for testing
169 # Runs during pre-build
170 prepare-regressiontests:
171   extends:
172     - .regressiontests-extends-template
173     - .regressiontests-template
174
175 prepare-release-version:
176   extends:
177     - .regressiontests-extends-template
178     - .release-version-template
179
180 # Initial build that always needs to pass before follow-up stages run
181 simple-build:
182   extends:
183     - .simple-build-template
184     - .build-cache-template
185     - .variables-template
186     - .tags-template
187     - .gcc-before-script-template
188     - .build-gcc-template
189     - .gcc7-template
190   variables:
191     COMPILER_MAJOR_VERSION: 7
192     BUILD_DIR: simple-build
193   except:
194     variables:
195       - $GROMACS_RELEASE
196
197 # Jobs running in first pre-build stage
198 configure-gcc-7:
199   extends:
200     - .configure-gcc
201     - .gcc7-template
202   needs:
203     - job: simple-build
204       artifacts: false
205   variables:
206     COMPILER_MAJOR_VERSION: 7
207   except:
208     variables:
209       - $GROMACS_RELEASE
210
211 configure-gcc-7-gmxapi:
212   extends:
213     - .configure-gcc
214     - .configure-gmxapi-template
215     - .gcc7-template
216   needs:
217     - job: simple-build
218       artifacts: false
219   variables:
220     COMPILER_MAJOR_VERSION: 7
221   except:
222     variables:
223       - $GROMACS_RELEASE
224
225 configure-gcc-7-double:
226   extends:
227     - .configure-gcc
228     - .gcc7-template
229   needs:
230     - job: simple-build
231       artifacts: false
232   variables:
233     COMPILER_MAJOR_VERSION: 7
234     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
235   except:
236     variables:
237       - $GROMACS_RELEASE
238
239 configure-gcc-8:
240   extends:
241     - .configure-gcc
242     - .gcc8-template
243   needs:
244     - job: simple-build
245       artifacts: false
246   variables:
247     COMPILER_MAJOR_VERSION: 8
248   except:
249     variables:
250       - $GROMACS_RELEASE
251
252 configure-gcc-7-simd-sse41:
253   extends:
254     - .configure-gcc
255     - .gcc7-template
256   needs:
257     - job: simple-build
258       artifacts: false
259   variables:
260     COMPILER_MAJOR_VERSION: 7
261     CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
262   except:
263     variables:
264       - $GROMACS_RELEASE
265
266 configure-clang-7:
267   extends:
268     - .configure-clang
269     - .clang7-template
270   needs:
271     - job: simple-build
272       artifacts: false
273   variables:
274     COMPILER_MAJOR_VERSION: 7
275   except:
276     variables:
277       - $GROMACS_RELEASE
278
279 configure-clang-7-gmxapi:
280   extends:
281     - .configure-clang
282     - .configure-gmxapi-template
283     - .clang7-template
284   needs:
285     - job: simple-build
286       artifacts: false
287   variables:
288     COMPILER_MAJOR_VERSION: 7
289   except:
290     variables:
291       - $GROMACS_RELEASE
292
293 configure-clang-8:
294   extends:
295     - .configure-clang
296     - .clang8-template
297   needs:
298     - job: simple-build
299       artifacts: false
300   variables:
301     COMPILER_MAJOR_VERSION: 8
302   except:
303     variables:
304       - $GROMACS_RELEASE
305
306 # For version of clang before 7, we need to always provide the full version
307 # Use something like this instead in the download script:
308 # APT_COMPILER_VERSION=$(($COMPILER_MAJOR_VERSION < 7 ? "${COMPILER_MAJOR_VERSION}.0" : $COMPILER_MAJOR_VERSION))
309 configure-clang-6:
310   extends:
311     - .configure-clang
312     - .clang6-template
313   needs:
314     - job: simple-build
315       artifacts: false
316   variables:
317     COMPILER_MAJOR_VERSION: "6.0"
318     CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
319   except:
320     variables:
321       - $GROMACS_RELEASE
322
323 configure-clang-tidy:
324   extends:
325     - .configure-clang
326     - .clang7-template
327   needs:
328     - job: simple-build
329       artifacts: false
330   variables:
331     BUILD_DIR: build-clang-tidy
332     COMPILER_MAJOR_VERSION: 7
333     CMAKE_EXTRA_OPTIONS: -DCLANG_TIDY=clang-tidy-$COMPILER_MAJOR_VERSION -DGMX_CLANG_TIDY=ON -DGMX_COMPILER_WARNINGS=ON
334     EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
335   except:
336     variables:
337       - $GROMACS_RELEASE
338
339 configure-docs:
340   extends:
341     - .configure-docs
342   needs:
343     - job: simple-build
344       artifacts: false
345   variables:
346     BUILD_DIR: build-docs
347     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
348   except:
349     variables:
350       - $GROMACS_RELEASE
351
352 configure-docs-gmxapi:
353   extends:
354     - .configure-docs
355     - .configure-gmxapi-template
356   needs:
357     - job: simple-build
358       artifacts: false
359   variables:
360     BUILD_DIR: build-docs-gmxapi
361     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
362   except:
363     variables:
364       - $GROMACS_RELEASE
365
366 # Only running in scheduled pipelines that are not release builds
367 configure-archive-nightly:
368   stage: nightly-configure
369   only:
370     - triggers
371     - schedules
372   needs:
373     - job: simple-build
374       artifacts: false
375   except:
376     variables:
377       - $GROMACS_RELEASE
378   extends:
379     - .configure-docs
380   variables:
381     BUILD_DIR: build-package
382     CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
383     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
384     CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
385
386 configure-archive-release:
387   only:
388     refs:
389       - web
390       - triggers
391       - schedules
392     variables:
393       - $GROMACS_RELEASE
394
395   extends:
396     - .configure-docs
397   variables:
398     BUILD_DIR: build-package
399     CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
400     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
401     CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
402
403 # Jobs running during build stage
404 build-gcc-7:
405   extends:
406     - .build-gcc
407     - .gcc7-template
408   needs:
409     - job: simple-build
410       artifacts: false
411     - job: configure-gcc-7
412       artifacts: true
413   except:
414     variables:
415       - $GROMACS_RELEASE
416
417
418 build-gcc-7-gmxapi:
419   extends:
420     - .build-gcc
421     - .gmxapi-extra-installs
422     - .gcc7-template
423   needs:
424     - job: simple-build
425       artifacts: false
426     - job: configure-gcc-7-gmxapi
427       artifacts: true
428   except:
429     variables:
430       - $GROMACS_RELEASE
431
432 build-gcc-7-double:
433   extends:
434     - .build-gcc
435     - .gcc7-template
436   needs:
437     - job: simple-build
438       artifacts: false
439     - job: configure-gcc-7-double
440       artifacts: true
441   except:
442     variables:
443       - $GROMACS_RELEASE
444
445 build-gcc-8:
446   extends:
447     - .build-gcc
448     - .gcc8-template
449   needs:
450     - job: simple-build
451       artifacts: false
452     - job: configure-gcc-8
453       artifacts: true
454   except:
455     variables:
456       - $GROMACS_RELEASE
457
458 build-gcc-7-simd-sse41:
459   extends:
460     - .build-gcc
461     - .gcc7-template
462   needs:
463     - job: simple-build
464       artifacts: false
465     - job: configure-gcc-7-simd-sse41
466       artifacts: true
467   except:
468     variables:
469       - $GROMACS_RELEASE
470
471 build-clang-7:
472   extends:
473     - .build-clang
474     - .clang7-template
475   needs:
476     - job: simple-build
477       artifacts: false
478     - job: configure-clang-7
479       artifacts: true
480   except:
481     variables:
482       - $GROMACS_RELEASE
483
484 build-clang-7-gmxapi:
485   extends:
486     - .build-clang
487     - .gmxapi-extra-installs
488     - .clang7-template
489   needs:
490     - job: simple-build
491       artifacts: false
492     - job: configure-clang-7-gmxapi
493       artifacts: true
494   except:
495     variables:
496       - $GROMACS_RELEASE
497
498 build-clang-8:
499   extends:
500     - .build-clang
501     - .clang8-template
502   needs:
503     - job: simple-build
504       artifacts: false
505     - job: configure-clang-8
506       artifacts: true
507   except:
508     variables:
509       - $GROMACS_RELEASE
510
511 build-clang-6:
512   extends:
513     - .build-clang
514     - .clang6-template
515   needs:
516     - job: simple-build
517       artifacts: false
518     - job: configure-clang-6
519       artifacts: true
520   except:
521     variables:
522       - $GROMACS_RELEASE
523
524 # Jobs running during test stage
525 test-gcc-7:
526   extends:
527     - .test-gcc
528     - .gcc7-template
529   needs:
530     - job: simple-build
531       artifacts: false
532     - job: build-gcc-7
533   except:
534     variables:
535       - $GROMACS_RELEASE
536
537 test-gcc-7-gmxapi:
538   extends:
539     - .test-gcc
540     - .gmxapi-extra-installs
541     - .gcc7-template
542   needs:
543     - job: simple-build
544       artifacts: false
545     - job: build-gcc-7-gmxapi
546   except:
547     variables:
548       - $GROMACS_RELEASE
549
550 test-gcc-7-double:
551   extends:
552     - .test-gcc
553     - .gcc7-template
554   needs:
555     - job: simple-build
556       artifacts: false
557     - job: build-gcc-7-double
558   except:
559     variables:
560       - $GROMACS_RELEASE
561
562 test-gcc-8:
563   extends:
564     - .test-gcc
565     - .gcc8-template
566   needs:
567     - job: simple-build
568       artifacts: false
569     - job: build-gcc-8
570   except:
571     variables:
572       - $GROMACS_RELEASE
573
574 test-gcc-7-simd-sse41:
575   extends:
576     - .test-gcc
577     - .gcc7-template
578   needs:
579     - job: simple-build
580       artifacts: false
581     - job: build-gcc-7-simd-sse41
582   except:
583     variables:
584       - $GROMACS_RELEASE
585
586 test-clang-7:
587   extends:
588     - .test-clang
589     - .clang7-template
590   needs:
591     - job: simple-build
592       artifacts: false
593     - job: build-clang-7
594   except:
595     variables:
596       - $GROMACS_RELEASE
597
598 test-clang-7-gmxapi:
599   extends:
600     - .test-clang
601     - .gmxapi-extra-installs
602     - .clang7-template
603   needs:
604     - job: simple-build
605       artifacts: false
606     - job: build-clang-7-gmxapi
607   except:
608     variables:
609       - $GROMACS_RELEASE
610
611 test-clang-8:
612   extends:
613     - .test-clang
614     - .clang8-template
615   needs:
616     - job: simple-build
617       artifacts: false
618     - job: build-clang-8
619   except:
620     variables:
621       - $GROMACS_RELEASE
622
623 test-clang-6:
624   extends:
625     - .test-clang
626     - .clang6-template
627   needs:
628     - job: simple-build
629       artifacts: false
630     - job: build-clang-6
631   except:
632     variables:
633       - $GROMACS_RELEASE
634
635 # Jobs running in source checking stage
636 build-clang-tidy:
637   extends:
638     - .build-clang
639     - .clang7-template
640   stage: source-check
641   needs:
642     - job: simple-build
643       artifacts: false
644     - job: configure-clang-tidy
645       artifacts: true
646   variables:
647     BUILD_DIR: build-clang-tidy
648     COMPILER_MAJOR_VERSION: 7
649     EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
650   except:
651     variables:
652       - $GROMACS_RELEASE
653
654 run-clang-format:
655   extends:
656     - .binary-build-template
657     - .no-cache-template
658     - .variables-template
659     - .tags-template
660     - .clang-before-script-template
661     - .build-clang-template
662     - .clang7-template
663   stage: source-check
664   when: always
665   needs:
666     - job: simple-build
667       artifacts: false
668   variables:
669     KUBERNETES_CPU_LIMIT: 1
670     KUBERNETES_CPU_REQUEST: 1
671     KUBERNETES_MEMORY_LIMIT: 2Gi
672     COMPILER_MAJOR_VERSION: 7
673     EXTRA_INSTALLS: clang-format-$COMPILER_MAJOR_VERSION
674   except:
675     variables:
676       - $GROMACS_RELEASE
677   script:
678     - export CLANG_FORMAT=clang-format-$COMPILER_MAJOR_VERSION
679     - admin/clang-format.sh check --rev=HEAD^ --warnings=clang-format.log
680     - grep -iq "needs formatting" clang-format.log | tee formatting.txt || true
681     - if [ -s formatting.txt ] ; then echo "clang-format.sh found issues"; exit 1; fi
682   artifacts:
683     when: on_failure
684     paths:
685       - clang-format.log
686       - formatting.txt
687
688 run-copyright-check:
689   extends:
690     - .binary-build-template
691     - .no-cache-template
692     - .variables-template
693     - .tags-template
694     - .clang-before-script-template
695     - .build-clang-template
696     - .clang7-template
697   stage: source-check
698   when: always
699   needs:
700     - job: simple-build
701       artifacts: false
702   variables:
703     KUBERNETES_CPU_LIMIT: 1
704     KUBERNETES_CPU_REQUEST: 1
705     KUBERNETES_MEMORY_LIMIT: 2Gi
706   except:
707     variables:
708       - $GROMACS_RELEASE
709   script:
710     - admin/copyright.sh check --rev=HEAD^ --warnings=copyright.log
711     - grep -iq "copyright year" copyright.log | tee years.log || true
712     - grep -iq "copyright header" copyright.log | tee headers.log || true
713     - if [[ -s years.log || -s headers.log ]] ; then
714       echo "Copyright information needs updating" ;
715       exit 1 ;
716       fi
717   artifacts:
718     when: on_failure
719     paths:
720       - copyright.log
721       - years.log
722       - headers.log
723
724 run-check-source:
725   extends:
726     - .no-cache-template
727     - .variables-template
728     - .tags-template
729     - .build-docs-binary-template
730     - .documentation-before-script-template
731   stage: source-check
732   needs:
733     - job: simple-build
734       artifacts: false
735     - job: build-docs
736       artifacts: true
737   variables:
738     KUBERNETES_CPU_LIMIT: 1
739     KUBERNETES_CPU_REQUEST: 1
740     KUBERNETES_MEMORY_LIMIT: 2Gi
741     BUILD_DIR: build-docs
742     COMPILER_MAJOR_VERSION: 7
743   except:
744     variables:
745       - $GROMACS_RELEASE
746   script:
747     - cd $BUILD_DIR
748     - cmake --build . --target check-source
749     - grep -qi "error" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee doxygenError.txt || true
750     - grep -qi "warning" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee -a doxygenError.txt || true
751     - if [ -s doxygenError.txt ] ; then echo "Found errors while running doxygen"; exit 1; fi
752   artifacts:
753     name: docs-artifacts-$CI_COMMIT_REF_SLUG
754     when: always
755     expire_in: 1 week
756     paths:
757       - $BUILD_DIR/docs/doxygen/doxygen-xml.log
758       - $BUILD_DIR/docs/doxygen/check-source.log
759
760 # Jobs running during documentation build stage
761 build-docs:
762   extends:
763     - .build-docs-binary
764   stage: documentation
765   needs:
766     - job: simple-build
767       artifacts: false
768     - job: configure-docs
769       artifacts: true
770   variables:
771     BUILD_DIR: build-docs
772   except:
773     variables:
774       - $GROMACS_RELEASE
775
776 build-docs-gmxapi:
777   extends:
778     - .build-docs-binary
779     - .gmxapi-extra-installs
780   stage: documentation
781   needs:
782     - job: simple-build
783       artifacts: false
784     - job: configure-docs-gmxapi
785       artifacts: true
786   variables:
787     BUILD_DIR: build-docs-gmxapi
788   except:
789     variables:
790       - $GROMACS_RELEASE
791
792 # Jobs running in post-test stage
793
794 # The manual build is built separately so that errors in converting
795 # Sphinx to LaTeX and compiling can always be found in the
796 # all-output.txt file, while avoiding many thousands of lines of spam
797 # from pdflatex for normal builds. This does reduce the available
798 # parallel utilization, and so increases the build time.
799 #
800 # TODO why are the doxygen and sphinx log files disappearing
801 # TODO use a feature from gitlab runner instead of using pipefail to get timings for the job
802 webpage:
803   extends:
804     - .build-docs-webpage
805   stage: post-test
806   needs:
807     - job: build-docs
808       artifacts: true
809     - job: run-check-source
810       artifacts: false
811   variables:
812     BUILD_DIR: build-docs
813   except:
814     variables:
815       - $GROMACS_RELEASE
816
817 webpage-gmxapi:
818   extends:
819     - .build-docs-webpage
820     - .gmxapi-extra-installs
821   stage: post-test
822   needs:
823     - job: build-docs-gmxapi
824       artifacts: true
825     - job: run-check-source
826       artifacts: false
827   variables:
828     BUILD_DIR: build-docs-gmxapi
829   except:
830     variables:
831       - $GROMACS_RELEASE
832
833
834 # Jobs running in release stage
835 linkchecker:
836   extends:
837     - .build-docs-webpage
838   stage: nightly-build
839   dependencies:
840     - webpage-gmxapi
841   only:
842     - schedules
843     - triggers
844     - merge_requests
845     - external_pull_requests
846   except:
847     variables:
848       - $GROMACS_RELEASE
849   variables:
850     KUBERNETES_CPU_LIMIT: 1
851     KUBERNETES_CPU_REQUEST: 1
852     KUBERNETES_MEMORY_LIMIT: 2Gi
853     BUILD_DIR: build-docs-gmxapi
854   script:
855     - cd $BUILD_DIR
856     - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full
857       --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources
858       -o xml
859   artifacts:
860     reports:
861       junit: $BUILD_DIR/linkchecker-out.xml
862
863 build-archive-nightly:
864   extends:
865     - .build-archive
866   stage: nightly-build
867   needs:
868     - job: simple-build
869       artifacts: false
870     - job: configure-archive-nightly
871       artifacts: true
872   only:
873     - triggers
874     - schedules
875   except:
876     variables:
877       - $GROMACS_RELEASE
878   variables:
879     BUILD_DIR: build-package
880
881 webpage-nightly:
882   extends:
883     - .build-docs-webpage
884     - .configure-gmxapi-template
885   stage: nightly-deploy
886   only:
887     - triggers
888     - schedules
889   except:
890     variables:
891       - $GROMACS_RELEASE
892   needs:
893     - job: simple-build
894       artifacts: false
895     - job: linkchecker
896       artifacts: false
897     - job: webpage-gmxapi
898       artifacts: true
899   variables:
900     BUILD_DIR: build-docs-gmxapi
901   script:
902     - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
903   artifacts:
904     when: always
905     paths:
906       - webpage.tar.gz
907
908 package-regressiontests-release:
909   extends:
910     - .regressiontests-extends-template
911     - .regressiontests-release-template
912   needs:
913     - job: prepare-release-version
914       artifacts: true
915   only:
916     refs:
917       - triggers
918       - web
919       - schedules
920     variables:
921       - $GROMACS_RELEASE
922
923
924 package-archive-release:
925   extends:
926     - .build-archive
927   stage: release-package
928   needs:
929     - job: configure-archive-release
930       artifacts: true
931   only:
932     refs:
933       - triggers
934       - web
935       - schedules
936     variables:
937       - $GROMACS_RELEASE
938   variables:
939     BUILD_DIR: build-package
940
941 release-verify:
942   extends:
943     - .regressiontests-extends-template
944     - .release-verify-template
945   only:
946     refs:
947       - triggers
948       - web
949       - schedules
950     variables:
951       - $GROMACS_RELEASE
952   dependencies:
953     - package-archive-release
954     - package-regressiontests-release
955     - prepare-release-version
956
957 webpage-configure-release:
958   extends:
959     - .configure-docs-release
960     - .configure-gmxapi-template
961     - .no-cache-template
962   only:
963     refs:
964       - web
965       - schedules
966       - triggers
967     variables:
968       - $GROMACS_RELEASE
969   dependencies:
970     - package-archive-release
971     - package-regressiontests-release
972     - prepare-release-version
973   variables:
974     CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
975
976 configure-gcc-7-release:
977   extends:
978     - .configure-gcc-release
979     - .no-cache-template
980     - .gcc7-template
981   variables:
982     COMPILER_MAJOR_VERSION: 7
983     RELEASE_BUILD_DIR: release-builds-gcc
984   only:
985     refs:
986       - web
987       - schedules
988       - triggers
989     variables:
990       - $GROMACS_RELEASE
991   dependencies:
992     - package-archive-release
993     - package-regressiontests-release
994     - prepare-release-version
995
996 configure-gcc-7-gmxapi-release:
997   extends:
998     - .configure-gcc-release
999     - .configure-gmxapi-template
1000     - .no-cache-template
1001     - .gcc7-template
1002   variables:
1003     COMPILER_MAJOR_VERSION: 7
1004     RELEASE_BUILD_DIR: release-builds-gcc
1005   only:
1006     refs:
1007       - web
1008       - schedules
1009       - triggers
1010     variables:
1011       - $GROMACS_RELEASE
1012   dependencies:
1013     - package-archive-release
1014     - package-regressiontests-release
1015     - prepare-release-version
1016
1017 configure-gcc-7-double-release:
1018   extends:
1019     - .configure-gcc-release
1020     - .no-cache-template
1021     - .gcc7-template
1022   variables:
1023     COMPILER_MAJOR_VERSION: 7
1024     CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
1025     RELEASE_BUILD_DIR: release-builds-gcc
1026   only:
1027     refs:
1028       - web
1029       - schedules
1030       - triggers
1031     variables:
1032       - $GROMACS_RELEASE
1033   dependencies:
1034     - package-archive-release
1035     - package-regressiontests-release
1036     - prepare-release-version
1037
1038 configure-gcc-8-release:
1039   extends:
1040     - .configure-gcc-release
1041     - .no-cache-template
1042     - .gcc8-template
1043   variables:
1044     COMPILER_MAJOR_VERSION: 8
1045     RELEASE_BUILD_DIR: release-builds-gcc
1046   only:
1047     refs:
1048       - web
1049       - schedules
1050       - triggers
1051     variables:
1052       - $GROMACS_RELEASE
1053   dependencies:
1054     - package-archive-release
1055     - package-regressiontests-release
1056     - prepare-release-version
1057
1058 configure-clang-7-release:
1059   extends:
1060     - .configure-clang-release
1061     - .no-cache-template
1062     - .clang7-template
1063   variables:
1064     COMPILER_MAJOR_VERSION: 7
1065     RELEASE_BUILD_DIR: release-builds-clang
1066   only:
1067     refs:
1068       - web
1069       - schedules
1070       - triggers
1071     variables:
1072       - $GROMACS_RELEASE
1073   dependencies:
1074     - package-archive-release
1075     - package-regressiontests-release
1076     - prepare-release-version
1077
1078 configure-clang-7-gmxapi-release:
1079   extends:
1080     - .configure-clang-release
1081     - .configure-gmxapi-template
1082     - .no-cache-template
1083     - .clang7-template
1084   variables:
1085     COMPILER_MAJOR_VERSION: 7
1086     RELEASE_BUILD_DIR: release-builds-clang
1087   only:
1088     refs:
1089       - web
1090       - schedules
1091       - triggers
1092     variables:
1093       - $GROMACS_RELEASE
1094   dependencies:
1095     - package-archive-release
1096     - package-regressiontests-release
1097     - prepare-release-version
1098
1099 configure-clang-8-release:
1100   extends:
1101     - .configure-clang-release
1102     - .no-cache-template
1103     - .clang8-template
1104   variables:
1105     COMPILER_MAJOR_VERSION: 8
1106     RELEASE_BUILD_DIR: release-builds-clang
1107   only:
1108     refs:
1109       - web
1110       - schedules
1111       - triggers
1112     variables:
1113       - $GROMACS_RELEASE
1114   dependencies:
1115     - package-archive-release
1116     - package-regressiontests-release
1117     - prepare-release-version
1118
1119 build-gcc-7-release:
1120   extends:
1121     - .build-gcc
1122     - .gcc7-template
1123   stage: release-build
1124   variables:
1125     BUILD_DIR: release-builds-gcc
1126   needs:
1127     - job: configure-gcc-7-release
1128       artifacts: true
1129   only:
1130     refs:
1131       - web
1132       - schedules
1133       - triggers
1134     variables:
1135       - $GROMACS_RELEASE
1136
1137 build-gcc-7-gmxapi-release:
1138   extends:
1139     - .build-gcc
1140     - .gmxapi-extra-installs
1141     - .gcc7-template
1142   stage: release-build
1143   variables:
1144     BUILD_DIR: release-builds-gcc
1145   needs:
1146     - job: configure-gcc-7-gmxapi-release
1147       artifacts: true
1148   only:
1149     refs:
1150       - web
1151       - schedules
1152       - triggers
1153     variables:
1154       - $GROMACS_RELEASE
1155
1156 build-gcc-7-double-release:
1157   extends:
1158     - .build-gcc
1159     - .gcc7-template
1160   stage: release-build
1161   variables:
1162     BUILD_DIR: release-builds-gcc
1163   needs:
1164     - job: configure-gcc-7-double-release
1165       artifacts: true
1166   only:
1167     refs:
1168       - web
1169       - schedules
1170       - triggers
1171     variables:
1172       - $GROMACS_RELEASE
1173
1174 build-gcc-8-release:
1175   extends:
1176     - .build-gcc
1177     - .gcc8-template
1178   stage: release-build
1179   variables:
1180     BUILD_DIR: release-builds-gcc
1181   needs:
1182     - job: configure-gcc-8-release
1183       artifacts: true
1184   only:
1185     refs:
1186       - web
1187       - schedules
1188       - triggers
1189     variables:
1190       - $GROMACS_RELEASE
1191
1192 build-clang-7-release:
1193   extends:
1194     - .build-clang
1195     - .clang7-template
1196   stage: release-build
1197   variables:
1198     BUILD_DIR: release-builds-clang
1199   needs:
1200     - job: configure-clang-7-release
1201       artifacts: true
1202   only:
1203     refs:
1204       - web
1205       - schedules
1206       - triggers
1207     variables:
1208       - $GROMACS_RELEASE
1209
1210 build-clang-7-gmxapi-release:
1211   extends:
1212     - .build-clang
1213     - .gmxapi-extra-installs
1214     - .clang7-template
1215   stage: release-build
1216   variables:
1217     BUILD_DIR: release-builds-clang
1218   needs:
1219     - job: configure-clang-7-gmxapi-release
1220       artifacts: true
1221   only:
1222     refs:
1223       - web
1224       - schedules
1225       - triggers
1226     variables:
1227       - $GROMACS_RELEASE
1228
1229 build-clang-8-release:
1230   extends:
1231     - .build-clang
1232     - .clang8-template
1233   stage: release-build
1234   variables:
1235     BUILD_DIR: release-builds-clang
1236   needs:
1237     - job: configure-clang-8-release
1238       artifacts: true
1239   only:
1240     refs:
1241       - web
1242       - schedules
1243       - triggers
1244     variables:
1245       - $GROMACS_RELEASE
1246
1247 webpage-binary-release:
1248   extends:
1249     - .build-docs-binary
1250     - .gmxapi-extra-installs
1251   stage: release-build
1252   needs:
1253     - job: webpage-configure-release
1254       artifacts: true
1255   variables:
1256     BUILD_DIR: release-doc-builds
1257   only:
1258     refs:
1259       - triggers
1260       - web
1261       - schedules
1262     variables:
1263       - $GROMACS_RELEASE
1264
1265 test-gcc-7-release:
1266   extends:
1267     - .test-gcc
1268     - .gcc7-template
1269   stage: release-tests
1270   variables:
1271     BUILD_DIR: release-builds-gcc
1272   needs:
1273     - job: configure-gcc-7-release
1274       artifacts: true
1275     - job: build-gcc-7-release
1276       artifacts: true
1277   only:
1278     refs:
1279       - triggers
1280       - web
1281       - schedules
1282     variables:
1283       - $GROMACS_RELEASE
1284
1285 test-gcc-7-gmxapi-release:
1286   extends:
1287     - .test-gcc
1288     - .gmxapi-extra-installs
1289     - .gcc7-template
1290   stage: release-tests
1291   variables:
1292     BUILD_DIR: release-builds-gcc
1293   needs:
1294     - job: configure-gcc-7-gmxapi-release
1295       artifacts: true
1296     - job: build-gcc-7-gmxapi-release
1297       artifacts: true
1298   only:
1299     refs:
1300       - triggers
1301       - web
1302       - schedules
1303     variables:
1304       - $GROMACS_RELEASE
1305
1306 test-gcc-7-double-release:
1307   extends:
1308     - .test-gcc
1309     - .gcc7-template
1310   stage: release-tests
1311   variables:
1312     BUILD_DIR: release-builds-gcc
1313   needs:
1314     - job: configure-gcc-7-double-release
1315       artifacts: true
1316     - job: build-gcc-7-double-release
1317       artifacts: true
1318   only:
1319     refs:
1320       - triggers
1321       - web
1322       - schedules
1323     variables:
1324       - $GROMACS_RELEASE
1325
1326 test-gcc-8-release:
1327   extends:
1328     - .test-gcc
1329     - .gcc8-template
1330   stage: release-tests
1331   variables:
1332     BUILD_DIR: release-builds-gcc
1333   needs:
1334     - job: configure-gcc-8-release
1335       artifacts: true
1336     - job: build-gcc-8-release
1337       artifacts: true
1338   only:
1339     refs:
1340       - triggers
1341       - web
1342       - schedules
1343     variables:
1344       - $GROMACS_RELEASE
1345
1346 test-clang-7-release:
1347   extends:
1348     - .test-clang
1349     - .clang7-template
1350   stage: release-tests
1351   variables:
1352     BUILD_DIR: release-builds-clang
1353   needs:
1354     - job: configure-clang-7-release
1355       artifacts: true
1356     - job: build-clang-7-release
1357       artifacts: true
1358   only:
1359     refs:
1360       - triggers
1361       - web
1362       - schedules
1363     variables:
1364       - $GROMACS_RELEASE
1365
1366 test-clang-7-gmxapi-release:
1367   extends:
1368     - .test-clang
1369     - .gmxapi-extra-installs
1370     - .clang7-template
1371   stage: release-tests
1372   variables:
1373     BUILD_DIR: release-builds-clang
1374   needs:
1375     - job: configure-clang-7-gmxapi-release
1376       artifacts: true
1377     - job: build-clang-7-gmxapi-release
1378       artifacts: true
1379   only:
1380     refs:
1381       - triggers
1382       - web
1383       - schedules
1384     variables:
1385       - $GROMACS_RELEASE
1386
1387 test-clang-8-release:
1388   extends:
1389     - .test-clang
1390     - .clang8-template
1391   stage: release-tests
1392   variables:
1393     BUILD_DIR: release-builds-clang
1394   needs:
1395     - job: configure-clang-8-release
1396       artifacts: true
1397     - job: build-clang-8-release
1398       artifacts: true
1399   only:
1400     refs:
1401       - triggers
1402       - web
1403       - schedules
1404     variables:
1405       - $GROMACS_RELEASE
1406
1407 webpage-build-release:
1408   extends:
1409     - .build-docs-webpage
1410     - .configure-gmxapi-template
1411   dependencies:
1412     - webpage-binary-release
1413     - webpage-configure-release
1414   stage: release-prepare-deploy
1415   only:
1416     refs:
1417       - web
1418       - schedules
1419       - triggers
1420     variables:
1421       - $GROMACS_RELEASE
1422   variables:
1423     BUILD_DIR: release-doc-builds
1424
1425 webpage-archive-release:
1426   extends:
1427     - .build-docs-webpage
1428     - .configure-gmxapi-template
1429   stage: release-deploy
1430   only:
1431     refs:
1432       - web
1433       - triggers
1434       - schedules
1435     variables:
1436       - $GROMACS_RELEASE
1437   dependencies:
1438     - webpage-build-release
1439     - package-archive-release
1440     - package-regressiontests-release
1441   variables:
1442     BUILD_DIR: release-doc-builds
1443   script:
1444     - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1445   artifacts:
1446     when: always
1447     paths:
1448       - webpage.tar.gz
1449       - gromacs-*tar.gz
1450       - regressiontests-*tar.gz
1451