1 # Packages, exported artifacts, and release engineering processes.
3 .release-version-template:
4 # Docker image uploaded to dockerhub by user eriklindahl
5 # TODO: Get DockerFile for admin/dockerfiles
6 image: biophysics/gcc-gromacs
10 KUBERNETES_CPU_LIMIT: 1
11 KUBERNETES_CPU_REQUEST: 1
12 KUBERNETES_MEMORY_LIMIT: 2Gi
22 - cmake -P cmake/gmxVersionInfo.cmake &> version.json
28 prepare-release-version:
30 - .regressiontests-prepare-extends-template
31 - .release-version-template
33 # Special job to package regressiontest files and have them available for testing
34 # Runs during pre-build
35 # Set up to only fetch the files and prepare everything for merge requests
36 .regressiontests-template:
37 image: biophysics/gcc-gromacs
38 stage: configure-build
41 KUBERNETES_CPU_LIMIT: 1
42 KUBERNETES_CPU_REQUEST: 1
43 KUBERNETES_MEMORY_LIMIT: 2Gi
53 # Always clone the default version for this branch, master in this case
55 - export REGTESTBRANCH=master
56 - if [[ ! -d regressiontests ]] ; then
57 mkdir regressiontests ;
63 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
64 - git checkout -qf FETCH_HEAD
67 - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
68 - echo "Build regressiontests for branch $REGTESTBRANCH"
69 - mv gmx-regressiontests.tar.gz ..
73 - gmx-regressiontests.tar.gz
75 .regressiontests-release-template:
76 # Docker image uploaded to dockerhub by user eriklindahl
77 # TODO: Get DockerFile for admin/dockerfiles
78 image: biophysics/gcc-gromacs
79 stage: release-package
82 KUBERNETES_CPU_LIMIT: 1
83 KUBERNETES_CPU_REQUEST: 1
84 KUBERNETES_MEMORY_LIMIT: 2Gi
93 - VERSION=`cat version.json |
94 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
95 - REGTESTNAME="regressiontests-"$VERSION
96 - if [[ $GROMACS_RELEASE != "true" ]] ; then
97 REGTESTNAME=$REGTESTNAME-dev ;
99 - export REGTESTBRANCH=master
100 - if [[ $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "release-20"[1-2][0-9] ]] ; then
101 export REGTESTBRANCH=$CI_COMMIT_REF_NAME ;
103 - if [[ ! -d regressiontests ]] ; then
104 mkdir regressiontests ;
110 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
111 - git checkout -qf FETCH_HEAD
114 - git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
115 - mv $REGTESTNAME.tar.gz ..
116 - echo "Build regressiontests for branch $REGTESTBRANCH"
120 - regressiontests-*.tar.gz
122 .regressiontests-prepare-extends-template:
127 prepare-regressiontests:
129 - .regressiontests-prepare-extends-template
130 - .regressiontests-template
132 package-regressiontests-release:
134 - .regressiontests-prepare-extends-template
135 - .regressiontests-release-template
137 - job: prepare-release-version
147 configure-archive-nightly:
148 stage: nightly-configure
162 BUILD_DIR: build-package
163 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
164 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
165 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
167 configure-archive-release:
178 BUILD_DIR: build-package
179 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
180 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
181 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
183 # Right now we need to use an ugly hack to move the original build directory
184 # and the ccache files out of the build archive, as it is not possible to use
185 # the custom build directory due to https://gitlab.com/gitlab-org/gitlab-runner/issues/4203
186 # As soon as this is resolved we should use the separate build directories instead of
187 # manually hacking things. TODO
189 .archive-build-template:
190 # Dockerfiles are from dockerhub, user eriklindahl
191 image: gromacs/ci-docs-clang:master
199 KUBERNETES_CPU_LIMIT: 4
200 KUBERNETES_CPU_REQUEST: 2
201 KUBERNETES_MEMORY_LIMIT: 4Gi
203 - rm -rf gromacs*tar.gz
205 - cmake --build . --target gmx -- -j4 2>&1 | tee buildLogFile.log
206 - cmake --build . --target man -- -j4 2>&1 | tee manBuildLogFile.log
207 - cmake --build . --target completion -- -j4 2>&1 | tee completionBuildLogFile.log
208 - cmake --build . --target install-guide -- -j4 2>&1 | tee installGuideBuildLogFile.log
209 - cmake --build . --target reference_checksum -- -j4 2>&1 | tee checksumBuildLogFile.log
210 - cmake --build . --target package_source -- -j4 2>&1 | tee packageBuildLogFile.log
211 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log manBuildLogFile.log
212 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
213 packageBuildLogFile.log | grep -v "CMake" | tee buildErrors.log || true
214 - grep "cannot be built" buildLogFile.log manBuildLogFile.log
215 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
216 packageBuildLogFile.log | tee -a buildErrors.log || true
217 - if [ -s buildErrors.log ] ; then echo "Found warnings during build"; cat buildErrors.log; exit 1; fi
218 - mv gromacs*tar.gz ..
220 # ugly hack begins here
222 - SOURCETARBALL=`ls gromacs*tar.gz`
223 - mv $SOURCETARBALL tempdir
225 - tar -xf $SOURCETARBALL
226 - rm -rf gromacs-*/$BUILD_DIR
227 - tar -c --gzip -f $SOURCETARBALL gromacs-*/
228 - mv $SOURCETARBALL ..
241 - .gromacs:base:build
244 - .documentation-before-script-template
245 - .build-docs-binary-template
246 - .archive-build-template
248 build-archive-nightly:
255 - job: configure-archive-nightly
265 BUILD_DIR: build-package
267 package-archive-release:
270 stage: release-package
272 - job: configure-archive-release
282 BUILD_DIR: build-package
284 .release-verify-template:
285 image: biophysics/gcc-gromacs
286 stage: release-verify
289 KUBERNETES_CPU_LIMIT: 1
290 KUBERNETES_CPU_REQUEST: 1
291 KUBERNETES_MEMORY_LIMIT: 2Gi
301 - VERSION=`cat version.json |
302 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
303 - if [[ $GROMACS_RELEASE != "true" ]] ; then
304 VERSION=$VERSION-dev ;
306 - REGTEST_COMPARE=`cat version.json |
307 python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"`
308 - SOURCENAME=gromacs-$VERSION
309 - SOURCETARBALL=$SOURCENAME.tar.gz
310 - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'`
311 - REGTESTNAME=regressiontests-$VERSION
312 - REGTESTTARBALL=$REGTESTNAME.tar.gz
313 - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'`
314 - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM"
315 - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM"
316 - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE"
317 - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then
318 echo "Mismatch in regressiontest md5sums";
324 - .regressiontests-prepare-extends-template
325 - .release-verify-template
334 - package-archive-release
335 - package-regressiontests-release
336 - prepare-release-version
338 webpage-archive-release:
340 - .build-docs-webpage
341 - .configure-gmxapi-template
342 stage: release-deploy
351 - webpage-build-release
352 - package-archive-release
353 - package-regressiontests-release
355 BUILD_DIR: release-doc-builds
357 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
363 - regressiontests-*tar.gz