From d2e82fbd86763ddadf4d24f006d697575623306b Mon Sep 17 00:00:00 2001 From: "M. Eric Irrgang" Date: Fri, 13 Mar 2020 14:10:55 +0300 Subject: [PATCH] Reorganize release templates. Rename "release" config file to "archive" to collect jobs related to preparing archives for export. "release" jobs are just special cases of jobs that already fit in other categories. Move several jobs between the "lint," "documentation," "testing-matrix," and "archive" groupings. Sort job definitions within files in terms of execution dependency, definition dependency, and toolchain version. In the future, we can probably reduce the distinction between jobs that are 'release' or not (jobs that always run may choose a code path according to to $GROMACS_RELEASE) so I'll leave the 'release' jobs clustered with the non-'release' jobs. Refs #3275 Change-Id: If675be3c64dfc2b42cdc4eba6b940226661ddbf3 --- .gitlab-ci.yml | 3 +- admin/ci-templates/.release-template.yml | 63 -- admin/gitlab-ci/archive.gitlab-ci.yml | 218 ++++++ admin/gitlab-ci/documentation.gitlab-ci.yml | 58 +- admin/gitlab-ci/lint.gitlab-ci.yml | 44 ++ admin/gitlab-ci/release.gitlab-ci.yml | 510 -------------- admin/gitlab-ci/testing-matrix.gitlab-ci.yml | 700 ++++++++++++++----- 7 files changed, 796 insertions(+), 800 deletions(-) delete mode 100644 admin/ci-templates/.release-template.yml create mode 100644 admin/gitlab-ci/archive.gitlab-ci.yml delete mode 100644 admin/gitlab-ci/release.gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ce48b46535..9877a1d0b1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,7 +58,6 @@ include: - local: '/admin/ci-templates/.cuda-template.yml' - local: '/admin/ci-templates/.build-gmxapi-template.yml' - local: '/admin/ci-templates/.regressiontest-template.yml' - - local: '/admin/ci-templates/.release-template.yml' # Build and test in a variety of environments and configurations. # To do: expand matrix here to improve transparency and reduce file sizes. # E.g. '/admin/gitlab-ci/matrix/clang-8.gitlab-ci.yml @@ -68,4 +67,4 @@ include: # Web page and manual. - local: '/admin/gitlab-ci/documentation.gitlab-ci.yml' # Prepare release archives. - - local: '/admin/gitlab-ci/release.gitlab-ci.yml' + - local: '/admin/gitlab-ci/archive.gitlab-ci.yml' diff --git a/admin/ci-templates/.release-template.yml b/admin/ci-templates/.release-template.yml deleted file mode 100644 index a4795af49c..0000000000 --- a/admin/ci-templates/.release-template.yml +++ /dev/null @@ -1,63 +0,0 @@ -.release-version-template: - # Docker image uploaded to dockerhub by user eriklindahl - # TODO: Get DockerFile for admin/dockerfiles - image: biophysics/gcc-gromacs - stage: configure-build - - variables: - KUBERNETES_CPU_LIMIT: 1 - KUBERNETES_CPU_REQUEST: 1 - KUBERNETES_MEMORY_LIMIT: 2Gi - - only: - refs: - - merge_requests - - schedules - - web - variables: - - $GROMACS_RELEASE - script: - - cmake -P cmake/gmxVersionInfo.cmake &> version.json - - artifacts: - paths: - - version.json - - -.release-verify-template: - image: biophysics/gcc-gromacs - stage: release-verify - - variables: - KUBERNETES_CPU_LIMIT: 1 - KUBERNETES_CPU_REQUEST: 1 - KUBERNETES_MEMORY_LIMIT: 2Gi - - only: - refs: - - merge_requests - - schedules - - web - variables: - - $GROMACS_RELEASE - script: - - VERSION=`cat version.json | - python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"` - - if [[ $GROMACS_RELEASE != "true" ]] ; then - VERSION=$VERSION-dev ; - fi - - REGTEST_COMPARE=`cat version.json | - python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"` - - SOURCENAME=gromacs-$VERSION - - SOURCETARBALL=$SOURCENAME.tar.gz - - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'` - - REGTESTNAME=regressiontests-$VERSION - - REGTESTTARBALL=$REGTESTNAME.tar.gz - - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'` - - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM" - - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM" - - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE" - - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then - echo "Mismatch in regressiontest md5sums"; - exit 1; - fi diff --git a/admin/gitlab-ci/archive.gitlab-ci.yml b/admin/gitlab-ci/archive.gitlab-ci.yml new file mode 100644 index 0000000000..e3d6a27a7f --- /dev/null +++ b/admin/gitlab-ci/archive.gitlab-ci.yml @@ -0,0 +1,218 @@ +# Packages, exported artifacts, and release engineering processes. + +.release-version-template: + # Docker image uploaded to dockerhub by user eriklindahl + # TODO: Get DockerFile for admin/dockerfiles + image: biophysics/gcc-gromacs + stage: configure-build + + variables: + KUBERNETES_CPU_LIMIT: 1 + KUBERNETES_CPU_REQUEST: 1 + KUBERNETES_MEMORY_LIMIT: 2Gi + + only: + refs: + - merge_requests + - schedules + - web + variables: + - $GROMACS_RELEASE + script: + - cmake -P cmake/gmxVersionInfo.cmake &> version.json + + artifacts: + paths: + - version.json + +prepare-release-version: + extends: + - .regressiontests-extends-template + - .release-version-template + +# Special job to package regressiontest files and have them available for testing +# Runs during pre-build + +.regressiontests-extends-template: + extends: + - .no-cache-template + - .variables:default + +prepare-regressiontests: + extends: + - .regressiontests-extends-template + - .regressiontests-template + +configure-archive-nightly: + stage: nightly-configure + only: + - triggers + - schedules + needs: + - job: simple-build + artifacts: false + except: + variables: + - $GROMACS_RELEASE + extends: + - .configure-docs + variables: + BUILD_DIR: build-package + CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None + CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF + CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF + +configure-archive-release: + only: + refs: + - web + - triggers + - schedules + variables: + - $GROMACS_RELEASE + extends: + - .configure-docs + variables: + BUILD_DIR: build-package + CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None + CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF + CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF + +.build-archive: + extends: + - .build-extends-template + - .documentation-before-script-template + - .build-docs-binary-template + - .archive-build-template + +build-archive-nightly: + extends: + - .build-archive + stage: nightly-build + needs: + - job: simple-build + artifacts: false + - job: configure-archive-nightly + artifacts: true + only: + - triggers + - schedules + except: + variables: + - $GROMACS_RELEASE + variables: + BUILD_DIR: build-package + +package-regressiontests-release: + extends: + - .regressiontests-extends-template + - .regressiontests-release-template + needs: + - job: prepare-release-version + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + +package-archive-release: + extends: + - .build-archive + stage: release-package + needs: + - job: configure-archive-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + variables: + BUILD_DIR: build-package + +.release-verify-template: + image: biophysics/gcc-gromacs + stage: release-verify + + variables: + KUBERNETES_CPU_LIMIT: 1 + KUBERNETES_CPU_REQUEST: 1 + KUBERNETES_MEMORY_LIMIT: 2Gi + + only: + refs: + - merge_requests + - schedules + - web + variables: + - $GROMACS_RELEASE + script: + - VERSION=`cat version.json | + python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"` + - if [[ $GROMACS_RELEASE != "true" ]] ; then + VERSION=$VERSION-dev ; + fi + - REGTEST_COMPARE=`cat version.json | + python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"` + - SOURCENAME=gromacs-$VERSION + - SOURCETARBALL=$SOURCENAME.tar.gz + - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'` + - REGTESTNAME=regressiontests-$VERSION + - REGTESTTARBALL=$REGTESTNAME.tar.gz + - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'` + - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM" + - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM" + - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE" + - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then + echo "Mismatch in regressiontest md5sums"; + exit 1; + fi + +release-verify: + extends: + - .regressiontests-extends-template + - .release-verify-template + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version + +webpage-archive-release: + extends: + - .build-docs-webpage + - .configure-gmxapi-template + stage: release-deploy + only: + refs: + - web + - triggers + - schedules + variables: + - $GROMACS_RELEASE + dependencies: + - webpage-build-release + - package-archive-release + - package-regressiontests-release + variables: + BUILD_DIR: release-doc-builds + script: + - tar czf webpage.tar.gz $BUILD_DIR/docs/html/ + artifacts: + when: always + paths: + - webpage.tar.gz + - gromacs-*tar.gz + - regressiontests-*tar.gz + diff --git a/admin/gitlab-ci/documentation.gitlab-ci.yml b/admin/gitlab-ci/documentation.gitlab-ci.yml index de262186dd..e38b5d87a8 100644 --- a/admin/gitlab-ci/documentation.gitlab-ci.yml +++ b/admin/gitlab-ci/documentation.gitlab-ci.yml @@ -12,21 +12,6 @@ - .configure-docs-release-template - .documentation-before-script-template -.build-docs-binary: - extends: - - .build-extends-template - - .build-cache-template - - .build-docs-binary-template - - .documentation-before-script-template - -.build-docs-webpage: - extends: - - .binary-build-template - - .variables:default - - .no-cache-template - - .build-docs-webpage-template - - .documentation-before-script-template - configure-docs: extends: - .configure-docs @@ -54,6 +39,21 @@ configure-docs-gmxapi: variables: - $GROMACS_RELEASE +.build-docs-binary: + extends: + - .build-extends-template + - .build-cache-template + - .build-docs-binary-template + - .documentation-before-script-template + +.build-docs-webpage: + extends: + - .binary-build-template + - .variables:default + - .no-cache-template + - .build-docs-webpage-template + - .documentation-before-script-template + build-docs: extends: - .build-docs-binary @@ -207,31 +207,3 @@ webpage-build-release: - $GROMACS_RELEASE variables: BUILD_DIR: release-doc-builds - -webpage-archive-release: - extends: - - .build-docs-webpage - - .configure-gmxapi-template - stage: release-deploy - only: - refs: - - web - - triggers - - schedules - variables: - - $GROMACS_RELEASE - dependencies: - - webpage-build-release - - package-archive-release - - package-regressiontests-release - variables: - BUILD_DIR: release-doc-builds - script: - - tar czf webpage.tar.gz $BUILD_DIR/docs/html/ - artifacts: - when: always - paths: - - webpage.tar.gz - - gromacs-*tar.gz - - regressiontests-*tar.gz - diff --git a/admin/gitlab-ci/lint.gitlab-ci.yml b/admin/gitlab-ci/lint.gitlab-ci.yml index b61293751b..3758efa4be 100644 --- a/admin/gitlab-ci/lint.gitlab-ci.yml +++ b/admin/gitlab-ci/lint.gitlab-ci.yml @@ -1,5 +1,21 @@ # Repository cleanliness. Source tidiness, linting, and policy compliance. +configure-clang-tidy: + extends: + - .configure-clang + - .clang7-template + needs: + - job: simple-build + artifacts: false + variables: + BUILD_DIR: build-clang-tidy + COMPILER_MAJOR_VERSION: 7 + CMAKE_EXTRA_OPTIONS: -DCLANG_TIDY=clang-tidy-$COMPILER_MAJOR_VERSION -DGMX_CLANG_TIDY=ON -DGMX_COMPILER_WARNINGS=ON + EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION + except: + variables: + - $GROMACS_RELEASE + build-clang-tidy: extends: - .build-clang @@ -120,3 +136,31 @@ run-check-source: paths: - $BUILD_DIR/docs/doxygen/doxygen-xml.log - $BUILD_DIR/docs/doxygen/check-source.log + +linkchecker: + extends: + - .build-docs-webpage + stage: nightly-build + dependencies: + - webpage-gmxapi + only: + - schedules + - triggers + - merge_requests + - external_pull_requests + except: + variables: + - $GROMACS_RELEASE + variables: + KUBERNETES_CPU_LIMIT: 1 + KUBERNETES_CPU_REQUEST: 1 + KUBERNETES_MEMORY_LIMIT: 2Gi + BUILD_DIR: build-docs-gmxapi + script: + - cd $BUILD_DIR + - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full + --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources + -o xml + artifacts: + reports: + junit: $BUILD_DIR/linkchecker-out.xml diff --git a/admin/gitlab-ci/release.gitlab-ci.yml b/admin/gitlab-ci/release.gitlab-ci.yml deleted file mode 100644 index 8524309b9f..0000000000 --- a/admin/gitlab-ci/release.gitlab-ci.yml +++ /dev/null @@ -1,510 +0,0 @@ -# Packages, exported artifacts, and release engineering processes. - -# Jobs running in release stage -linkchecker: - extends: - - .build-docs-webpage - stage: nightly-build - dependencies: - - webpage-gmxapi - only: - - schedules - - triggers - - merge_requests - - external_pull_requests - except: - variables: - - $GROMACS_RELEASE - variables: - KUBERNETES_CPU_LIMIT: 1 - KUBERNETES_CPU_REQUEST: 1 - KUBERNETES_MEMORY_LIMIT: 2Gi - BUILD_DIR: build-docs-gmxapi - script: - - cd $BUILD_DIR - - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full - --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources - -o xml - artifacts: - reports: - junit: $BUILD_DIR/linkchecker-out.xml - -build-archive-nightly: - extends: - - .build-archive - stage: nightly-build - needs: - - job: simple-build - artifacts: false - - job: configure-archive-nightly - artifacts: true - only: - - triggers - - schedules - except: - variables: - - $GROMACS_RELEASE - variables: - BUILD_DIR: build-package - -package-regressiontests-release: - extends: - - .regressiontests-extends-template - - .regressiontests-release-template - needs: - - job: prepare-release-version - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - - -package-archive-release: - extends: - - .build-archive - stage: release-package - needs: - - job: configure-archive-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - variables: - BUILD_DIR: build-package - -release-verify: - extends: - - .regressiontests-extends-template - - .release-verify-template - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-gcc-7-release: - extends: - - .configure-gcc-release - - .no-cache-template - - .gcc7-template - variables: - COMPILER_MAJOR_VERSION: 7 - RELEASE_BUILD_DIR: release-builds-gcc - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-gcc-7-gmxapi-release: - extends: - - .configure-gcc-release - - .configure-gmxapi-template - - .no-cache-template - - .gcc7-template - variables: - COMPILER_MAJOR_VERSION: 7 - RELEASE_BUILD_DIR: release-builds-gcc - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-gcc-7-double-release: - extends: - - .configure-gcc-release - - .no-cache-template - - .gcc7-template - variables: - COMPILER_MAJOR_VERSION: 7 - CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON - RELEASE_BUILD_DIR: release-builds-gcc - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-gcc-8-release: - extends: - - .configure-gcc-release - - .no-cache-template - - .gcc8-template - variables: - COMPILER_MAJOR_VERSION: 8 - RELEASE_BUILD_DIR: release-builds-gcc - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-clang-7-release: - extends: - - .configure-clang-release - - .no-cache-template - - .clang7-template - variables: - COMPILER_MAJOR_VERSION: 7 - RELEASE_BUILD_DIR: release-builds-clang - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-clang-7-gmxapi-release: - extends: - - .configure-clang-release - - .configure-gmxapi-template - - .no-cache-template - - .clang7-template - variables: - COMPILER_MAJOR_VERSION: 7 - RELEASE_BUILD_DIR: release-builds-clang - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -configure-clang-8-release: - extends: - - .configure-clang-release - - .no-cache-template - - .clang8-template - variables: - COMPILER_MAJOR_VERSION: 8 - RELEASE_BUILD_DIR: release-builds-clang - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - dependencies: - - package-archive-release - - package-regressiontests-release - - prepare-release-version - -build-gcc-7-release: - extends: - - .build-gcc - - .gcc7-template - stage: release-build - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-gcc-7-gmxapi-release: - extends: - - .build-gcc - - .gmxapi-extra-installs - - .gcc7-template - stage: release-build - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-gmxapi-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-gcc-7-double-release: - extends: - - .build-gcc - - .gcc7-template - stage: release-build - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-double-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-gcc-8-release: - extends: - - .build-gcc - - .gcc8-template - stage: release-build - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-8-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-clang-7-release: - extends: - - .build-clang - - .clang7-template - stage: release-build - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-7-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-clang-7-gmxapi-release: - extends: - - .build-clang - - .gmxapi-extra-installs - - .clang7-template - stage: release-build - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-7-gmxapi-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -build-clang-8-release: - extends: - - .build-clang - - .clang8-template - stage: release-build - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-8-release - artifacts: true - only: - refs: - - web - - schedules - - triggers - variables: - - $GROMACS_RELEASE - -test-gcc-7-release: - extends: - - .test-gcc - - .gcc7-template - stage: release-tests - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-release - artifacts: true - - job: build-gcc-7-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-gcc-7-gmxapi-release: - extends: - - .test-gcc - - .gmxapi-extra-installs - - .gcc7-template - stage: release-tests - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-gmxapi-release - artifacts: true - - job: build-gcc-7-gmxapi-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-gcc-7-double-release: - extends: - - .test-gcc - - .gcc7-template - stage: release-tests - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-7-double-release - artifacts: true - - job: build-gcc-7-double-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-gcc-8-release: - extends: - - .test-gcc - - .gcc8-template - stage: release-tests - variables: - BUILD_DIR: release-builds-gcc - needs: - - job: configure-gcc-8-release - artifacts: true - - job: build-gcc-8-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-clang-7-release: - extends: - - .test-clang - - .clang7-template - stage: release-tests - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-7-release - artifacts: true - - job: build-clang-7-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-clang-7-gmxapi-release: - extends: - - .test-clang - - .gmxapi-extra-installs - - .clang7-template - stage: release-tests - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-7-gmxapi-release - artifacts: true - - job: build-clang-7-gmxapi-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE - -test-clang-8-release: - extends: - - .test-clang - - .clang8-template - stage: release-tests - variables: - BUILD_DIR: release-builds-clang - needs: - - job: configure-clang-8-release - artifacts: true - - job: build-clang-8-release - artifacts: true - only: - refs: - - triggers - - web - - schedules - variables: - - $GROMACS_RELEASE diff --git a/admin/gitlab-ci/testing-matrix.gitlab-ci.yml b/admin/gitlab-ci/testing-matrix.gitlab-ci.yml index 4ce279a033..ca4a2b7c3f 100644 --- a/admin/gitlab-ci/testing-matrix.gitlab-ci.yml +++ b/admin/gitlab-ci/testing-matrix.gitlab-ci.yml @@ -1,3 +1,20 @@ +# Initial build that always needs to pass before follow-up stages run +simple-build: + extends: + - .simple-build-template + - .build-cache-template + - .variables:default + - .gcc-before-script-template + - .build-gcc-template + - .gcc7-template + variables: + COMPILER_MAJOR_VERSION: 7 + BUILD_DIR: simple-build + except: + variables: + - $GROMACS_RELEASE + +# Jobs running in first pre-build stage .configure-extends-template: extends: @@ -11,25 +28,6 @@ - .no-cache-template - .variables:default -.build-extends-template: - extends: - - .binary-build-template - - .build-cache-template - - .variables:default - -.test-extends-template: - extends: - - .test-base-template - - .pull-cache-template - - .test-script-template - - .variables:default - -.regressiontests-extends-template: - extends: - - .no-cache-template - - .variables:default - - # Templates for configuration stage .configure-gcc: extends: @@ -48,91 +46,40 @@ - .configure-gcc - .cuda-template -.configure-clang: - extends: - - .configure-extends-template - - .clang-before-script-template - - .build-clang-template - -.configure-clang-release: - extends: - - .configure-release-extends-template - - .clang-before-script-template - - .build-clang-template - -# Templates for build stage -.build-archive: - extends: - - .build-extends-template - - .documentation-before-script-template - - .build-docs-binary-template - - .archive-build-template - -.build-gcc: - extends: - - .build-extends-template - - .gcc-before-script-template - - .build-gcc-template - -.build-clang: - extends: - - .build-extends-template - - .clang-before-script-template - - .build-clang-template - -.build-gcc-cuda: - extends: - - .build-gcc - - .cuda-template - -# Templates for test stage -.test-gcc: - extends: - - .test-extends-template - - .gcc-before-script-template - - .test-gcc-template - -.test-gcc-cuda: - extends: - - .test-gcc - - .cuda-template - -.test-clang: - extends: - - .test-extends-template - - .clang-before-script-template - - .test-clang-template - -# Special job to package regressiontest files and have them available for testing -# Runs during pre-build -prepare-regressiontests: - extends: - - .regressiontests-extends-template - - .regressiontests-template - -prepare-release-version: +configure-gcc-7: extends: - - .regressiontests-extends-template - - .release-version-template + - .configure-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + variables: + COMPILER_MAJOR_VERSION: 7 + except: + variables: + - $GROMACS_RELEASE -# Initial build that always needs to pass before follow-up stages run -simple-build: +configure-gcc-7-release: extends: - - .simple-build-template - - .build-cache-template - - .variables:default - - .gcc-before-script-template - - .build-gcc-template + - .configure-gcc-release + - .no-cache-template - .gcc7-template variables: COMPILER_MAJOR_VERSION: 7 - BUILD_DIR: simple-build - except: + RELEASE_BUILD_DIR: release-builds-gcc + only: + refs: + - web + - schedules + - triggers variables: - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version -# Jobs running in first pre-build stage -configure-gcc-7: +configure-gcc-7-simd-sse41: extends: - .configure-gcc - .gcc7-template @@ -141,38 +88,81 @@ configure-gcc-7: artifacts: false variables: COMPILER_MAJOR_VERSION: 7 + CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" except: variables: - $GROMACS_RELEASE -configure-gcc-7-gmxapi: +configure-gcc-7-double: extends: - .configure-gcc - - .configure-gmxapi-template - .gcc7-template needs: - job: simple-build artifacts: false variables: COMPILER_MAJOR_VERSION: 7 + CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON except: variables: - $GROMACS_RELEASE -configure-gcc-7-double: +configure-gcc-7-double-release: + extends: + - .configure-gcc-release + - .no-cache-template + - .gcc7-template + variables: + COMPILER_MAJOR_VERSION: 7 + CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON + RELEASE_BUILD_DIR: release-builds-gcc + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version + +configure-gcc-7-gmxapi: extends: - .configure-gcc + - .configure-gmxapi-template - .gcc7-template needs: - job: simple-build artifacts: false variables: COMPILER_MAJOR_VERSION: 7 - CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON except: variables: - $GROMACS_RELEASE +configure-gcc-7-gmxapi-release: + extends: + - .configure-gcc-release + - .configure-gmxapi-template + - .no-cache-template + - .gcc7-template + variables: + COMPILER_MAJOR_VERSION: 7 + RELEASE_BUILD_DIR: release-builds-gcc + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version + configure-gcc-8: extends: - .configure-gcc @@ -186,6 +176,26 @@ configure-gcc-8: variables: - $GROMACS_RELEASE +configure-gcc-8-release: + extends: + - .configure-gcc-release + - .no-cache-template + - .gcc8-template + variables: + COMPILER_MAJOR_VERSION: 8 + RELEASE_BUILD_DIR: release-builds-gcc + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version + configure-gcc-8-cuda-10.2: extends: - .configure-gcc-cuda @@ -197,16 +207,31 @@ configure-gcc-8-cuda-10.2: variables: - $GROMACS_RELEASE -configure-gcc-7-simd-sse41: +.configure-clang: extends: - - .configure-gcc - - .gcc7-template + - .configure-extends-template + - .clang-before-script-template + - .build-clang-template + +.configure-clang-release: + extends: + - .configure-release-extends-template + - .clang-before-script-template + - .build-clang-template + +# For version of clang before 7, we need to always provide the full version +# Use something like this instead in the download script: +# APT_COMPILER_VERSION=$(($COMPILER_MAJOR_VERSION < 7 ? "${COMPILER_MAJOR_VERSION}.0" : $COMPILER_MAJOR_VERSION)) +configure-clang-6: + extends: + - .configure-clang + - .clang6-template needs: - job: simple-build artifacts: false variables: - COMPILER_MAJOR_VERSION: 7 - CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1" + COMPILER_MAJOR_VERSION: "6.0" + CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF except: variables: - $GROMACS_RELEASE @@ -224,6 +249,26 @@ configure-clang-7: variables: - $GROMACS_RELEASE +configure-clang-7-release: + extends: + - .configure-clang-release + - .no-cache-template + - .clang7-template + variables: + COMPILER_MAJOR_VERSION: 7 + RELEASE_BUILD_DIR: release-builds-clang + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version + configure-clang-7-gmxapi: extends: - .configure-clang @@ -238,104 +283,136 @@ configure-clang-7-gmxapi: variables: - $GROMACS_RELEASE -configure-clang-8: +configure-clang-7-gmxapi-release: extends: - - .configure-clang - - .clang8-template - needs: - - job: simple-build - artifacts: false + - .configure-clang-release + - .configure-gmxapi-template + - .no-cache-template + - .clang7-template variables: - COMPILER_MAJOR_VERSION: 8 - except: + COMPILER_MAJOR_VERSION: 7 + RELEASE_BUILD_DIR: release-builds-clang + only: + refs: + - web + - schedules + - triggers variables: - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version -# For version of clang before 7, we need to always provide the full version -# Use something like this instead in the download script: -# APT_COMPILER_VERSION=$(($COMPILER_MAJOR_VERSION < 7 ? "${COMPILER_MAJOR_VERSION}.0" : $COMPILER_MAJOR_VERSION)) -configure-clang-6: +configure-clang-8: extends: - .configure-clang - - .clang6-template + - .clang8-template needs: - job: simple-build artifacts: false variables: - COMPILER_MAJOR_VERSION: "6.0" - CMAKE_MPI_OPTIONS: -DGMX_OPENMP=OFF + COMPILER_MAJOR_VERSION: 8 except: variables: - $GROMACS_RELEASE -configure-clang-tidy: +configure-clang-8-release: extends: - - .configure-clang - - .clang7-template - needs: - - job: simple-build - artifacts: false + - .configure-clang-release + - .no-cache-template + - .clang8-template variables: - BUILD_DIR: build-clang-tidy - COMPILER_MAJOR_VERSION: 7 - CMAKE_EXTRA_OPTIONS: -DCLANG_TIDY=clang-tidy-$COMPILER_MAJOR_VERSION -DGMX_CLANG_TIDY=ON -DGMX_COMPILER_WARNINGS=ON - EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION - except: + COMPILER_MAJOR_VERSION: 8 + RELEASE_BUILD_DIR: release-builds-clang + only: + refs: + - web + - schedules + - triggers variables: - $GROMACS_RELEASE + dependencies: + - package-archive-release + - package-regressiontests-release + - prepare-release-version -# Only running in scheduled pipelines that are not release builds -configure-archive-nightly: - stage: nightly-configure - only: - - triggers - - schedules +# Jobs running during build stage + +.build-extends-template: + extends: + - .binary-build-template + - .build-cache-template + - .variables:default + +.build-gcc: + extends: + - .build-extends-template + - .gcc-before-script-template + - .build-gcc-template + +.build-gcc-cuda: + extends: + - .build-gcc + - .cuda-template + +build-gcc-7: + extends: + - .build-gcc + - .gcc7-template needs: - job: simple-build artifacts: false + - job: configure-gcc-7 + artifacts: true except: variables: - $GROMACS_RELEASE + +build-gcc-7-release: extends: - - .configure-docs + - .build-gcc + - .gcc7-template + stage: release-build variables: - BUILD_DIR: build-package - CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None - CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF - CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF - -configure-archive-release: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-7-release + artifacts: true only: refs: - web - - triggers - schedules + - triggers variables: - $GROMACS_RELEASE +build-gcc-7-simd-sse41: extends: - - .configure-docs - variables: - BUILD_DIR: build-package - CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None - CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF - CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF + - .build-gcc + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: configure-gcc-7-simd-sse41 + artifacts: true + except: + variables: + - $GROMACS_RELEASE -# Jobs running during build stage -build-gcc-7: +build-gcc-7-double: extends: - .build-gcc - .gcc7-template needs: - job: simple-build artifacts: false - - job: configure-gcc-7 + - job: configure-gcc-7-double artifacts: true except: variables: - $GROMACS_RELEASE - build-gcc-7-gmxapi: extends: - .build-gcc @@ -350,16 +427,40 @@ build-gcc-7-gmxapi: variables: - $GROMACS_RELEASE -build-gcc-7-double: +build-gcc-7-double-release: extends: - .build-gcc - .gcc7-template + stage: release-build + variables: + BUILD_DIR: release-builds-gcc needs: - - job: simple-build - artifacts: false - - job: configure-gcc-7-double + - job: configure-gcc-7-double-release artifacts: true - except: + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + +build-gcc-7-gmxapi-release: + extends: + - .build-gcc + - .gmxapi-extra-installs + - .gcc7-template + stage: release-build + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-7-gmxapi-release + artifacts: true + only: + refs: + - web + - schedules + - triggers variables: - $GROMACS_RELEASE @@ -376,6 +477,24 @@ build-gcc-8: variables: - $GROMACS_RELEASE +build-gcc-8-release: + extends: + - .build-gcc + - .gcc8-template + stage: release-build + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-8-release + artifacts: true + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + build-gcc-8-cuda-10.2: extends: - .build-gcc-cuda @@ -389,14 +508,20 @@ build-gcc-8-cuda-10.2: variables: - $GROMACS_RELEASE -build-gcc-7-simd-sse41: +.build-clang: extends: - - .build-gcc - - .gcc7-template + - .build-extends-template + - .clang-before-script-template + - .build-clang-template + +build-clang-6: + extends: + - .build-clang + - .clang6-template needs: - job: simple-build artifacts: false - - job: configure-gcc-7-simd-sse41 + - job: configure-clang-6 artifacts: true except: variables: @@ -415,6 +540,24 @@ build-clang-7: variables: - $GROMACS_RELEASE +build-clang-7-release: + extends: + - .build-clang + - .clang7-template + stage: release-build + variables: + BUILD_DIR: release-builds-clang + needs: + - job: configure-clang-7-release + artifacts: true + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + build-clang-7-gmxapi: extends: - .build-clang @@ -429,6 +572,25 @@ build-clang-7-gmxapi: variables: - $GROMACS_RELEASE +build-clang-7-gmxapi-release: + extends: + - .build-clang + - .gmxapi-extra-installs + - .clang7-template + stage: release-build + variables: + BUILD_DIR: release-builds-clang + needs: + - job: configure-clang-7-gmxapi-release + artifacts: true + only: + refs: + - web + - schedules + - triggers + variables: + - $GROMACS_RELEASE + build-clang-8: extends: - .build-clang @@ -442,20 +604,46 @@ build-clang-8: variables: - $GROMACS_RELEASE -build-clang-6: +build-clang-8-release: extends: - .build-clang - - .clang6-template + - .clang8-template + stage: release-build + variables: + BUILD_DIR: release-builds-clang needs: - - job: simple-build - artifacts: false - - job: configure-clang-6 + - job: configure-clang-8-release artifacts: true - except: + only: + refs: + - web + - schedules + - triggers variables: - $GROMACS_RELEASE + # Jobs running during test stage + +.test-extends-template: + extends: + - .test-base-template + - .pull-cache-template + - .test-script-template + - .variables:default + +# Templates for test stage +.test-gcc: + extends: + - .test-extends-template + - .gcc-before-script-template + - .test-gcc-template + +.test-gcc-cuda: + extends: + - .test-gcc + - .cuda-template + test-gcc-7: extends: - .test-gcc @@ -468,15 +656,34 @@ test-gcc-7: variables: - $GROMACS_RELEASE -test-gcc-7-gmxapi: +test-gcc-7-release: + extends: + - .test-gcc + - .gcc7-template + stage: release-tests + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-7-release + artifacts: true + - job: build-gcc-7-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + +test-gcc-7-simd-sse41: extends: - .test-gcc - - .gmxapi-extra-installs - .gcc7-template needs: - job: simple-build artifacts: false - - job: build-gcc-7-gmxapi + - job: build-gcc-7-simd-sse41 except: variables: - $GROMACS_RELEASE @@ -493,6 +700,60 @@ test-gcc-7-double: variables: - $GROMACS_RELEASE +test-gcc-7-double-release: + extends: + - .test-gcc + - .gcc7-template + stage: release-tests + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-7-double-release + artifacts: true + - job: build-gcc-7-double-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + +test-gcc-7-gmxapi: + extends: + - .test-gcc + - .gmxapi-extra-installs + - .gcc7-template + needs: + - job: simple-build + artifacts: false + - job: build-gcc-7-gmxapi + except: + variables: + - $GROMACS_RELEASE + +test-gcc-7-gmxapi-release: + extends: + - .test-gcc + - .gmxapi-extra-installs + - .gcc7-template + stage: release-tests + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-7-gmxapi-release + artifacts: true + - job: build-gcc-7-gmxapi-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + test-gcc-8: extends: - .test-gcc @@ -505,6 +766,26 @@ test-gcc-8: variables: - $GROMACS_RELEASE +test-gcc-8-release: + extends: + - .test-gcc + - .gcc8-template + stage: release-tests + variables: + BUILD_DIR: release-builds-gcc + needs: + - job: configure-gcc-8-release + artifacts: true + - job: build-gcc-8-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + test-gcc-8-cuda-10.2: variables: KUBERNETES_EXTENDED_RESOURCE_NAME: "nvidia.com/gpu" @@ -520,14 +801,20 @@ test-gcc-8-cuda-10.2: variables: - $GROMACS_RELEASE -test-gcc-7-simd-sse41: +.test-clang: extends: - - .test-gcc - - .gcc7-template + - .test-extends-template + - .clang-before-script-template + - .test-clang-template + +test-clang-6: + extends: + - .test-clang + - .clang6-template needs: - job: simple-build artifacts: false - - job: build-gcc-7-simd-sse41 + - job: build-clang-6 except: variables: - $GROMACS_RELEASE @@ -544,6 +831,26 @@ test-clang-7: variables: - $GROMACS_RELEASE +test-clang-7-release: + extends: + - .test-clang + - .clang7-template + stage: release-tests + variables: + BUILD_DIR: release-builds-clang + needs: + - job: configure-clang-7-release + artifacts: true + - job: build-clang-7-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + test-clang-7-gmxapi: extends: - .test-clang @@ -557,6 +864,27 @@ test-clang-7-gmxapi: variables: - $GROMACS_RELEASE +test-clang-7-gmxapi-release: + extends: + - .test-clang + - .gmxapi-extra-installs + - .clang7-template + stage: release-tests + variables: + BUILD_DIR: release-builds-clang + needs: + - job: configure-clang-7-gmxapi-release + artifacts: true + - job: build-clang-7-gmxapi-release + artifacts: true + only: + refs: + - triggers + - web + - schedules + variables: + - $GROMACS_RELEASE + test-clang-8: extends: - .test-clang @@ -569,14 +897,22 @@ test-clang-8: variables: - $GROMACS_RELEASE -test-clang-6: +test-clang-8-release: extends: - .test-clang - - .clang6-template + - .clang8-template + stage: release-tests + variables: + BUILD_DIR: release-builds-clang needs: - - job: simple-build - artifacts: false - - job: build-clang-6 - except: + - job: configure-clang-8-release + artifacts: true + - job: build-clang-8-release + artifacts: true + only: + refs: + - triggers + - web + - schedules variables: - $GROMACS_RELEASE -- 2.22.0