Reorganize release templates.
authorM. Eric Irrgang <ericirrgang@gmail.com>
Fri, 13 Mar 2020 11:10:55 +0000 (14:10 +0300)
committerPaul Bauer <paul.bauer.q@gmail.com>
Sun, 22 Mar 2020 11:09:22 +0000 (12:09 +0100)
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
admin/ci-templates/.release-template.yml [deleted file]
admin/gitlab-ci/archive.gitlab-ci.yml [new file with mode: 0644]
admin/gitlab-ci/documentation.gitlab-ci.yml
admin/gitlab-ci/lint.gitlab-ci.yml
admin/gitlab-ci/release.gitlab-ci.yml [deleted file]
admin/gitlab-ci/testing-matrix.gitlab-ci.yml

index ce48b4653560538806a7080a41f13a9d25120b83..9877a1d0b1025745e23f0c61331976538d7e177c 100644 (file)
@@ -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/.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
   # 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.
   # 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 (file)
index a4795af..0000000
+++ /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 (file)
index 0000000..e3d6a27
--- /dev/null
@@ -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
+
index de262186ddf401c633aa2098e6bdf726a60bd3a9..e38b5d87a846ae1068242bda4c2a143b1d559af4 100644 (file)
     - .configure-docs-release-template
     - .documentation-before-script-template
 
     - .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
 configure-docs:
   extends:
     - .configure-docs
@@ -54,6 +39,21 @@ configure-docs-gmxapi:
     variables:
       - $GROMACS_RELEASE
 
     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
 build-docs:
   extends:
     - .build-docs-binary
@@ -207,31 +207,3 @@ webpage-build-release:
       - $GROMACS_RELEASE
   variables:
     BUILD_DIR: release-doc-builds
       - $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
-
index b61293751b3d9f0f0ec9f0cff8b3ea5d57d8a4bf..3758efa4be12c4ed2dc25f88cff4ae9e8b309e5a 100644 (file)
@@ -1,5 +1,21 @@
 # Repository cleanliness. Source tidiness, linting, and policy compliance.
 
 # 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
 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
     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 (file)
index 8524309..0000000
+++ /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
index 4ce279a033ceb36b47982448f0bbbfc54b6c5fa6..ca4a2b7c3f78ac6d3ccc4595040be53e35d859f6 100644 (file)
@@ -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:
 
 .configure-extends-template:
   extends:
     - .no-cache-template
     - .variables:default
 
     - .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:
 # Templates for configuration stage
 .configure-gcc:
   extends:
     - .configure-gcc
     - .cuda-template
 
     - .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:
   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:
   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
     - .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
     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
   extends:
     - .configure-gcc
     - .gcc7-template
@@ -141,38 +88,81 @@ configure-gcc-7:
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
+    CMAKE_SIMD_OPTIONS: "-DGMX_SIMD=SSE4.1"
   except:
     variables:
       - $GROMACS_RELEASE
 
   except:
     variables:
       - $GROMACS_RELEASE
 
-configure-gcc-7-gmxapi:
+configure-gcc-7-double:
   extends:
     - .configure-gcc
   extends:
     - .configure-gcc
-    - .configure-gmxapi-template
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
+    CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
   except:
     variables:
       - $GROMACS_RELEASE
 
   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
   extends:
     - .configure-gcc
+    - .configure-gmxapi-template
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
   variables:
     COMPILER_MAJOR_VERSION: 7
-    CMAKE_PRECISION_OPTIONS: -DGMX_DOUBLE=ON
   except:
     variables:
       - $GROMACS_RELEASE
 
   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
 configure-gcc-8:
   extends:
     - .configure-gcc
@@ -186,6 +176,26 @@ configure-gcc-8:
     variables:
       - $GROMACS_RELEASE
 
     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
 configure-gcc-8-cuda-10.2:
   extends:
     - .configure-gcc-cuda
@@ -197,16 +207,31 @@ configure-gcc-8-cuda-10.2:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-configure-gcc-7-simd-sse41:
+.configure-clang:
   extends:
   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:
   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
   except:
     variables:
       - $GROMACS_RELEASE
@@ -224,6 +249,26 @@ configure-clang-7:
     variables:
       - $GROMACS_RELEASE
 
     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
 configure-clang-7-gmxapi:
   extends:
     - .configure-clang
@@ -238,104 +283,136 @@ configure-clang-7-gmxapi:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-configure-clang-8:
+configure-clang-7-gmxapi-release:
   extends:
   extends:
-    - .configure-clang
-    - .clang8-template
-  needs:
-    - job: simple-build
-      artifacts: false
+    - .configure-clang-release
+    - .configure-gmxapi-template
+    - .no-cache-template
+    - .clang7-template
   variables:
   variables:
-    COMPILER_MAJOR_VERSION: 8
-  except:
+    COMPILER_MAJOR_VERSION: 7
+    RELEASE_BUILD_DIR: release-builds-clang
+  only:
+    refs:
+      - web
+      - schedules
+      - triggers
     variables:
       - $GROMACS_RELEASE
     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
   extends:
     - .configure-clang
-    - .clang6-template
+    - .clang8-template
   needs:
     - job: simple-build
       artifacts: false
   variables:
   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
 
   except:
     variables:
       - $GROMACS_RELEASE
 
-configure-clang-tidy:
+configure-clang-8-release:
   extends:
   extends:
