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-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 # 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-extends-template
183 - .regressiontests-template
185 prepare-release-version:
187 - .regressiontests-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
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:
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
432 - job: configure-gcc-7
442 - .gmxapi-extra-installs
447 - job: configure-gcc-7-gmxapi
460 - job: configure-gcc-7-double
473 - job: configure-gcc-8
479 build-gcc-8-cuda-10.2:
482 - .gcc-8-cuda-10.2-template
486 - job: configure-gcc-8-cuda-10.2
492 build-gcc-7-simd-sse41:
499 - job: configure-gcc-7-simd-sse41
512 - job: configure-clang-7
518 build-clang-7-gmxapi:
521 - .gmxapi-extra-installs
526 - job: configure-clang-7-gmxapi
539 - job: configure-clang-8
552 - job: configure-clang-6
558 # Jobs running during test stage
574 - .gmxapi-extra-installs
579 - job: build-gcc-7-gmxapi
591 - job: build-gcc-7-double
608 test-gcc-8-cuda-10.2:
610 KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu"
611 KUBERNETES_EXTENDED_RESOURCE_LIMIT: 1
614 - .gcc-8-cuda-10.2-template
618 - job: build-gcc-8-cuda-10.2
623 test-gcc-7-simd-sse41:
630 - job: build-gcc-7-simd-sse41
650 - .gmxapi-extra-installs
655 - job: build-clang-7-gmxapi
684 # Jobs running in source checking stage
692 - job: configure-gcc-8
698 build-gcc-7-simd-sse41:
705 - job: configure-gcc-7-simd-sse41
718 - job: configure-clang-7
724 build-clang-7-gmxapi:
727 - .gmxapi-extra-installs
732 - job: configure-clang-7-gmxapi
745 - job: configure-clang-8
758 - job: configure-clang-6
764 # Jobs running during test stage
780 - .gmxapi-extra-installs
785 - job: build-gcc-7-gmxapi
797 - job: build-gcc-7-double
814 test-gcc-7-simd-sse41:
821 - job: build-gcc-7-simd-sse41
841 - .gmxapi-extra-installs
846 - job: build-clang-7-gmxapi
875 # Jobs running in source checking stage
884 - job: configure-clang-tidy
887 BUILD_DIR: build-clang-tidy
888 COMPILER_MAJOR_VERSION: 7
889 EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
896 - .binary-build-template
898 - .variables-template
900 - .clang-before-script-template
901 - .build-clang-template
909 KUBERNETES_CPU_LIMIT: 1
910 KUBERNETES_CPU_REQUEST: 1
911 KUBERNETES_MEMORY_LIMIT: 2Gi
912 COMPILER_MAJOR_VERSION: 7
913 EXTRA_INSTALLS: clang-format-$COMPILER_MAJOR_VERSION
918 - export CLANG_FORMAT=clang-format-$COMPILER_MAJOR_VERSION
919 - admin/clang-format.sh check --rev=HEAD^ --warnings=clang-format.log
920 - grep -iq "needs formatting" clang-format.log | tee formatting.txt || true
921 - if [ -s formatting.txt ] ; then echo "clang-format.sh found issues"; exit 1; fi
930 - .binary-build-template
932 - .variables-template
934 - .clang-before-script-template
935 - .build-clang-template
943 KUBERNETES_CPU_LIMIT: 1
944 KUBERNETES_CPU_REQUEST: 1
945 KUBERNETES_MEMORY_LIMIT: 2Gi
950 - admin/copyright.sh check --rev=HEAD^ --warnings=copyright.log
951 - grep -iq "copyright year" copyright.log | tee years.log || true
952 - grep -iq "copyright header" copyright.log | tee headers.log || true
953 - if [[ -s years.log || -s headers.log ]] ; then
954 echo "Copyright information needs updating" ;
967 - .variables-template
969 - .build-docs-binary-template
970 - .documentation-before-script-template
978 KUBERNETES_CPU_LIMIT: 1
979 KUBERNETES_CPU_REQUEST: 1
980 KUBERNETES_MEMORY_LIMIT: 2Gi
981 BUILD_DIR: build-docs
982 COMPILER_MAJOR_VERSION: 7
988 - cmake --build . --target check-source
989 - grep -qi "error" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee doxygenError.txt || true
990 - grep -qi "warning" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee -a doxygenError.txt || true
991 - if [ -s doxygenError.txt ] ; then echo "Found errors while running doxygen"; exit 1; fi
993 name: docs-artifacts-$CI_COMMIT_REF_SLUG
997 - $BUILD_DIR/docs/doxygen/doxygen-xml.log
998 - $BUILD_DIR/docs/doxygen/check-source.log
1000 # Jobs running during documentation build stage
1003 - .build-docs-binary
1004 stage: documentation
1008 - job: configure-docs
1011 BUILD_DIR: build-docs
1018 - .build-docs-binary
1019 - .gmxapi-extra-installs
1020 stage: documentation
1024 - job: configure-docs-gmxapi
1027 BUILD_DIR: build-docs-gmxapi
1032 # Jobs running in post-test stage
1034 # The manual build is built separately so that errors in converting
1035 # Sphinx to LaTeX and compiling can always be found in the
1036 # all-output.txt file, while avoiding many thousands of lines of spam
1037 # from pdflatex for normal builds. This does reduce the available
1038 # parallel utilization, and so increases the build time.
1040 # TODO why are the doxygen and sphinx log files disappearing
1041 # TODO use a feature from gitlab runner instead of using pipefail to get timings for the job
1044 - .build-docs-webpage
1049 - job: run-check-source
1052 BUILD_DIR: build-docs
1059 - .build-docs-webpage
1060 - .gmxapi-extra-installs
1063 - job: build-docs-gmxapi
1065 - job: run-check-source
1068 BUILD_DIR: build-docs-gmxapi
1074 # Jobs running in release stage
1077 - .build-docs-webpage
1078 stage: nightly-build
1085 - external_pull_requests
1090 KUBERNETES_CPU_LIMIT: 1
1091 KUBERNETES_CPU_REQUEST: 1
1092 KUBERNETES_MEMORY_LIMIT: 2Gi
1093 BUILD_DIR: build-docs-gmxapi
1096 - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full
1097 --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources
1101 junit: $BUILD_DIR/linkchecker-out.xml
1103 build-archive-nightly:
1106 stage: nightly-build
1110 - job: configure-archive-nightly
1119 BUILD_DIR: build-package
1123 - .build-docs-webpage
1124 - .configure-gmxapi-template
1125 stage: nightly-deploy
1137 - job: webpage-gmxapi
1140 BUILD_DIR: build-docs-gmxapi
1142 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1148 package-regressiontests-release:
1150 - .regressiontests-extends-template
1151 - .regressiontests-release-template
1153 - job: prepare-release-version
1164 package-archive-release:
1167 stage: release-package
1169 - job: configure-archive-release
1179 BUILD_DIR: build-package
1183 - .regressiontests-extends-template
1184 - .release-verify-template
1193 - package-archive-release
1194 - package-regressiontests-release
1195 - prepare-release-version
1197 webpage-configure-release:
1199 - .configure-docs-release
1200 - .configure-gmxapi-template
1201 - .no-cache-template
1210 - package-archive-release
1211 - package-regressiontests-release
1212 - prepare-release-version
1214 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
1216 configure-gcc-7-release:
1218 - .configure-gcc-release
1219 - .no-cache-template
1222 COMPILER_MAJOR_VERSION: 7
1223 RELEASE_BUILD_DIR: release-builds-gcc
1232 - package-archive-release
1233 - package-regressiontests-release
1234 - prepare-release-version
1236 configure-gcc-7-gmxapi-release:
1238 - .configure-gcc-release
1239 - .configure-gmxapi-template
1240 - .no-cache-template
1243 COMPILER_MAJOR_VERSION: 7
1244 RELEASE_BUILD_DIR: release-builds-gcc
1253 - package-archive-release
1254 - package-regressiontests-release
1255 - prepare-release-version
1257 configure-gcc-7-double-release:
1259 - .configure-gcc-release
1260 - .no-cache-template
1263 COMPILER_MAJOR_VERSION: 7
1264 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
1265 RELEASE_BUILD_DIR: release-builds-gcc
1274 - package-archive-release
1275 - package-regressiontests-release
1276 - prepare-release-version
1278 configure-gcc-8-release:
1280 - .configure-gcc-release
1281 - .no-cache-template
1284 COMPILER_MAJOR_VERSION: 8
1285 RELEASE_BUILD_DIR: release-builds-gcc
1294 - package-archive-release
1295 - package-regressiontests-release
1296 - prepare-release-version
1298 configure-clang-7-release:
1300 - .configure-clang-release
1301 - .no-cache-template
1304 COMPILER_MAJOR_VERSION: 7
1305 RELEASE_BUILD_DIR: release-builds-clang
1314 - package-archive-release
1315 - package-regressiontests-release
1316 - prepare-release-version
1318 configure-clang-7-gmxapi-release:
1320 - .configure-clang-release
1321 - .configure-gmxapi-template
1322 - .no-cache-template
1325 COMPILER_MAJOR_VERSION: 7
1326 RELEASE_BUILD_DIR: release-builds-clang
1335 - package-archive-release
1336 - package-regressiontests-release
1337 - prepare-release-version
1339 configure-clang-8-release:
1341 - .configure-clang-release
1342 - .no-cache-template
1345 COMPILER_MAJOR_VERSION: 8
1346 RELEASE_BUILD_DIR: release-builds-clang
1355 - package-archive-release
1356 - package-regressiontests-release
1357 - prepare-release-version
1359 build-gcc-7-release:
1363 stage: release-build
1365 BUILD_DIR: release-builds-gcc
1367 - job: configure-gcc-7-release
1377 build-gcc-7-gmxapi-release:
1380 - .gmxapi-extra-installs
1382 stage: release-build
1384 BUILD_DIR: release-builds-gcc
1386 - job: configure-gcc-7-gmxapi-release
1396 build-gcc-7-double-release:
1400 stage: release-build
1402 BUILD_DIR: release-builds-gcc
1404 - job: configure-gcc-7-double-release
1414 build-gcc-8-release:
1418 stage: release-build
1420 BUILD_DIR: release-builds-gcc
1422 - job: configure-gcc-8-release
1432 build-clang-7-release:
1436 stage: release-build
1438 BUILD_DIR: release-builds-clang
1440 - job: configure-clang-7-release
1450 build-clang-7-gmxapi-release:
1453 - .gmxapi-extra-installs
1455 stage: release-build
1457 BUILD_DIR: release-builds-clang
1459 - job: configure-clang-7-gmxapi-release
1469 build-clang-8-release:
1473 stage: release-build
1475 BUILD_DIR: release-builds-clang
1477 - job: configure-clang-8-release
1487 webpage-binary-release:
1489 - .build-docs-binary
1490 - .gmxapi-extra-installs
1491 stage: release-build
1493 - job: webpage-configure-release
1496 BUILD_DIR: release-doc-builds
1509 stage: release-tests
1511 BUILD_DIR: release-builds-gcc
1513 - job: configure-gcc-7-release
1515 - job: build-gcc-7-release
1525 test-gcc-7-gmxapi-release:
1528 - .gmxapi-extra-installs
1530 stage: release-tests
1532 BUILD_DIR: release-builds-gcc
1534 - job: configure-gcc-7-gmxapi-release
1536 - job: build-gcc-7-gmxapi-release
1546 test-gcc-7-double-release:
1550 stage: release-tests
1552 BUILD_DIR: release-builds-gcc
1554 - job: configure-gcc-7-double-release
1556 - job: build-gcc-7-double-release
1570 stage: release-tests
1572 BUILD_DIR: release-builds-gcc
1574 - job: configure-gcc-8-release
1576 - job: build-gcc-8-release
1586 test-clang-7-release:
1590 stage: release-tests
1592 BUILD_DIR: release-builds-clang
1594 - job: configure-clang-7-release
1596 - job: build-clang-7-release
1606 test-clang-7-gmxapi-release:
1609 - .gmxapi-extra-installs
1611 stage: release-tests
1613 BUILD_DIR: release-builds-clang
1615 - job: configure-clang-7-gmxapi-release
1617 - job: build-clang-7-gmxapi-release
1627 test-clang-8-release:
1631 stage: release-tests
1633 BUILD_DIR: release-builds-clang
1635 - job: configure-clang-8-release
1637 - job: build-clang-8-release
1647 webpage-build-release:
1649 - .build-docs-webpage
1650 - .configure-gmxapi-template
1652 - webpage-binary-release
1653 - webpage-configure-release
1654 stage: release-prepare-deploy
1663 BUILD_DIR: release-doc-builds
1665 webpage-archive-release:
1667 - .build-docs-webpage
1668 - .configure-gmxapi-template
1669 stage: release-deploy
1678 - webpage-build-release
1679 - package-archive-release
1680 - package-regressiontests-release
1682 BUILD_DIR: release-doc-builds
1684 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1690 - regressiontests-*tar.gz