1 # Packages, exported artifacts, and release engineering processes.
3 prepare-release-version:
6 - .rules:nightly-only-for-release
8 # Docker image uploaded to dockerhub by user eriklindahl
9 # TODO: Get DockerFile for admin/dockerfiles
10 image: biophysics/gcc-gromacs
11 stage: configure-build
14 KUBERNETES_CPU_LIMIT: 1
15 KUBERNETES_CPU_REQUEST: 1
16 KUBERNETES_MEMORY_LIMIT: 2Gi
18 - cmake -P cmake/gmxVersionInfo.cmake &> version.json
24 # Special job to package regressiontest files and have them available for testing
25 # Runs during pre-build
26 # Set up to only fetch the files and prepare everything for merge requests
27 regressiontests:prepare:
30 - .rules:not-for-release
32 image: biophysics/gcc-gromacs
33 stage: configure-build
36 KUBERNETES_CPU_LIMIT: 1
37 KUBERNETES_CPU_REQUEST: 1
38 KUBERNETES_MEMORY_LIMIT: 2Gi
39 # Always clone the default version for this branch, master in this case
41 - export REGTESTBRANCH=master
42 - if [[ ! -d regressiontests ]] ; then
43 mkdir regressiontests ;
49 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
50 - git checkout -qf FETCH_HEAD
53 - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
54 - echo "Build regressiontests for branch $REGTESTBRANCH"
55 - mv gmx-regressiontests.tar.gz ..
59 - gmx-regressiontests.tar.gz
61 regressiontests:package:
64 - .rules:nightly-only-for-release
66 # Docker image uploaded to dockerhub by user eriklindahl
67 # TODO: Get DockerFile for admin/dockerfiles
68 image: biophysics/gcc-gromacs
69 stage: release-package
72 KUBERNETES_CPU_LIMIT: 1
73 KUBERNETES_CPU_REQUEST: 1
74 KUBERNETES_MEMORY_LIMIT: 2Gi
76 - job: prepare-release-version
79 - VERSION=`cat version.json |
80 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
81 - REGTESTNAME="regressiontests-"$VERSION
82 - if [[ $GROMACS_RELEASE != "true" ]] ; then
83 REGTESTNAME=$REGTESTNAME-dev ;
85 - export REGTESTBRANCH=master
86 - if [[ $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "release-20"[1-2][0-9] ]] ; then
87 export REGTESTBRANCH=$CI_COMMIT_REF_NAME ;
89 - if [[ ! -d regressiontests ]] ; then
90 mkdir regressiontests ;
96 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
97 - git checkout -qf FETCH_HEAD
100 - git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
101 - cp $REGTESTNAME.tar.gz gmx-regressiontests.tar.gz
102 - mv $REGTESTNAME.tar.gz gmx-regressiontests.tar.gz ..
103 - echo "Build regressiontests for branch $REGTESTBRANCH"
107 - regressiontests-*.tar.gz
108 - gmx-regressiontests.tar.gz
110 archive:configure:nightly:
113 - .rules:nightly-not-for-release
114 stage: nightly-configure
119 BUILD_DIR: build-package
120 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
121 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
122 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
124 archive:configure:release:
127 - .rules:nightly-only-for-release
129 BUILD_DIR: build-package
130 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
131 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
132 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
134 # Right now we need to use an ugly hack to move the original build directory
135 # and the ccache files out of the build archive, as it is not possible to use
136 # the custom build directory due to https://gitlab.com/gitlab-org/gitlab-runner/issues/4203
137 # As soon as this is resolved we should use the separate build directories instead of
138 # manually hacking things. TODO: #3361
141 - .gromacs:base:build
144 - .before_script:default
146 # Dockerfiles are from dockerhub, user eriklindahl
147 image: gromacs/ci-docs-clang:master
149 KUBERNETES_CPU_LIMIT: 4
150 KUBERNETES_CPU_REQUEST: 2
151 KUBERNETES_MEMORY_LIMIT: 4Gi
153 - rm -rf gromacs*tar.gz
155 - cmake --build . --target gmx -- -j4 2>&1 | tee buildLogFile.log
156 - cmake --build . --target man -- -j4 2>&1 | tee manBuildLogFile.log
157 - cmake --build . --target completion -- -j4 2>&1 | tee completionBuildLogFile.log
158 - cmake --build . --target install-guide -- -j4 2>&1 | tee installGuideBuildLogFile.log
159 - cmake --build . --target reference_checksum -- -j4 2>&1 | tee checksumBuildLogFile.log
160 - cmake --build . --target package_source -- -j4 2>&1 | tee packageBuildLogFile.log
161 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log manBuildLogFile.log
162 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
163 packageBuildLogFile.log | grep -v "CMake" | tee buildErrors.log || true
164 - grep "cannot be built" buildLogFile.log manBuildLogFile.log
165 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
166 packageBuildLogFile.log | tee -a buildErrors.log || true
167 - if [ -s buildErrors.log ] ; then echo "Found warnings during build"; cat buildErrors.log; exit 1; fi
168 - mv gromacs*tar.gz ..
170 # ugly hack begins here
172 - SOURCETARBALL=`ls gromacs*tar.gz`
173 - mv $SOURCETARBALL tempdir
175 - tar -xf $SOURCETARBALL
176 - rm -rf gromacs-*/$BUILD_DIR
177 - tar -c --gzip -f $SOURCETARBALL gromacs-*/
178 - mv $SOURCETARBALL ..
192 - .rules:nightly-not-for-release
197 - job: archive:configure:nightly
200 BUILD_DIR: build-package
205 - .rules:nightly-only-for-release
206 stage: release-package
208 - job: archive:configure:release
211 BUILD_DIR: build-package
214 image: biophysics/gcc-gromacs
215 stage: release-verify
218 - .rules:nightly-only-for-release
222 KUBERNETES_CPU_LIMIT: 1
223 KUBERNETES_CPU_REQUEST: 1
224 KUBERNETES_MEMORY_LIMIT: 2Gi
226 - VERSION=`cat version.json |
227 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
228 - if [[ $GROMACS_RELEASE != "true" ]] ; then
229 VERSION=$VERSION-dev ;
231 - REGTEST_COMPARE=`cat version.json |
232 python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"`
233 - SOURCENAME=gromacs-$VERSION
234 - SOURCETARBALL=$SOURCENAME.tar.gz
235 - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'`
236 - REGTESTNAME=regressiontests-$VERSION
237 - REGTESTTARBALL=$REGTESTNAME.tar.gz
238 - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'`
239 - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM"
240 - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM"
241 - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE"
242 - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then
243 echo "Mismatch in regressiontest md5sums";
248 - regressiontests:package
249 - prepare-release-version
251 archive:nightly-webpage:
254 - .rules:nightly-not-for-release
255 stage: nightly-deploy
264 BUILD_DIR: build-docs
266 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
272 archive:full-release:
275 - .rules:nightly-only-for-release
276 stage: release-deploy
278 - webpage:build:release
280 - regressiontests:package
282 BUILD_DIR: release-doc-builds
284 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
290 - regressiontests-*tar.gz