-    - .configure-clang
-    - .clang7-template
-  needs:
-    - job: simple-build
-      artifacts: false
+    - .configure-clang-release
+    - .no-cache-template
+    - .clang8-template
   variables:
   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
     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
   needs:
     - job: simple-build
       artifacts: false
+    - job: configure-gcc-7
+      artifacts: true
   except:
     variables:
       - $GROMACS_RELEASE
   except:
     variables:
       - $GROMACS_RELEASE
+
+build-gcc-7-release:
   extends:
   extends:
-    - .configure-docs
+    - .build-gcc
+    - .gcc7-template
+  stage: release-build
   variables:
   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
   only:
     refs:
       - web
-      - triggers
       - schedules
       - schedules
+      - triggers
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
+build-gcc-7-simd-sse41:
   extends:
   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
   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
 
       artifacts: true
   except:
     variables:
       - $GROMACS_RELEASE
 
-
 build-gcc-7-gmxapi:
   extends:
     - .build-gcc
 build-gcc-7-gmxapi:
   extends:
     - .build-gcc
@@ -350,16 +427,40 @@ build-gcc-7-gmxapi:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-build-gcc-7-double:
+build-gcc-7-double-release:
   extends:
     - .build-gcc
     - .gcc7-template
   extends:
     - .build-gcc
     - .gcc7-template
+  stage: release-build
+  variables:
+    BUILD_DIR: release-builds-gcc
   needs:
   needs:
-    - job: simple-build
-      artifacts: false
-    - job: configure-gcc-7-double
+    - job: configure-gcc-7-double-release
       artifacts: true
       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
 
     variables:
       - $GROMACS_RELEASE
 
@@ -376,6 +477,24 @@ build-gcc-8:
     variables:
       - $GROMACS_RELEASE
 
     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
 build-gcc-8-cuda-10.2:
   extends:
     - .build-gcc-cuda
@@ -389,14 +508,20 @@ build-gcc-8-cuda-10.2:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-build-gcc-7-simd-sse41:
+.build-clang:
   extends:
   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
   needs:
     - job: simple-build
       artifacts: false
-    - job: configure-gcc-7-simd-sse41
+    - job: configure-clang-6
       artifacts: true
   except:
     variables:
       artifacts: true
   except:
     variables:
@@ -415,6 +540,24 @@ build-clang-7:
     variables:
       - $GROMACS_RELEASE
 
     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
 build-clang-7-gmxapi:
   extends:
     - .build-clang
@@ -429,6 +572,25 @@ build-clang-7-gmxapi:
     variables:
       - $GROMACS_RELEASE
 
     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
 build-clang-8:
   extends:
     - .build-clang
@@ -442,20 +604,46 @@ build-clang-8:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-build-clang-6:
+build-clang-8-release:
   extends:
     - .build-clang
   extends:
     - .build-clang
-    - .clang6-template
+    - .clang8-template
+  stage: release-build
+  variables:
+    BUILD_DIR: release-builds-clang
   needs:
   needs:
-    - job: simple-build
-      artifacts: false
-    - job: configure-clang-6
+    - job: configure-clang-8-release
       artifacts: true
       artifacts: true
-  except:
+  only:
+    refs:
+      - web
+      - schedules
+      - triggers
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
+
 # Jobs running during test stage
 # 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
 test-gcc-7:
   extends:
     - .test-gcc
@@ -468,15 +656,34 @@ test-gcc-7:
     variables:
       - $GROMACS_RELEASE
 
     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
   extends:
     - .test-gcc
-    - .gmxapi-extra-installs
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
     - .gcc7-template
   needs:
     - job: simple-build
       artifacts: false
-    - job: build-gcc-7-gmxapi
+    - job: build-gcc-7-simd-sse41
   except:
     variables:
       - $GROMACS_RELEASE
   except:
     variables:
       - $GROMACS_RELEASE
@@ -493,6 +700,60 @@ test-gcc-7-double:
     variables:
       - $GROMACS_RELEASE
 
     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
 test-gcc-8:
   extends:
     - .test-gcc
@@ -505,6 +766,26 @@ test-gcc-8:
     variables:
       - $GROMACS_RELEASE
 
     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"
 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
 
     variables:
       - $GROMACS_RELEASE
 
-test-gcc-7-simd-sse41:
+.test-clang:
   extends:
   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
   needs:
     - job: simple-build
       artifacts: false
-    - job: build-gcc-7-simd-sse41
+    - job: build-clang-6
   except:
     variables:
       - $GROMACS_RELEASE
   except:
     variables:
       - $GROMACS_RELEASE
@@ -544,6 +831,26 @@ test-clang-7:
     variables:
       - $GROMACS_RELEASE
 
     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
 test-clang-7-gmxapi:
   extends:
     - .test-clang
@@ -557,6 +864,27 @@ test-clang-7-gmxapi:
     variables:
       - $GROMACS_RELEASE
 
     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
 test-clang-8:
   extends:
     - .test-clang
@@ -569,14 +897,22 @@ test-clang-8:
     variables:
       - $GROMACS_RELEASE
 
     variables:
       - $GROMACS_RELEASE
 
-test-clang-6:
+test-clang-8-release:
   extends:
     - .test-clang
   extends:
     - .test-clang
-    - .clang6-template
+    - .clang8-template
+  stage: release-tests
+  variables:
+    BUILD_DIR: release-builds-clang
   needs:
   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
     variables:
       - $GROMACS_RELEASE