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
92 - .configure-extends-template
93 - .clang-before-script-template
94 - .build-clang-template
96 .configure-clang-release:
98 - .configure-release-extends-template
99 - .clang-before-script-template
100 - .build-clang-template
104 - .configure-extends-template
105 - .configure-docs-template
106 - .documentation-before-script-template
108 .configure-docs-release:
110 - .configure-extends-template
111 - .configure-docs-release-template
112 - .documentation-before-script-template
114 # Templates for build stage
117 - .build-extends-template
118 - .documentation-before-script-template
119 - .build-docs-binary-template
120 - .archive-build-template
124 - .build-extends-template
125 - .gcc-before-script-template
126 - .build-gcc-template
130 - .build-extends-template
131 - .clang-before-script-template
132 - .build-clang-template
136 - .build-extends-template
137 - .build-cache-template
138 - .build-docs-binary-template
139 - .documentation-before-script-template
143 - .binary-build-template
144 - .variables-template
147 - .build-docs-webpage-template
148 - .documentation-before-script-template
153 - .build-cuda-template
155 # Templates for test stage
158 - .test-extends-template
159 - .gcc-before-script-template
164 - .test-extends-template
165 - .clang-before-script-template
166 - .test-clang-template
168 # Special job to package regressiontest files and have them available for testing
169 # Runs during pre-build
170 prepare-regressiontests:
172 - .regressiontests-extends-template
173 - .regressiontests-template
175 prepare-release-version:
177 - .regressiontests-extends-template
178 - .release-version-template
180 # Initial build that always needs to pass before follow-up stages run
183 - .simple-build-template
184 - .build-cache-template
185 - .variables-template
187 - .gcc-before-script-template
188 - .build-gcc-template
191 COMPILER_MAJOR_VERSION: 7
192 BUILD_DIR: simple-build
197 # Jobs running in first pre-build stage
206 COMPILER_MAJOR_VERSION: 7
211 configure-gcc-7-gmxapi:
214 - .configure-gmxapi-template
220 COMPILER_MAJOR_VERSION: 7
225 configure-gcc-7-double:
233 COMPILER_MAJOR_VERSION: 7
234 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
247 COMPILER_MAJOR_VERSION: 8
252 configure-gcc-7-simd-sse41:
260 COMPILER_MAJOR_VERSION: 7
261 CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
274 COMPILER_MAJOR_VERSION: 7
279 configure-clang-7-gmxapi:
282 - .configure-gmxapi-template
288 COMPILER_MAJOR_VERSION: 7
301 COMPILER_MAJOR_VERSION: 8
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))
317 COMPILER_MAJOR_VERSION: "6.0"
318 CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF
323 configure-clang-tidy:
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
346 BUILD_DIR: build-docs
347 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
352 configure-docs-gmxapi:
355 - .configure-gmxapi-template
360 BUILD_DIR: build-docs-gmxapi
361 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
366 # Only running in scheduled pipelines that are not release builds
367 configure-archive-nightly:
368 stage: nightly-configure
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
386 configure-archive-release:
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
403 # Jobs running during build stage
411 - job: configure-gcc-7
421 - .gmxapi-extra-installs
426 - job: configure-gcc-7-gmxapi
439 - job: configure-gcc-7-double
452 - job: configure-gcc-8
458 build-gcc-7-simd-sse41:
465 - job: configure-gcc-7-simd-sse41
478 - job: configure-clang-7
484 build-clang-7-gmxapi:
487 - .gmxapi-extra-installs
492 - job: configure-clang-7-gmxapi
505 - job: configure-clang-8
518 - job: configure-clang-6
524 # Jobs running during test stage
540 - .gmxapi-extra-installs
545 - job: build-gcc-7-gmxapi
557 - job: build-gcc-7-double
574 test-gcc-7-simd-sse41:
581 - job: build-gcc-7-simd-sse41
601 - .gmxapi-extra-installs
606 - job: build-clang-7-gmxapi
635 # Jobs running in source checking stage
644 - job: configure-clang-tidy
647 BUILD_DIR: build-clang-tidy
648 COMPILER_MAJOR_VERSION: 7
649 EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
656 - .binary-build-template
658 - .variables-template
660 - .clang-before-script-template
661 - .build-clang-template
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
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
690 - .binary-build-template
692 - .variables-template
694 - .clang-before-script-template
695 - .build-clang-template
704 KUBERNETES_CPU_LIMIT: 1
705 KUBERNETES_CPU_REQUEST: 1
706 KUBERNETES_MEMORY_LIMIT: 2Gi
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" ;
728 - .variables-template
730 - .build-docs-binary-template
731 - .documentation-before-script-template
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
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
755 name: docs-artifacts-$CI_COMMIT_REF_SLUG
759 - $BUILD_DIR/docs/doxygen/doxygen-xml.log
760 - $BUILD_DIR/docs/doxygen/check-source.log
762 # Jobs running during documentation build stage
770 - job: configure-docs
773 BUILD_DIR: build-docs
781 - .gmxapi-extra-installs
786 - job: configure-docs-gmxapi
789 BUILD_DIR: build-docs-gmxapi
794 # Jobs running in post-test stage
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.
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
806 - .build-docs-webpage
811 - job: run-check-source
814 BUILD_DIR: build-docs
821 - .build-docs-webpage
822 - .gmxapi-extra-installs
825 - job: build-docs-gmxapi
827 - job: run-check-source
830 BUILD_DIR: build-docs-gmxapi
836 # Jobs running in release stage
839 - .build-docs-webpage
847 - external_pull_requests
852 KUBERNETES_CPU_LIMIT: 1
853 KUBERNETES_CPU_REQUEST: 1
854 KUBERNETES_MEMORY_LIMIT: 2Gi
855 BUILD_DIR: build-docs-gmxapi
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
863 junit: $BUILD_DIR/linkchecker-out.xml
865 build-archive-nightly:
872 - job: configure-archive-nightly
881 BUILD_DIR: build-package
885 - .build-docs-webpage
886 - .configure-gmxapi-template
887 stage: nightly-deploy
899 - job: webpage-gmxapi
902 BUILD_DIR: build-docs-gmxapi
904 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
910 package-regressiontests-release:
912 - .regressiontests-extends-template
913 - .regressiontests-release-template
915 - job: prepare-release-version
927 package-archive-release:
930 stage: release-package
932 - job: configure-archive-release
942 BUILD_DIR: build-package
946 - .regressiontests-extends-template
947 - .release-verify-template
957 - package-archive-release
958 - package-regressiontests-release
959 - prepare-release-version
961 webpage-configure-release:
963 - .configure-docs-release
964 - .configure-gmxapi-template
974 - package-archive-release
975 - package-regressiontests-release
976 - prepare-release-version
978 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_BUILD_MANUAL=on
980 configure-gcc-7-release:
982 - .configure-gcc-release
986 COMPILER_MAJOR_VERSION: 7
987 RELEASE_BUILD_DIR: release-builds-gcc
996 - package-archive-release
997 - package-regressiontests-release
998 - prepare-release-version
1000 configure-gcc-7-gmxapi-release:
1002 - .configure-gcc-release
1003 - .configure-gmxapi-template
1004 - .no-cache-template
1007 COMPILER_MAJOR_VERSION: 7
1008 RELEASE_BUILD_DIR: release-builds-gcc
1017 - package-archive-release
1018 - package-regressiontests-release
1019 - prepare-release-version
1021 configure-gcc-7-double-release:
1023 - .configure-gcc-release
1024 - .no-cache-template
1027 COMPILER_MAJOR_VERSION: 7
1028 CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
1029 RELEASE_BUILD_DIR: release-builds-gcc
1038 - package-archive-release
1039 - package-regressiontests-release
1040 - prepare-release-version
1042 configure-gcc-8-release:
1044 - .configure-gcc-release
1045 - .no-cache-template
1048 COMPILER_MAJOR_VERSION: 8
1049 RELEASE_BUILD_DIR: release-builds-gcc
1058 - package-archive-release
1059 - package-regressiontests-release
1060 - prepare-release-version
1062 configure-clang-7-release:
1064 - .configure-clang-release
1065 - .no-cache-template
1068 COMPILER_MAJOR_VERSION: 7
1069 RELEASE_BUILD_DIR: release-builds-clang
1078 - package-archive-release
1079 - package-regressiontests-release
1080 - prepare-release-version
1082 configure-clang-7-gmxapi-release:
1084 - .configure-clang-release
1085 - .configure-gmxapi-template
1086 - .no-cache-template
1089 COMPILER_MAJOR_VERSION: 7
1090 RELEASE_BUILD_DIR: release-builds-clang
1099 - package-archive-release
1100 - package-regressiontests-release
1101 - prepare-release-version
1103 configure-clang-8-release:
1105 - .configure-clang-release
1106 - .no-cache-template
1109 COMPILER_MAJOR_VERSION: 8
1110 RELEASE_BUILD_DIR: release-builds-clang
1119 - package-archive-release
1120 - package-regressiontests-release
1121 - prepare-release-version
1123 build-gcc-7-release:
1127 stage: release-build
1129 BUILD_DIR: release-builds-gcc
1131 - job: configure-gcc-7-release
1141 build-gcc-7-gmxapi-release:
1144 - .gmxapi-extra-installs
1146 stage: release-build
1148 BUILD_DIR: release-builds-gcc
1150 - job: configure-gcc-7-gmxapi-release
1160 build-gcc-7-double-release:
1164 stage: release-build
1166 BUILD_DIR: release-builds-gcc
1168 - job: configure-gcc-7-double-release
1178 build-gcc-8-release:
1182 stage: release-build
1184 BUILD_DIR: release-builds-gcc
1186 - job: configure-gcc-8-release
1196 build-clang-7-release:
1200 stage: release-build
1202 BUILD_DIR: release-builds-clang
1204 - job: configure-clang-7-release
1214 build-clang-7-gmxapi-release:
1217 - .gmxapi-extra-installs
1219 stage: release-build
1221 BUILD_DIR: release-builds-clang
1223 - job: configure-clang-7-gmxapi-release
1233 build-clang-8-release:
1237 stage: release-build
1239 BUILD_DIR: release-builds-clang
1241 - job: configure-clang-8-release
1251 webpage-binary-release:
1253 - .build-docs-binary
1254 - .gmxapi-extra-installs
1255 stage: release-build
1257 - job: webpage-configure-release
1260 BUILD_DIR: release-doc-builds
1273 stage: release-tests
1275 BUILD_DIR: release-builds-gcc
1277 - job: configure-gcc-7-release
1279 - job: build-gcc-7-release
1289 test-gcc-7-gmxapi-release:
1292 - .gmxapi-extra-installs
1294 stage: release-tests
1296 BUILD_DIR: release-builds-gcc
1298 - job: configure-gcc-7-gmxapi-release
1300 - job: build-gcc-7-gmxapi-release
1310 test-gcc-7-double-release:
1314 stage: release-tests
1316 BUILD_DIR: release-builds-gcc
1318 - job: configure-gcc-7-double-release
1320 - job: build-gcc-7-double-release
1334 stage: release-tests
1336 BUILD_DIR: release-builds-gcc
1338 - job: configure-gcc-8-release
1340 - job: build-gcc-8-release
1350 test-clang-7-release:
1354 stage: release-tests
1356 BUILD_DIR: release-builds-clang
1358 - job: configure-clang-7-release
1360 - job: build-clang-7-release
1370 test-clang-7-gmxapi-release:
1373 - .gmxapi-extra-installs
1375 stage: release-tests
1377 BUILD_DIR: release-builds-clang
1379 - job: configure-clang-7-gmxapi-release
1381 - job: build-clang-7-gmxapi-release
1391 test-clang-8-release:
1395 stage: release-tests
1397 BUILD_DIR: release-builds-clang
1399 - job: configure-clang-8-release
1401 - job: build-clang-8-release
1411 webpage-build-release:
1413 - .build-docs-webpage
1414 - .configure-gmxapi-template
1417 - webpage-binary-release
1418 - webpage-configure-release
1420 stage: release-prepare-deploy
1429 BUILD_DIR: release-doc-builds
1431 webpage-archive-release:
1433 - .build-docs-webpage
1434 - .configure-gmxapi-template
1435 stage: release-deploy
1444 - webpage-build-release
1445 - package-archive-release
1446 - package-regressiontests-release
1448 BUILD_DIR: release-doc-builds
1450 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
1456 - regressiontests-*tar.gz