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-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
52 # Always clone the default version for this branch, master in this case
54 - export REGTESTBRANCH=master
55 - if [ ! -z $CI_MERGE_REQUEST_TARGET_BRANCH_NAME ] ; then
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 $CI_MERGE_REQUEST_TARGET_BRANCH_NAME";
71 touch regressiontests;
72 tar czf gmx-regressiontests.tar.gz regressiontests ;
76 - gmx-regressiontests.tar.gz
78 .regressiontests-release-template:
79 # Docker image uploaded to dockerhub by user eriklindahl
80 # TODO: Get DockerFile for admin/dockerfiles
81 image: biophysics/gcc-gromacs
82 stage: release-package
85 KUBERNETES_CPU_LIMIT: 1
86 KUBERNETES_CPU_REQUEST: 1
87 KUBERNETES_MEMORY_LIMIT: 2Gi
96 - VERSION=`cat version.json |
97 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
98 - REGTESTNAME="regressiontests-"$VERSION
99 - if [[ $GROMACS_RELEASE != "true" ]] ; then
100 REGTESTNAME=$REGTESTNAME-dev ;
102 - export REGTESTBRANCH=master
103 - if [[ $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "release-20"[1-2][0-9] ]] ; then
104 export REGTESTBRANCH=$CI_COMMIT_REF_NAME ;
106 - if [[ ! -d regressiontests ]] ; then
107 mkdir regressiontests ;
113 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
114 - git checkout -qf FETCH_HEAD
117 - git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
118 - mv $REGTESTNAME.tar.gz ..
119 - echo "Build regressiontests for branch $REGTESTBRANCH"
123 - regressiontests-*.tar.gz
125 .regressiontests-extends-template:
130 prepare-regressiontests:
132 - .regressiontests-extends-template
133 - .regressiontests-template
135 package-regressiontests-release:
137 - .regressiontests-extends-template
138 - .regressiontests-release-template
140 - job: prepare-release-version
150 configure-archive-nightly:
151 stage: nightly-configure
164 BUILD_DIR: build-package
165 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
166 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
167 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
169 configure-archive-release:
180 BUILD_DIR: build-package
181 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
182 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
183 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
185 # Right now we need to use an ugly hack to move the original build directory
186 # and the ccache files out of the build archive, as it is not possible to use
187 # the custom build directory due to https://gitlab.com/gitlab-org/gitlab-runner/issues/4203
188 # As soon as this is resolved we should use the separate build directories instead of
189 # manually hacking things. TODO
191 .archive-build-template:
192 # Dockerfiles are from dockerhub, user eriklindahl
193 image: gromacs/ci-docs-clang:master
195 KUBERNETES_CPU_LIMIT: 4
196 KUBERNETES_CPU_REQUEST: 2
197 KUBERNETES_MEMORY_LIMIT: 4Gi
199 - rm -rf gromacs*tar.gz
201 - cmake --build . --target gmx -- -j4 2>&1 | tee buildLogFile.log
202 - cmake --build . --target man -- -j4 2>&1 | tee manBuildLogFile.log
203 - cmake --build . --target completion -- -j4 2>&1 | tee completionBuildLogFile.log
204 - cmake --build . --target install-guide -- -j4 2>&1 | tee installGuideBuildLogFile.log
205 - cmake --build . --target reference_checksum -- -j4 2>&1 | tee checksumBuildLogFile.log
206 - cmake --build . --target package_source -- -j4 2>&1 | tee packageBuildLogFile.log
207 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log manBuildLogFile.log
208 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
209 packageBuildLogFile.log | grep -v "CMake" | tee buildErrors.log || true
210 - grep "cannot be built" buildLogFile.log manBuildLogFile.log
211 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
212 packageBuildLogFile.log | tee -a buildErrors.log || true
213 - if [ -s buildErrors.log ] ; then echo "Found warnings during build"; cat buildErrors.log; exit 1; fi
214 - mv gromacs*tar.gz ..
216 # ugly hack begins here
218 - SOURCETARBALL=`ls gromacs*tar.gz`
219 - mv $SOURCETARBALL tempdir
221 - tar -xf $SOURCETARBALL
222 - rm -rf gromacs-*/$BUILD_DIR
223 - tar -c --gzip -f $SOURCETARBALL gromacs-*/
224 - mv $SOURCETARBALL ..
237 - .build-extends-template
238 - .documentation-before-script-template
239 - .build-docs-binary-template
240 - .archive-build-template
242 build-archive-nightly:
249 - job: configure-archive-nightly
258 BUILD_DIR: build-package
260 package-archive-release:
263 stage: release-package
265 - job: configure-archive-release
275 BUILD_DIR: build-package
277 .release-verify-template:
278 image: biophysics/gcc-gromacs
279 stage: release-verify
282 KUBERNETES_CPU_LIMIT: 1
283 KUBERNETES_CPU_REQUEST: 1
284 KUBERNETES_MEMORY_LIMIT: 2Gi
294 - VERSION=`cat version.json |
295 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
296 - if [[ $GROMACS_RELEASE != "true" ]] ; then
297 VERSION=$VERSION-dev ;
299 - REGTEST_COMPARE=`cat version.json |
300 python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"`
301 - SOURCENAME=gromacs-$VERSION
302 - SOURCETARBALL=$SOURCENAME.tar.gz
303 - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'`
304 - REGTESTNAME=regressiontests-$VERSION
305 - REGTESTTARBALL=$REGTESTNAME.tar.gz
306 - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'`
307 - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM"
308 - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM"
309 - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE"
310 - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then
311 echo "Mismatch in regressiontest md5sums";
317 - .regressiontests-extends-template
318 - .release-verify-template
327 - package-archive-release
328 - package-regressiontests-release
329 - prepare-release-version
331 webpage-archive-release:
333 - .build-docs-webpage
334 - .configure-gmxapi-template
335 stage: release-deploy
344 - webpage-build-release
345 - package-archive-release
346 - package-regressiontests-release
348 BUILD_DIR: release-doc-builds
350 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
356 - regressiontests-*tar.gz