2 - local: '/admin/ci-templates/.include-template.yml'
4 .configure-extends-template:
6 - .configure-build-template
11 .configure-release-extends-template:
13 - .configure-build-release-template
18 .build-extends-template:
20 - .binary-build-template
21 - .build-cache-template
25 .test-extends-template:
28 - .pull-cache-template
29 - .test-script-template
33 .regressiontests-prepare-extends-template:
39 # CI is organized into stages so that if early stages fail
40 # the later ones are not run.
42 # Initial test build for checking simple compilation and getting regressiontest repo
44 # Configuration for building and testing
46 # Build GROMACS in multiple configurations
48 # Unit test each configuration, perhaps in multiple ways
50 # Generate documentation files
52 # Check documentation from source code for errors
54 # Linting, docs, static analysis, coverage, code analysis...
56 # Nightly work to configure builds
60 # Nightly deploy stage
62 # Release work for packaging code
64 # Release checksum verification
66 # Configure code for release builds
68 # Release work for packaging code
70 # Tests for release code
72 # Prepare for deploying artifacts
73 - release-prepare-deploy
74 # Deploy stage for release builds
77 # Templates for configuration stage
80 - .configure-extends-template
81 - .gcc-before-script-template
84 .configure-gcc-release:
86 - .configure-release-extends-template
87 - .gcc-before-script-template
97 - .configure-extends-template
98 - .clang-before-script-template
99 - .build-clang-template
101 .configure-clang-release:
103 - .configure-release-extends-template
104 - .clang-before-script-template
105 - .build-clang-template
109 - .configure-extends-template
110 - .configure-docs-template
111 - .documentation-before-script-template
113 .configure-docs-release:
115 - .configure-extends-template
116 - .configure-docs-release-template
117 - .documentation-before-script-template
119 # Templates for build stage
122 - .build-extends-template
123 - .documentation-before-script-template
124 - .build-docs-binary-template
125 - .archive-build-template
129 - .build-extends-template
130 - .gcc-before-script-template
131 - .build-gcc-template
135 - .build-extends-template
136 - .clang-before-script-template
137 - .build-clang-template
141 - .build-extends-template
142 - .build-cache-template
143 - .build-docs-binary-template
144 - .documentation-before-script-template
148 - .binary-build-template
149 - .variables-template
152 - .build-docs-webpage-template
153 - .documentation-before-script-template
160 # Templates for test stage
163 - .test-extends-template
164 - .gcc-before-script-template
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:
182 - .regressiontests-prepare-extends-template
183 - .regressiontests-template
185 prepare-release-version:
187 - .regressiontests-prepare-extends-template
188 - .release-version-template
190 # Initial build that always needs to pass before follow-up stages run
193 - .simple-build-template
194 - .build-cache-template
195 - .variables-template
197 - .gcc-before-script-template
198 - .build-gcc-template
201 COMPILER_MAJOR_VERSION: 7
202 BUILD_DIR: simple-build
207 # Jobs running in first pre-build stage
216 COMPILER_MAJOR_VERSION: 7
221 configure-gcc-7-gmxapi:
224 - .configure-gmxapi-template
230 COMPILER_MAJOR_VERSION: 7
235 configure-gcc-7-double:
243 COMPILER_MAJOR_VERSION: 7
244 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
257 COMPILER_MAJOR_VERSION: 8
262 configure-gcc-8-cuda-10.2:
264 - .configure-gcc-cuda
265 - .gcc-8-cuda-10.2-template
273 configure-gcc-7-simd-sse41:
281 COMPILER_MAJOR_VERSION: 7
282 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
295 COMPILER_MAJOR_VERSION: 7
300 configure-clang-7-gmxapi:
303 - .configure-gmxapi-template
309 COMPILER_MAJOR_VERSION: 7
322 COMPILER_MAJOR_VERSION: 8
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))
338 COMPILER_MAJOR_VERSION: "6.0"
339 CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
344 configure-clang-tidy:
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
367 BUILD_DIR: build-docs
368 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
373 configure-docs-gmxapi:
376 - .configure-gmxapi-template
381 BUILD_DIR: build-docs-gmxapi
382 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
387 # Only running in scheduled pipelines that are not release builds
388 configure-archive-nightly:
389 stage: nightly-configure
403 BUILD_DIR: build-package
404 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
405 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
406 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
408 configure-archive-release:
420 BUILD_DIR: build-package
421 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
422 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
423 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
425 # Jobs running during build stage
433 - job: configure-gcc-7
443 - .gmxapi-extra-installs
448 - job: configure-gcc-7-gmxapi
461 - job: configure-gcc-7-double
474 - job: configure-gcc-8
480 build-gcc-8-cuda-10.2:
483 - .gcc-8-cuda-10.2-template
487 - job: configure-gcc-8-cuda-10.2
493 build-gcc-7-simd-sse41:
500 - job: configure-gcc-7-simd-sse41
513 - job: configure-clang-7
519 build-clang-7-gmxapi:
522 - .gmxapi-extra-installs
527 - job: configure-clang-7-gmxapi
540 - job: configure-clang-8
553 - job: configure-clang-6
559 # Jobs running during test stage
568 - job: prepare-regressiontests
576 - .gmxapi-extra-installs
581 - job: build-gcc-7-gmxapi
582 - job: prepare-regressiontests
592 REGRESSIONTEST_DOUBLE: "-double"
596 - job: build-gcc-7-double
597 - job: prepare-regressiontests
610 - job: prepare-regressiontests
615 test-gcc-8-cuda-10.2:
617 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
618 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
621 - .gcc-8-cuda-10.2-template
623 REGRESSIONTEST_PME_RANK_NUMBER: 0
624 REGRESSIONTEST_TOTAL_RANK_NUMBER: 2
625 REGRESSIONTEST_OMP_RANK_NUMBER: 1
629 - job: build-gcc-8-cuda-10.2
630 - job: prepare-regressiontests
635 test-gcc-7-simd-sse41:
642 - job: build-gcc-7-simd-sse41
643 - job: prepare-regressiontests
656 - job: prepare-regressiontests
664 - .gmxapi-extra-installs
669 - job: build-clang-7-gmxapi
670 - job: prepare-regressiontests
683 - job: prepare-regressiontests
693 REGRESSIONTEST_OMP_RANK_NUMBER: 0
698 - job: prepare-regressiontests
703 # Jobs running in source checking stage
712 - job: configure-clang-tidy
715 BUILD_DIR: build-clang-tidy
716 COMPILER_MAJOR_VERSION: 7
717 EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
724 - .binary-build-template
726 - .variables-template
728 - .clang-before-script-template
729 - .build-clang-template
737 KUBERNETES_CPU_LIMIT: 1
738 KUBERNETES_CPU_REQUEST: 1
739 KUBERNETES_MEMORY_LIMIT: 2Gi
740 COMPILER_MAJOR_VERSION: 7
741 EXTRA_INSTALLS: clang-format-$COMPILER_MAJOR_VERSION
746 - export CLANG_FORMAT=clang-format-$COMPILER_MAJOR_VERSION
747 - admin/clang-format.sh check --rev=HEAD^ --warnings=clang-format.log
748 - grep -iq "needs formatting" clang-format.log | tee formatting.txt || true
749 - if [ -s formatting.txt ] ; then echo "clang-format.sh found issues"; exit 1; fi
758 - .binary-build-template
760 - .variables-template
762 - .clang-before-script-template
763 - .build-clang-template
772 KUBERNETES_CPU_LIMIT: 1
773 KUBERNETES_CPU_REQUEST: 1
774 KUBERNETES_MEMORY_LIMIT: 2Gi
779 - admin/copyright.sh check --rev=HEAD^ --warnings=copyright.log
780 - grep -iq "copyright year" copyright.log | tee years.log || true
781 - grep -iq "copyright header" copyright.log | tee headers.log || true
782 - if [[ -s years.log || -s headers.log ]] ; then
783 echo "Copyright information needs updating" ;
796 - .variables-template
798 - .build-docs-binary-template
799 - .documentation-before-script-template
807 KUBERNETES_CPU_LIMIT: 1
808 KUBERNETES_CPU_REQUEST: 1
809 KUBERNETES_MEMORY_LIMIT: 2Gi
810 BUILD_DIR: build-docs
811 COMPILER_MAJOR_VERSION: 7
818 - cmake --build . --target check-source
819 - grep -qi "error" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee doxygenError.txt || true
820 - grep -qi "warning" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee -a doxygenError.txt || true
821 - if [ -s doxygenError.txt ] ; then echo "Found errors while running doxygen"; exit 1; fi
823 name: docs-artifacts-$CI_COMMIT_REF_SLUG
827 - $BUILD_DIR/docs/doxygen/doxygen-xml.log
828 - $BUILD_DIR/docs/doxygen/check-source.log
830 # Jobs running during documentation build stage
838 - job: configure-docs
841 BUILD_DIR: build-docs
849 - .gmxapi-extra-installs
854 - job: configure-docs-gmxapi
857 BUILD_DIR: build-docs-gmxapi
862 # Jobs running in post-test stage
864 # The manual build is built separately so that errors in converting
865 # Sphinx to LaTeX and compiling can always be found in the
866 # all-output.txt file, while avoiding many thousands of lines of spam
867 # from pdflatex for normal builds. This does reduce the available
868 # parallel utilization, and so increases the build time.
870 # TODO why are the doxygen and sphinx log files disappearing
871 # TODO use a feature from gitlab runner instead of using pipefail to get timings for the job
874 - .build-docs-webpage
879 - job: run-check-source
882 BUILD_DIR: build-docs
889 - .build-docs-webpage
890 - .gmxapi-extra-installs
893 - job: build-docs-gmxapi
895 - job: run-check-source
898 BUILD_DIR: build-docs-gmxapi
904 # Jobs running in release stage
907 - .build-docs-webpage
920 KUBERNETES_CPU_LIMIT: 1
921 KUBERNETES_CPU_REQUEST: 1
922 KUBERNETES_MEMORY_LIMIT: 2Gi
923 BUILD_DIR: build-docs-gmxapi
926 - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full
927 --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources
931 junit: $BUILD_DIR/linkchecker-out.xml
933 build-archive-nightly:
940 - job: configure-archive-nightly
950 BUILD_DIR: build-package
954 - .build-docs-webpage
955 - .configure-gmxapi-template
956 stage: nightly-deploy
969 - job: webpage-gmxapi
972 BUILD_DIR: build-docs-gmxapi
974 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
980 package-regressiontests-release:
982 - .regressiontests-prepare-extends-template
983 - .regressiontests-release-template
985 - job: prepare-release-version
997 package-archive-release:
1000 stage: release-package
1002 - job: configure-archive-release
1012 BUILD_DIR: build-package
1016 - .regressiontests-prepare-extends-template
1017 - .release-verify-template
1027 - package-archive-release
1028 - package-regressiontests-release
1029 - prepare-release-version
1031 webpage-configure-release:
1033 - .configure-docs-release
1034 - .configure-gmxapi-template
1035 - .no-cache-template
1044 - package-archive-release
1045 - package-regressiontests-release
1046 - prepare-release-version
1048 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
1050 configure-gcc-7-release:
1052 - .configure-gcc-release
1053 - .no-cache-template
1056 COMPILER_MAJOR_VERSION: 7
1057 RELEASE_BUILD_DIR: release-builds-gcc
1066 - package-archive-release
1067 - package-regressiontests-release
1068 - prepare-release-version
1070 configure-gcc-7-gmxapi-release:
1072 - .configure-gcc-release
1073 - .configure-gmxapi-template
1074 - .no-cache-template
1077 COMPILER_MAJOR_VERSION: 7
1078 RELEASE_BUILD_DIR: release-builds-gcc
1087 - package-archive-release
1088 - package-regressiontests-release
1089 - prepare-release-version
1091 configure-gcc-7-double-release:
1093 - .configure-gcc-release
1094 - .no-cache-template
1097 COMPILER_MAJOR_VERSION: 7
1098 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
1099 RELEASE_BUILD_DIR: release-builds-gcc
1108 - package-archive-release
1109 - package-regressiontests-release
1110 - prepare-release-version
1112 configure-gcc-8-release:
1114 - .configure-gcc-release
1115 - .no-cache-template
1118 COMPILER_MAJOR_VERSION: 8
1119 RELEASE_BUILD_DIR: release-builds-gcc
1128 - package-archive-release
1129 - package-regressiontests-release
1130 - prepare-release-version
1132 configure-clang-7-release:
1134 - .configure-clang-release
1135 - .no-cache-template
1138 COMPILER_MAJOR_VERSION: 7
1139 RELEASE_BUILD_DIR: release-builds-clang
1148 - package-archive-release
1149 - package-regressiontests-release
1150 - prepare-release-version
1152 configure-clang-7-gmxapi-release:
1154 - .configure-clang-release
1155 - .configure-gmxapi-template
1156 - .no-cache-template
1159 COMPILER_MAJOR_VERSION: 7
1160 RELEASE_BUILD_DIR: release-builds-clang
1169 - package-archive-release
1170 - package-regressiontests-release
1171 - prepare-release-version
1173 configure-clang-8-release:
1175 - .configure-clang-release
1176 - .no-cache-template
1179 COMPILER_MAJOR_VERSION: 8
1180 RELEASE_BUILD_DIR: release-builds-clang
1189 - package-archive-release
1190 - package-regressiontests-release
1191 - prepare-release-version
1193 build-gcc-7-release:
1197 stage: release-build
1199 BUILD_DIR: release-builds-gcc
1201 - job: configure-gcc-7-release
1211 build-gcc-7-gmxapi-release:
1214 - .gmxapi-extra-installs
1216 stage: release-build
1218 BUILD_DIR: release-builds-gcc
1220 - job: configure-gcc-7-gmxapi-release
1230 build-gcc-7-double-release:
1234 stage: release-build
1236 BUILD_DIR: release-builds-gcc
1238 - job: configure-gcc-7-double-release
1248 build-gcc-8-release:
1252 stage: release-build
1254 BUILD_DIR: release-builds-gcc
1256 - job: configure-gcc-8-release
1266 build-clang-7-release:
1270 stage: release-build
1272 BUILD_DIR: release-builds-clang
1274 - job: configure-clang-7-release
1284 build-clang-7-gmxapi-release:
1287 - .gmxapi-extra-installs
1289 stage: release-build
1291 BUILD_DIR: release-builds-clang
1293 - job: configure-clang-7-gmxapi-release
1303 build-clang-8-release:
1307 stage: release-build
1309 BUILD_DIR: release-builds-clang
1311 - job: configure-clang-8-release
1321 webpage-binary-release:
1323 - .build-docs-binary
1324 - .gmxapi-extra-installs
1325 stage: release-build
1327 - job: webpage-configure-release
1330 BUILD_DIR: release-doc-builds
1343 stage: release-tests
1345 BUILD_DIR: release-builds-gcc
1347 - job: configure-gcc-7-release
1349 - job: build-gcc-7-release
1351 - job: prepare-regressiontests
1360 test-gcc-7-gmxapi-release:
1363 - .gmxapi-extra-installs
1365 stage: release-tests
1367 BUILD_DIR: release-builds-gcc
1369 - job: configure-gcc-7-gmxapi-release
1371 - job: build-gcc-7-gmxapi-release
1373 - job: prepare-regressiontests
1382 test-gcc-7-double-release:
1386 stage: release-tests
1388 BUILD_DIR: release-builds-gcc
1389 REGRESSIONTEST_DOUBLE: "-double"
1391 - job: configure-gcc-7-double-release
1393 - job: build-gcc-7-double-release
1395 - job: prepare-regressiontests
1408 stage: release-tests
1410 BUILD_DIR: release-builds-gcc
1412 - job: configure-gcc-8-release
1414 - job: build-gcc-8-release
1416 - job: prepare-regressiontests
1425 test-clang-7-release:
1429 stage: release-tests
1431 BUILD_DIR: release-builds-clang
1433 - job: configure-clang-7-release
1435 - job: build-clang-7-release
1437 - job: prepare-regressiontests
1446 test-clang-7-gmxapi-release:
1449 - .gmxapi-extra-installs
1451 stage: release-tests
1453 BUILD_DIR: release-builds-clang
1455 - job: configure-clang-7-gmxapi-release
1457 - job: build-clang-7-gmxapi-release
1459 - job: prepare-regressiontests
1468 test-clang-8-release:
1472 stage: release-tests
1474 BUILD_DIR: release-builds-clang
1476 - job: configure-clang-8-release
1478 - job: build-clang-8-release
1480 - job: prepare-regressiontests
1489 webpage-build-release:
1491 - .build-docs-webpage
1492 - .configure-gmxapi-template
1495 - webpage-binary-release
1496 - webpage-configure-release
1498 stage: release-prepare-deploy
1507 BUILD_DIR: release-doc-builds
1509 webpage-archive-release:
1511 - .build-docs-webpage
1512 - .configure-gmxapi-template
1513 stage: release-deploy
1522 - webpage-build-release
1523 - package-archive-release
1524 - package-regressiontests-release
1526 BUILD_DIR: release-doc-builds
1528 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1534 - regressiontests-*tar.gz