# 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
+# Special job to run cmake to output the version string and
+# regressiontest md5sum to a file
+prepare-release-version:
+ extends:
+ - .variables:default
+ - .rules:nightly-only-for-release
+ cache: {}
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
+ 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
+ KUBERNETES_MEMORY_REQUEST: 2Gi
script:
- - cmake -P cmake/gmxVersionInfo.cmake &> version.json
-
+ - cmake . -DGMX_BUILD_TARBALL=on
artifacts:
paths:
- - version.json
-
-prepare-release-version:
- extends:
- - .regressiontests-extends-template
- - .release-version-template
+ - VersionInfo-partial.cmake.cmakein
# Special job to package regressiontest files and have them available for testing
# Runs during pre-build
# Set up to only fetch the files and prepare everything for merge requests
-.regressiontests-template:
- image: biophysics/gcc-gromacs
+regressiontests:prepare:
+ extends:
+ - .variables:default
+ - .rules:merge-and-post-merge-acceptance
+ cache: {}
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
stage: configure-build
-
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
- KUBERNETES_MEMORY_LIMIT: 2Gi
- only:
- refs:
- - merge_requests
- - schedules
- - web
- except:
- variables:
- - $GROMACS_RELEASE
+ KUBERNETES_MEMORY_REQUEST: 2Gi
# Always clone the default version for this branch, master in this case
script:
- export REGTESTBRANCH=master
- - if [ ! -z $CI_MERGE_REQUEST_TARGET_BRANCH_NAME ] ; then
- if [[ ! -d regressiontests ]] ; then
- mkdir regressiontests ;
- cd regressiontests ;
- git init ;
- cd .. ;
- fi ;
- cd regressiontests ;
- git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH ;
- git checkout -qf FETCH_HEAD ;
- git clean -ffdxq ;
- git gc ;
- git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD;
- echo "Build regressiontests for branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME";
- cd ..;
- else
- touch regressiontests;
- tar czf gmx-regressiontests.tar.gz regressiontests ;
- fi;
+ - if [[ ! -z $REGRESSIONTESTBRANCH ]] ; then
+ export REGTESTBRANCH=$REGRESSIONTESTBRANCH ;
+ echo "Using $REGTESTBRANCH instead of default" ;
+ fi
+ - export CHECKOUTCOMMIT=FETCH_HEAD
+ - if [[ ! -z $REGRESSIONTESTCOMMIT ]] ; then
+ export CHECKOUTCOMMIT=$REGRESSIONTESTCOMMIT ;
+ echo "Using $CHECKOUTCOMMIT instead of head of $REGTESTBRANCH" ;
+ fi
+ - if [[ ! -d regressiontests ]] ; then
+ mkdir regressiontests ;
+ cd regressiontests ;
+ git init ;
+ cd .. ;
+ fi
+ - cd regressiontests
+ - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
+ - git checkout -qf $CHECKOUTCOMMIT
+ - git clean -ffdxq
+ - git gc
+ - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
+ - echo "Build regressiontests for branch $REGTESTBRANCH"
+ - mv gmx-regressiontests.tar.gz ..
+ - cd ..
artifacts:
paths:
- gmx-regressiontests.tar.gz
-.regressiontests-release-template:
+regressiontests:package:
+ extends:
+ - .variables:default
+ - .rules:nightly-only-for-release
+ cache: {}
# Docker image uploaded to dockerhub by user eriklindahl
# TODO: Get DockerFile for admin/dockerfiles
- image: biophysics/gcc-gromacs
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
stage: release-package
-
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
- KUBERNETES_MEMORY_LIMIT: 2Gi
- only:
- refs:
- - schedules
- - web
- - triggers
- variables:
- - $GROMACS_RELEASE
+ KUBERNETES_MEMORY_REQUEST: 2Gi
+ needs:
+ - job: prepare-release-version
script:
- - VERSION=`cat version.json |
- python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
+ - VERSION=`sed -n -e '/GMX_VERSION_STRING\b/ s/.*"\(.*\)")/\1/p' VersionInfo-partial.cmake.cmakein`
- REGTESTNAME="regressiontests-"$VERSION
- if [[ $GROMACS_RELEASE != "true" ]] ; then
REGTESTNAME=$REGTESTNAME-dev ;
- git clean -ffdxq
- git gc
- git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
- - mv $REGTESTNAME.tar.gz ..
- - echo "Build regressiontests for branch $REGTESTBRANCH"
+ - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
+ - mv $REGTESTNAME.tar.gz gmx-regressiontests.tar.gz ..
+ - echo "Build regressiontests $REGTESTNAME for branch $REGTESTBRANCH"
- cd ..
artifacts:
paths:
- regressiontests-*.tar.gz
+ - gmx-regressiontests.tar.gz
-.regressiontests-extends-template:
- extends:
- - .variables:default
- cache: {}
-
-prepare-regressiontests:
- extends:
- - .regressiontests-extends-template
- - .regressiontests-template
-
-package-regressiontests-release:
+archive:configure:nightly:
extends:
- - .regressiontests-extends-template
- - .regressiontests-release-template
- needs:
- - job: prepare-release-version
- artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
-
-configure-archive-nightly:
+ - .docs:configure
+ - .rules:nightly-not-for-release
stage: nightly-configure
- only:
- - triggers
- - schedules
- needs:
- - job: simple-build
- artifacts: false
- except:
- variables:
- - $GROMACS_RELEASE
- extends:
- - .configure-docs
+ dependencies: []
variables:
BUILD_DIR: build-package
CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
- CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
+ CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF -DGMX_USE_SIMD_KERNELS=off
CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
-configure-archive-release:
- only:
- refs:
- - web
- - triggers
- - schedules
- variables:
- - $GROMACS_RELEASE
+archive:configure:release:
extends:
- - .configure-docs
+ - .docs:configure
+ - .rules:nightly-only-for-release
variables:
BUILD_DIR: build-package
CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
- CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
+ CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF -DGMX_USE_SIMD_KERNELS=off
CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
# Right now we need to use an ugly hack to move the original build directory
# and the ccache files out of the build archive, as it is not possible to use
# the custom build directory due to https://gitlab.com/gitlab-org/gitlab-runner/issues/4203
# As soon as this is resolved we should use the separate build directories instead of
-# manually hacking things. TODO
-# Redmine #3361
-.archive-build-template:
- # Dockerfiles are from dockerhub, user eriklindahl
- image: gromacs/ci-docs-clang:master
+# manually hacking things. TODO: #3361
+.archive:build:
+ extends:
+ - .variables:default
+ - .gromacs:base:build
+ - .use-ccache
+ - .before_script:default
+ - .docs:build
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
variables:
KUBERNETES_CPU_LIMIT: 4
KUBERNETES_CPU_REQUEST: 2
- KUBERNETES_MEMORY_LIMIT: 4Gi
+ KUBERNETES_MEMORY_REQUEST: 4Gi
script:
- rm -rf gromacs*tar.gz
- cd $BUILD_DIR
when: always
expire_in: 1 week
paths:
- - $BUILD_DIR/*log
+ - $BUILD_DIR/*logs
+ - $BUILD_DIR/bin
+ - $BUILD_DIR/lib
- gromacs*tar.gz
-.build-archive:
- extends:
- - .build-extends-template
- - .documentation-before-script-template
- - .build-docs-binary-template
- - .archive-build-template
-
-build-archive-nightly:
+archive:build:
extends:
- - .build-archive
+ - .archive:build
+ - .rules:nightly-not-for-release
stage: nightly-build
needs:
- - job: simple-build
- artifacts: false
- - job: configure-archive-nightly
- artifacts: true
- only:
- - triggers
- - schedules
- except:
- variables:
- - $GROMACS_RELEASE
+ - job: archive:configure:nightly
variables:
BUILD_DIR: build-package
-package-archive-release:
+archive:package:
extends:
- - .build-archive
+ - .archive:build
+ - .rules:nightly-only-for-release
stage: release-package
needs:
- - job: configure-archive-release
- artifacts: true
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
+ - job: archive:configure:release
variables:
BUILD_DIR: build-package
-.release-verify-template:
- image: biophysics/gcc-gromacs
+checksum-verify:
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
stage: release-verify
+ extends:
+ - .variables:default
+ - .rules:nightly-only-for-release
+ cache: {}
variables:
KUBERNETES_CPU_LIMIT: 1
KUBERNETES_CPU_REQUEST: 1
- KUBERNETES_MEMORY_LIMIT: 2Gi
-
- only:
- refs:
- - merge_requests
- - schedules
- - web
- variables:
- - $GROMACS_RELEASE
+ KUBERNETES_MEMORY_REQUEST: 2Gi
+ BUILD_DIR: build-package
script:
- - VERSION=`cat version.json |
- python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
- - if [[ $GROMACS_RELEASE != "true" ]] ; then
- VERSION=$VERSION-dev ;
+ - VALID_BUILD=true
+ - VERSION=`sed -n -e '/GMX_VERSION_STRING\b/ s/.*"\(.*\)")/\1/p' VersionInfo-partial.cmake.cmakein`
+ - 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}'`
+ - REGTEST_COMPARE=`sed -n -e '/REGRESSIONTEST_MD5SUM/ s/.*"\(.*\)")/\1/p' VersionInfo-partial.cmake.cmakein`
+ - 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
+ - if [[ "$REGTEST_COMPARE" != "$REGTEST_MD5SUM" && "$GROMACS_RELEASE" == "true" ]] ; then
echo "Mismatch in regressiontest md5sums";
+ VALID_BUILD=false;
+ fi
+ - if [[ "$VALID_BUILD" != "true" ]] ; then
exit 1;
fi
+ dependencies:
+ - archive:package
+ - regressiontests:package
+ - prepare-release-version
-release-verify:
+version-verify:
+ image: ${CI_REGISTRY}/gromacs/gromacs/ci-ubuntu-20.04-llvm-7-docs
+ stage: release-verify
extends:
- - .regressiontests-extends-template
- - .release-verify-template
- only:
- refs:
- - triggers
- - web
- - schedules
- variables:
- - $GROMACS_RELEASE
+ - .variables:default
+ - .rules:nightly-only-for-release
+ cache: {}
+
+ variables:
+ KUBERNETES_CPU_LIMIT: 1
+ KUBERNETES_CPU_REQUEST: 1
+ KUBERNETES_MEMORY_REQUEST: 2Gi
+ BUILD_DIR: release-doc-builds
+ script:
+ - VALID_BUILD=true
+ - VERSION=`sed -n -e '/GMX_VERSION_STRING\b/ s/.*"\(.*\)")/\1/p' VersionInfo-partial.cmake.cmakein`
+ - if [[ "$GROMACS_RELEASE" != "true" ]] ; then
+ VERSION="$VERSION"-dev ;
+ fi
+ - VERSION_FROM_BINARY=`"${BUILD_DIR}"/bin/gmx --version | grep "GROMACS version" | awk '{print $3}'`
+ - echo "Version name from CMake = $VERSION"
+ - echo "Version name from binary = $VERSION_FROM_BINARY"
+ - if [[ "$VERSION" != "$VERSION_FROM_BINARY" && "$GROMACS_RELEASE" == "true" ]] ; then
+ echo "Version names don't match";
+ VALID_BUILD=false;
+ fi
+ - if [[ "$VALID_BUILD" != "true" ]] ; then
+ exit 1;
+ fi
dependencies:
- - package-archive-release
- - package-regressiontests-release
+ - webpage:dependencies
- prepare-release-version
-webpage-archive-release:
+archive:nightly-webpage:
+ extends:
+ - .webpage:build
+ - .rules:nightly-not-for-release
+ stage: nightly-deploy
+ needs:
+ - job: linkchecker
+ artifacts: false
+ - job: webpage:build
+ variables:
+ BUILD_DIR: build-docs
+ before_script:
+ - eval $(ssh-agent -s)
+ - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
+ - mkdir -p ~/.ssh
+ - chmod 700 ~/.ssh
+ - ssh-keyscan manual.gromacs.org > ~/.ssh/known_hosts # Force overwrite the known hosts so we only have that one key in it.
+ - chmod 644 ~/.ssh/known_hosts
+ script:
+ - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
+ - rsync --chmod=u+rwX,g+rwX,o+rX -av $BUILD_DIR/docs/html/* $BUILD_DIR/docs/html/.[a-z]* pbauer@manual.gromacs.org:/var/www/manual/nightly/
+
+ artifacts:
+ when: always
+ paths:
+ - webpage.tar.gz
+
+archive:full-release:
extends:
- - .build-docs-webpage
- - .configure-gmxapi-template
+ - .webpage:build
+ - .rules:nightly-only-for-release
stage: release-deploy
- only:
- refs:
- - web
- - triggers
- - schedules
- variables:
- - $GROMACS_RELEASE
dependencies:
- - webpage-build-release
- - package-archive-release
- - package-regressiontests-release
+ - webpage:build:release
+ - archive:package
+ - regressiontests:package
variables:
BUILD_DIR: release-doc-builds
script: