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
13 KUBERNETES_CPU_LIMIT: 1
14 KUBERNETES_CPU_REQUEST: 1
15 KUBERNETES_MEMORY_REQUEST: 2Gi
17 - cmake -P cmake/gmxVersionInfo.cmake &> version.json
22 # Special job to package regressiontest files and have them available for testing
23 # Runs during pre-build
24 # Set up to only fetch the files and prepare everything for merge requests
25 regressiontests:prepare:
28 - .rules:merge-requests
30 image: biophysics/gcc-gromacs
31 stage: configure-build
33 KUBERNETES_CPU_LIMIT: 1
34 KUBERNETES_CPU_REQUEST: 1
35 KUBERNETES_MEMORY_REQUEST: 2Gi
36 # Always clone the default version for this branch, master in this case
38 - export REGTESTBRANCH=master
39 - if [[ ! -d regressiontests ]] ; then
40 mkdir regressiontests ;
46 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
47 - git checkout -qf FETCH_HEAD
50 - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
51 - echo "Build regressiontests for branch $REGTESTBRANCH"
52 - mv gmx-regressiontests.tar.gz ..
56 - gmx-regressiontests.tar.gz
58 regressiontests:package:
61 - .rules:nightly-only-for-release
63 # Docker image uploaded to dockerhub by user eriklindahl
64 # TODO: Get DockerFile for admin/dockerfiles
65 image: biophysics/gcc-gromacs
66 stage: release-package
68 KUBERNETES_CPU_LIMIT: 1
69 KUBERNETES_CPU_REQUEST: 1
70 KUBERNETES_MEMORY_REQUEST: 2Gi
72 - job: prepare-release-version
74 - VERSION=`cat version.json |
75 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
76 - REGTESTNAME="regressiontests-"$VERSION
77 - if [[ $GROMACS_RELEASE != "true" ]] ; then
78 REGTESTNAME=$REGTESTNAME-dev ;
80 - export REGTESTBRANCH=master
81 - if [[ $CI_COMMIT_REF_NAME == "master" || $CI_COMMIT_REF_NAME == "release-20"[1-2][0-9] ]] ; then
82 export REGTESTBRANCH=$CI_COMMIT_REF_NAME ;
84 - if [[ ! -d regressiontests ]] ; then
85 mkdir regressiontests ;
91 - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
92 - git checkout -qf FETCH_HEAD
95 - git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
96 - git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD
97 - mv $REGTESTNAME.tar.gz gmx-regressiontests.tar.gz ..
98 - echo "Build regressiontests for branch $REGTESTBRANCH"
102 - regressiontests-*.tar.gz
103 - gmx-regressiontests.tar.gz
105 archive:configure:nightly:
108 - .rules:nightly-not-for-release
109 stage: nightly-configure
112 BUILD_DIR: build-package
113 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
114 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
115 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
117 archive:configure:release:
120 - .rules:nightly-only-for-release
122 BUILD_DIR: build-package
123 CMAKE_SIMD_OPTIONS: -DGMX_SIMD=None
124 CMAKE_EXTRA_OPTIONS: -DGMX_BUILD_HELP=on -DGMX_USE_RDTSCP=OFF
125 CMAKE_MPI_OPTIONS: -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=OFF
127 # Right now we need to use an ugly hack to move the original build directory
128 # and the ccache files out of the build archive, as it is not possible to use
129 # the custom build directory due to https://gitlab.com/gitlab-org/gitlab-runner/issues/4203
130 # As soon as this is resolved we should use the separate build directories instead of
131 # manually hacking things. TODO: #3361
135 - .gromacs:base:build
137 - .before_script:default
139 image: gromacs/ci-docs-llvm:master
141 KUBERNETES_CPU_LIMIT: 4
142 KUBERNETES_CPU_REQUEST: 2
143 KUBERNETES_MEMORY_REQUEST: 4Gi
145 - rm -rf gromacs*tar.gz
147 - cmake --build . --target gmx -- -j4 2>&1 | tee buildLogFile.log
148 - cmake --build . --target man -- -j4 2>&1 | tee manBuildLogFile.log
149 - cmake --build . --target completion -- -j4 2>&1 | tee completionBuildLogFile.log
150 - cmake --build . --target install-guide -- -j4 2>&1 | tee installGuideBuildLogFile.log
151 - cmake --build . --target reference_checksum -- -j4 2>&1 | tee checksumBuildLogFile.log
152 - cmake --build . --target package_source -- -j4 2>&1 | tee packageBuildLogFile.log
153 - awk '/warning/,/warning.*generated|^$/' buildLogFile.log manBuildLogFile.log
154 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
155 packageBuildLogFile.log | grep -v "CMake" | tee buildErrors.log || true
156 - grep "cannot be built" buildLogFile.log manBuildLogFile.log
157 completionBuildLogFile.log installGuideBuildLogFile.log checksumBuildLogFile.log
158 packageBuildLogFile.log | tee -a buildErrors.log || true
159 - if [ -s buildErrors.log ] ; then echo "Found warnings during build"; cat buildErrors.log; exit 1; fi
160 - mv gromacs*tar.gz ..
162 # ugly hack begins here
164 - SOURCETARBALL=`ls gromacs*tar.gz`
165 - mv $SOURCETARBALL tempdir
167 - tar -xf $SOURCETARBALL
168 - rm -rf gromacs-*/$BUILD_DIR
169 - tar -c --gzip -f $SOURCETARBALL gromacs-*/
170 - mv $SOURCETARBALL ..
184 - .rules:nightly-not-for-release
187 - job: archive:configure:nightly
189 BUILD_DIR: build-package
194 - .rules:nightly-only-for-release
195 stage: release-package
197 - job: archive:configure:release
199 BUILD_DIR: build-package
202 image: biophysics/gcc-gromacs
203 stage: release-verify
206 - .rules:nightly-only-for-release
210 KUBERNETES_CPU_LIMIT: 1
211 KUBERNETES_CPU_REQUEST: 1
212 KUBERNETES_MEMORY_REQUEST: 2Gi
214 - VERSION=`cat version.json |
215 python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
216 - if [[ $GROMACS_RELEASE != "true" ]] ; then
217 VERSION=$VERSION-dev ;
219 - REGTEST_COMPARE=`cat version.json |
220 python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"`
221 - SOURCENAME=gromacs-$VERSION
222 - SOURCETARBALL=$SOURCENAME.tar.gz
223 - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'`
224 - REGTESTNAME=regressiontests-$VERSION
225 - REGTESTTARBALL=$REGTESTNAME.tar.gz
226 - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'`
227 - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM"
228 - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM"
229 - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE"
230 - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then
231 echo "Mismatch in regressiontest md5sums";
236 - regressiontests:package
237 - prepare-release-version
239 archive:nightly-webpage:
242 - .rules:nightly-not-for-release
243 stage: nightly-deploy
249 BUILD_DIR: build-docs
251 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
257 archive:full-release:
260 - .rules:nightly-only-for-release
261 stage: release-deploy
263 - webpage:build:release
265 - regressiontests:package
267 BUILD_DIR: release-doc-builds
269 - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
275 - regressiontests-*tar.gz