Remove BufferOpsUseGpu enum
[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       
698   stage: source-check
699   when: always
700   needs:
701     - job: simple-build
702       artifacts: false 
703   variables:
704       KUBERNETES_CPU_LIMIT: 1
705       KUBERNETES_CPU_REQUEST: 1
706       KUBERNETES_MEMORY_LIMIT: 2Gi
707   except:
708     variables:
709       - $GROMACS_RELEASE
710   script:
711     - admin/copyright.sh check --rev=HEAD^ --warnings=copyright.log
712     - grep -iq "copyright year" copyright.log | tee years.log || true
713     - grep -iq "copyright header" copyright.log | tee headers.log || true
714     - if [[ -s years.log || -s headers.log ]] ; then
715       echo "Copyright information needs updating" ;
716       exit 1 ;
717       fi
718   artifacts:
719     when: on_failure
720     paths:
721       - copyright.log
722       - years.log
723       - headers.log
724
725 run-check-source:
726   extends:
727     - .no-cache-template
728     - .variables-template
729     - .tags-template
730     - .build-docs-binary-template
731     - .documentation-before-script-template
732   stage: source-check
733   needs:
734     - job: simple-build
735       artifacts: false 
736     - job: build-docs
737       artifacts: true
738   variables:
739     KUBERNETES_CPU_LIMIT: 1
740     KUBERNETES_CPU_REQUEST: 1
741     KUBERNETES_MEMORY_LIMIT: 2Gi
742     BUILD_DIR: build-docs
743     COMPILER_MAJOR_VERSION: 7
744   except:
745     variables:
746       - $GROMACS_RELEASE
747
748   script:
749     - cd $BUILD_DIR
750     - cmake --build . --target check-source
751     - grep -qi "error" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee doxygenError.txt || true
752     - grep -qi "warning" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee -a doxygenError.txt || true
753     - if [ -s doxygenError.txt ] ; then echo "Found errors while running doxygen"; exit 1; fi
754   artifacts:
755     name: docs-artifacts-$CI_COMMIT_REF_SLUG
756     when: always
757     expire_in: 1 week
758     paths:
759       - $BUILD_DIR/docs/doxygen/doxygen-xml.log
760       - $BUILD_DIR/docs/doxygen/check-source.log
761
762 # Jobs running during documentation build stage
763 build-docs:
764   extends:
765     - .build-docs-binary
766   stage: documentation
767   needs:
768     - job: simple-build
769       artifacts: false 
770     - job: configure-docs
771       artifacts: true
772   variables:
773     BUILD_DIR: build-docs
774   except:
775     variables:
776       - $GROMACS_RELEASE
777
778 build-docs-gmxapi:
779     extends:
780       - .build-docs-binary
781       - .gmxapi-extra-installs
782     stage: documentation
783     needs:
784       - job: simple-build
785         artifacts: false 
786       - job: configure-docs-gmxapi
787         artifacts: true
788     variables:
789         BUILD_DIR: build-docs-gmxapi
790     except:
791       variables:
792         - $GROMACS_RELEASE
793
794 # Jobs running in post-test stage
795
796 # The manual build is built separately so that errors in converting
797 # Sphinx to LaTeX and compiling can always be found in the
798 # all-output.txt file, while avoiding many thousands of lines of spam
799 # from pdflatex for normal builds. This does reduce the available
800 # parallel utilization, and so increases the build time.
801 #
802 # TODO why are the doxygen and sphinx log files disappearing
803 # TODO use a feature from gitlab runner instead of using pipefail to get timings for the job
804 webpage:
805   extends:
806     - .build-docs-webpage
807   stage: post-test
808   needs:
809     - job: build-docs
810       artifacts: true
811     - job: run-check-source
812       artifacts: false
813   variables:
814     BUILD_DIR: build-docs
815   except:
816     variables:
817       - $GROMACS_RELEASE
818
819 webpage-gmxapi:
820   extends:
821     - .build-docs-webpage
822     - .gmxapi-extra-installs
823   stage: post-test
824   needs:
825     - job: build-docs-gmxapi
826       artifacts: true
827     - job: run-check-source
828       artifacts: false
829   variables:
830     BUILD_DIR: build-docs-gmxapi
831   except:
832     variables:
833       - $GROMACS_RELEASE
834
835
836 # Jobs running in release stage
837 linkchecker:
838   extends:
839     - .build-docs-webpage
840   stage: nightly-build
841   dependencies:
842     - webpage-gmxapi
843   only:
844     - schedules
845     - triggers
846     - merge_requests
847     - external_pull_requests
848   except:
849     variables:
850       - $GROMACS_RELEASE
851   variables:
852       KUBERNETES_CPU_LIMIT: 1
853       KUBERNETES_CPU_REQUEST: 1
854       KUBERNETES_MEMORY_LIMIT: 2Gi
855       BUILD_DIR: build-docs-gmxapi
856   script:
857       - cd $BUILD_DIR
858       - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full
859         --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources
860         -o xml 
861   artifacts:
862     reports:
863       junit: $BUILD_DIR/linkchecker-out.xml
864
865 build-archive-nightly:
866     extends:
867       - .build-archive
868     stage: nightly-build
869     needs:
870       - job: simple-build
871         artifacts: false 
872       - job: configure-archive-nightly
873         artifacts: true
874     only:
875       - triggers
876       - schedules
877     except:
878       variables:
879         - $GROMACS_RELEASE
880     variables:
881         BUILD_DIR: build-package
882
883 webpage-nightly:
884     extends:
885       - .build-docs-webpage
886       - .configure-gmxapi-template
887     stage: nightly-deploy
888     only:
889       - triggers
890       - schedules
891     except:
892       variables:
893         - $GROMACS_RELEASE
894     needs:
895       - job: simple-build
896         artifacts: false 
897       - job: linkchecker
898         artifacts: false
899       - job: webpage-gmxapi
900         artifacts: true
901     variables:
902         BUILD_DIR: build-docs-gmxapi
903     script:
904         - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
905     artifacts:
906       when: always
907       paths:
908         - webpage.tar.gz
909
910 package-regressiontests-release:
911     extends:
912       - .regressiontests-extends-template
913       - .regressiontests-release-template
914     needs:
915       - job: prepare-release-version
916         artifacts: true
917
918     only:
919       refs:
920         - triggers
921         - web
922         - schedules
923       variables:
924         - $GROMACS_RELEASE
925
926
927 package-archive-release:
928     extends:
929       - .build-archive
930     stage: release-package
931     needs:
932       - job: configure-archive-release
933         artifacts: true
934     only:
935       refs:
936         - triggers
937         - web
938         - schedules
939       variables:
940         - $GROMACS_RELEASE
941     variables:
942         BUILD_DIR: build-package
943
944 release-verify:
945     extends:
946       - .regressiontests-extends-template
947       - .release-verify-template
948
949     only:
950       refs:
951         - triggers
952         - web
953         - schedules
954       variables:
955         - $GROMACS_RELEASE
956     dependencies:
957       - package-archive-release
958       - package-regressiontests-release
959       - prepare-release-version
960
961 webpage-configure-release:
962     extends:
963       - .configure-docs-release
964       - .configure-gmxapi-template
965       - .no-cache-template
966     only:
967       refs:
968         - web
969         - schedules
970         - triggers
971       variables:
972         - $GROMACS_RELEASE
973     dependencies:
974       - package-archive-release
975       - package-regressiontests-release
976       - prepare-release-version
977     variables:
978       CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
979
980 configure-gcc-7-release:
981     extends:
982       - .configure-gcc-release
983       - .no-cache-template
984       - .gcc7-template
985     variables:
986         COMPILER_MAJOR_VERSION: 7
987         RELEASE_BUILD_DIR: release-builds-gcc
988     only:
989       refs:
990         - web
991         - schedules
992         - triggers
993       variables:
994         - $GROMACS_RELEASE
995     dependencies:
996       - package-archive-release
997       - package-regressiontests-release
998       - prepare-release-version
999
1000 configure-gcc-7-gmxapi-release:
1001     extends:
1002       - .configure-gcc-release
1003       - .configure-gmxapi-template
1004       - .no-cache-template
1005       - .gcc7-template
1006     variables:
1007         COMPILER_MAJOR_VERSION: 7
1008         RELEASE_BUILD_DIR: release-builds-gcc
1009     only:
1010       refs:
1011         - web
1012         - schedules
1013         - triggers
1014       variables:
1015         - $GROMACS_RELEASE
1016     dependencies:
1017       - package-archive-release
1018       - package-regressiontests-release
1019       - prepare-release-version
1020
1021 configure-gcc-7-double-release:
1022     extends:
1023       - .configure-gcc-release
1024       - .no-cache-template
1025       - .gcc7-template
1026     variables:
1027         COMPILER_MAJOR_VERSION: 7
1028         CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
1029         RELEASE_BUILD_DIR: release-builds-gcc
1030     only:
1031       refs:
1032         - web
1033         - schedules
1034         - triggers
1035       variables:
1036         - $GROMACS_RELEASE
1037     dependencies:
1038       - package-archive-release
1039       - package-regressiontests-release
1040       - prepare-release-version
1041
1042 configure-gcc-8-release:
1043     extends:
1044       - .configure-gcc-release
1045       - .no-cache-template
1046       - .gcc8-template
1047     variables:
1048         COMPILER_MAJOR_VERSION: 8
1049         RELEASE_BUILD_DIR: release-builds-gcc
1050     only:
1051       refs:
1052         - web
1053         - schedules
1054         - triggers
1055       variables:
1056         - $GROMACS_RELEASE
1057     dependencies:
1058       - package-archive-release
1059       - package-regressiontests-release
1060       - prepare-release-version
1061
1062 configure-clang-7-release:
1063     extends:
1064       - .configure-clang-release
1065       - .no-cache-template
1066       - .clang7-template
1067     variables:
1068         COMPILER_MAJOR_VERSION: 7
1069         RELEASE_BUILD_DIR: release-builds-clang
1070     only:
1071       refs:
1072         - web
1073         - schedules
1074         - triggers
1075       variables:
1076         - $GROMACS_RELEASE
1077     dependencies:
1078       - package-archive-release
1079       - package-regressiontests-release
1080       - prepare-release-version
1081
1082 configure-clang-7-gmxapi-release:
1083     extends:
1084       - .configure-clang-release
1085       - .configure-gmxapi-template
1086       - .no-cache-template
1087       - .clang7-template
1088     variables:
1089         COMPILER_MAJOR_VERSION: 7
1090         RELEASE_BUILD_DIR: release-builds-clang
1091     only:
1092       refs:
1093         - web
1094         - schedules
1095         - triggers
1096       variables:
1097         - $GROMACS_RELEASE
1098     dependencies:
1099       - package-archive-release
1100       - package-regressiontests-release
1101       - prepare-release-version
1102
1103 configure-clang-8-release:
1104     extends:
1105       - .configure-clang-release
1106       - .no-cache-template
1107       - .clang8-template
1108     variables:
1109         COMPILER_MAJOR_VERSION: 8
1110         RELEASE_BUILD_DIR: release-builds-clang
1111     only:
1112       refs:
1113         - web
1114         - schedules
1115         - triggers
1116       variables:
1117         - $GROMACS_RELEASE
1118     dependencies:
1119       - package-archive-release
1120       - package-regressiontests-release
1121       - prepare-release-version
1122
1123 build-gcc-7-release:
1124     extends:
1125       - .build-gcc
1126       - .gcc7-template
1127     stage: release-build
1128     variables:
1129         BUILD_DIR: release-builds-gcc
1130     needs:
1131       - job: configure-gcc-7-release
1132         artifacts: true
1133     only:
1134       refs:
1135         - web
1136         - schedules
1137         - triggers
1138       variables:
1139         - $GROMACS_RELEASE
1140
1141 build-gcc-7-gmxapi-release:
1142     extends:
1143       - .build-gcc
1144       - .gmxapi-extra-installs
1145       - .gcc7-template
1146     stage: release-build
1147     variables:
1148         BUILD_DIR: release-builds-gcc
1149     needs:
1150       - job: configure-gcc-7-gmxapi-release
1151         artifacts: true
1152     only:
1153       refs:
1154         - web
1155         - schedules
1156         - triggers
1157       variables:
1158         - $GROMACS_RELEASE
1159
1160 build-gcc-7-double-release:
1161     extends:
1162       - .build-gcc
1163       - .gcc7-template
1164     stage: release-build
1165     variables:
1166         BUILD_DIR: release-builds-gcc
1167     needs:
1168       - job: configure-gcc-7-double-release
1169         artifacts: true
1170     only:
1171       refs:
1172         - web
1173         - schedules
1174         - triggers
1175       variables:
1176         - $GROMACS_RELEASE
1177
1178 build-gcc-8-release:
1179     extends:
1180       - .build-gcc
1181       - .gcc8-template
1182     stage: release-build
1183     variables:
1184         BUILD_DIR: release-builds-gcc
1185     needs:
1186       - job: configure-gcc-8-release
1187         artifacts: true
1188     only:
1189       refs:
1190         - web
1191         - schedules
1192         - triggers
1193       variables:
1194         - $GROMACS_RELEASE
1195
1196 build-clang-7-release:
1197     extends:
1198       - .build-clang
1199       - .clang7-template
1200     stage: release-build
1201     variables:
1202         BUILD_DIR: release-builds-clang
1203     needs:
1204       - job: configure-clang-7-release
1205         artifacts: true
1206     only:
1207       refs:
1208         - web
1209         - schedules
1210         - triggers
1211       variables:
1212         - $GROMACS_RELEASE
1213
1214 build-clang-7-gmxapi-release:
1215     extends:
1216       - .build-clang
1217       - .gmxapi-extra-installs
1218       - .clang7-template
1219     stage: release-build
1220     variables:
1221         BUILD_DIR: release-builds-clang
1222     needs:
1223       - job: configure-clang-7-gmxapi-release
1224         artifacts: true
1225     only:
1226       refs:
1227         - web
1228         - schedules
1229         - triggers
1230       variables:
1231         - $GROMACS_RELEASE
1232
1233 build-clang-8-release:
1234     extends:
1235       - .build-clang
1236       - .clang8-template
1237     stage: release-build
1238     variables:
1239         BUILD_DIR: release-builds-clang
1240     needs:
1241       - job: configure-clang-8-release
1242         artifacts: true
1243     only:
1244       refs:
1245         - web
1246         - schedules
1247         - triggers
1248       variables:
1249         - $GROMACS_RELEASE
1250
1251 webpage-binary-release:
1252     extends:
1253       - .build-docs-binary
1254       - .gmxapi-extra-installs
1255     stage: release-build
1256     needs:
1257       - job: webpage-configure-release
1258         artifacts: true
1259     variables:
1260         BUILD_DIR: release-doc-builds
1261     only:
1262       refs:
1263         - triggers
1264         - web
1265         - schedules
1266       variables:
1267         - $GROMACS_RELEASE
1268
1269 test-gcc-7-release:
1270     extends:
1271       - .test-gcc
1272       - .gcc7-template
1273     stage: release-tests
1274     variables:
1275         BUILD_DIR: release-builds-gcc
1276     needs:
1277       - job: configure-gcc-7-release
1278         artifacts: true
1279       - job: build-gcc-7-release
1280         artifacts: true
1281     only:
1282       refs:
1283         - triggers
1284         - web
1285         - schedules
1286       variables:
1287         - $GROMACS_RELEASE
1288
1289 test-gcc-7-gmxapi-release:
1290     extends:
1291       - .test-gcc
1292       - .gmxapi-extra-installs
1293       - .gcc7-template
1294     stage: release-tests
1295     variables:
1296         BUILD_DIR: release-builds-gcc
1297     needs:
1298       - job: configure-gcc-7-gmxapi-release
1299         artifacts: true
1300       - job: build-gcc-7-gmxapi-release
1301         artifacts: true
1302     only:
1303       refs:
1304         - triggers
1305         - web
1306         - schedules
1307       variables:
1308         - $GROMACS_RELEASE
1309
1310 test-gcc-7-double-release:
1311     extends:
1312       - .test-gcc
1313       - .gcc7-template
1314     stage: release-tests
1315     variables:
1316         BUILD_DIR: release-builds-gcc
1317     needs:
1318       - job: configure-gcc-7-double-release
1319         artifacts: true
1320       - job: build-gcc-7-double-release
1321         artifacts: true
1322     only:
1323       refs:
1324         - triggers
1325         - web
1326         - schedules
1327       variables:
1328         - $GROMACS_RELEASE
1329
1330 test-gcc-8-release:
1331     extends:
1332       - .test-gcc
1333       - .gcc8-template
1334     stage: release-tests
1335     variables:
1336         BUILD_DIR: release-builds-gcc
1337     needs:
1338       - job: configure-gcc-8-release
1339         artifacts: true
1340       - job: build-gcc-8-release
1341         artifacts: true
1342     only:
1343       refs:
1344         - triggers
1345         - web
1346         - schedules
1347       variables:
1348         - $GROMACS_RELEASE
1349
1350 test-clang-7-release:
1351     extends:
1352       - .test-clang
1353       - .clang7-template
1354     stage: release-tests
1355     variables:
1356         BUILD_DIR: release-builds-clang
1357     needs:
1358       - job: configure-clang-7-release
1359         artifacts: true
1360       - job: build-clang-7-release
1361         artifacts: true
1362     only:
1363       refs:
1364         - triggers
1365         - web
1366         - schedules
1367       variables:
1368         - $GROMACS_RELEASE
1369
1370 test-clang-7-gmxapi-release:
1371     extends:
1372       - .test-clang
1373       - .gmxapi-extra-installs
1374       - .clang7-template
1375     stage: release-tests
1376     variables:
1377         BUILD_DIR: release-builds-clang
1378     needs:
1379       - job: configure-clang-7-gmxapi-release
1380         artifacts: true
1381       - job: build-clang-7-gmxapi-release
1382         artifacts: true
1383     only:
1384       refs:
1385         - triggers
1386         - web
1387         - schedules
1388       variables:
1389         - $GROMACS_RELEASE
1390
1391 test-clang-8-release:
1392     extends:
1393       - .test-clang
1394       - .clang8-template
1395     stage: release-tests
1396     variables:
1397         BUILD_DIR: release-builds-clang
1398     needs:
1399       - job: configure-clang-8-release
1400         artifacts: true
1401       - job: build-clang-8-release
1402         artifacts: true
1403     only:
1404       refs:
1405         - triggers
1406         - web
1407         - schedules
1408       variables:
1409         - $GROMACS_RELEASE
1410
1411 webpage-build-release:
1412   extends:
1413     - .build-docs-webpage
1414     - .configure-gmxapi-template
1415
1416   dependencies:
1417     - webpage-binary-release
1418     - webpage-configure-release
1419
1420   stage: release-prepare-deploy
1421   only:
1422     refs:
1423       - web
1424       - schedules
1425       - triggers
1426     variables:
1427       - $GROMACS_RELEASE
1428   variables:
1429       BUILD_DIR: release-doc-builds
1430
1431 webpage-archive-release:
1432     extends:
1433       - .build-docs-webpage
1434       - .configure-gmxapi-template
1435     stage: release-deploy
1436     only:
1437       refs:
1438         - web
1439         - triggers
1440         - schedules
1441       variables:
1442         - $GROMACS_RELEASE
1443     dependencies:
1444       - webpage-build-release
1445       - package-archive-release
1446       - package-regressiontests-release
1447     variables:
1448         BUILD_DIR: release-doc-builds
1449     script:
1450         - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1451     artifacts:
1452       when: always
1453       paths:
1454         - webpage.tar.gz
1455         - gromacs-*tar.gz
1456         - regressiontests-*tar.gz
1457