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