Merge .regressiontest-template.yml into archive config.
[alexxy/gromacs.git] / admin / gitlab-ci / archive.gitlab-ci.yml
1 # Packages, exported artifacts, and release engineering processes.
2
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
7   stage: configure-build
8
9   variables:
10     KUBERNETES_CPU_LIMIT: 1
11     KUBERNETES_CPU_REQUEST: 1
12     KUBERNETES_MEMORY_LIMIT: 2Gi
13
14   only:
15     refs:
16       - merge_requests
17       - schedules
18       - web
19     variables:
20       - $GROMACS_RELEASE
21   script:
22     - cmake -P cmake/gmxVersionInfo.cmake &> version.json
23
24   artifacts:
25     paths:
26       - version.json
27
28 prepare-release-version:
29   extends:
30     - .regressiontests-extends-template
31     - .release-version-template
32
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
39
40   variables:
41     KUBERNETES_CPU_LIMIT: 1
42     KUBERNETES_CPU_REQUEST: 1
43     KUBERNETES_MEMORY_LIMIT: 2Gi
44   only:
45     refs:
46       - merge_requests
47       - schedules
48       - web
49   except:
50     variables:
51       - $GROMACS_RELEASE
52   # Always clone the default version for this branch, master in this case
53   script:
54     - export REGTESTBRANCH=master
55     - if [ ! -z $CI_MERGE_REQUEST_TARGET_BRANCH_NAME ] ; then
56       if [[ ! -d regressiontests ]] ; then
57       mkdir regressiontests ;
58       cd regressiontests ;
59       git init ;
60       cd .. ;
61       fi ;
62       cd regressiontests ;
63       git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH ;
64       git checkout -qf FETCH_HEAD ;
65       git clean -ffdxq ;
66       git gc ;
67       git archive -o gmx-regressiontests.tar.gz --prefix regressiontests/ -9 HEAD;
68       echo "Build regressiontests for branch $CI_MERGE_REQUEST_TARGET_BRANCH_NAME";
69       cd ..;
70       else
71       touch regressiontests;
72       tar czf gmx-regressiontests.tar.gz regressiontests ;
73       fi;
74   artifacts:
75     paths:
76       - gmx-regressiontests.tar.gz
77
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
83
84   variables:
85     KUBERNETES_CPU_LIMIT: 1
86     KUBERNETES_CPU_REQUEST: 1
87     KUBERNETES_MEMORY_LIMIT: 2Gi
88   only:
89     refs:
90       - schedules
91       - web
92       - triggers
93     variables:
94       - $GROMACS_RELEASE
95   script:
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 ;
101       fi
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 ;
105       fi
106     - if [[ ! -d regressiontests ]] ; then
107       mkdir regressiontests ;
108       cd regressiontests ;
109       git init ;
110       cd .. ;
111       fi
112     - cd regressiontests
113     - git fetch https://gitlab.com/gromacs/gromacs-regressiontests.git $REGTESTBRANCH
114     - git checkout -qf FETCH_HEAD
115     - git clean -ffdxq
116     - git gc
117     - git archive -o $REGTESTNAME.tar.gz --prefix $REGTESTNAME/ -9 HEAD
118     - mv $REGTESTNAME.tar.gz ..
119     - echo "Build regressiontests for branch  $REGTESTBRANCH"
120     - cd ..
121   artifacts:
122     paths:
123       - regressiontests-*.tar.gz
124
125 .regressiontests-extends-template:
126   extends:
127     - .no-cache-template
128     - .variables:default
129
130 prepare-regressiontests:
131   extends:
132     - .regressiontests-extends-template
133     - .regressiontests-template
134
135 package-regressiontests-release:
136   extends:
137     - .regressiontests-extends-template
138     - .regressiontests-release-template
139   needs:
140     - job: prepare-release-version
141       artifacts: true
142   only:
143     refs:
144       - triggers
145       - web
146       - schedules
147     variables:
148       - $GROMACS_RELEASE
149
150 configure-archive-nightly:
151   stage: nightly-configure
152   only:
153     - triggers
154     - schedules
155   needs:
156     - job: simple-build
157       artifacts: false
158   except:
159     variables:
160       - $GROMACS_RELEASE
161   extends:
162     - .configure-docs
163   variables:
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
168
169 configure-archive-release:
170   only:
171     refs:
172       - web
173       - triggers
174       - schedules
175     variables:
176       - $GROMACS_RELEASE
177   extends:
178     - .configure-docs
179   variables:
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
184
185 .build-archive:
186   extends:
187     - .build-extends-template
188     - .documentation-before-script-template
189     - .build-docs-binary-template
190     - .archive-build-template
191
192 build-archive-nightly:
193   extends:
194     - .build-archive
195   stage: nightly-build
196   needs:
197     - job: simple-build
198       artifacts: false
199     - job: configure-archive-nightly
200       artifacts: true
201   only:
202     - triggers
203     - schedules
204   except:
205     variables:
206       - $GROMACS_RELEASE
207   variables:
208     BUILD_DIR: build-package
209
210 package-archive-release:
211   extends:
212     - .build-archive
213   stage: release-package
214   needs:
215     - job: configure-archive-release
216       artifacts: true
217   only:
218     refs:
219       - triggers
220       - web
221       - schedules
222     variables:
223       - $GROMACS_RELEASE
224   variables:
225     BUILD_DIR: build-package
226
227 .release-verify-template:
228   image: biophysics/gcc-gromacs
229   stage: release-verify
230
231   variables:
232     KUBERNETES_CPU_LIMIT: 1
233     KUBERNETES_CPU_REQUEST: 1
234     KUBERNETES_MEMORY_LIMIT: 2Gi
235
236   only:
237     refs:
238       - merge_requests
239       - schedules
240       - web
241     variables:
242       - $GROMACS_RELEASE
243   script:
244     - VERSION=`cat version.json |
245       python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"`
246     - if [[ $GROMACS_RELEASE != "true" ]] ; then
247       VERSION=$VERSION-dev ;
248       fi
249     - REGTEST_COMPARE=`cat version.json |
250       python3 -c "import json,sys; print(json.load(sys.stdin)['regressiontest-md5sum'])"`
251     - SOURCENAME=gromacs-$VERSION
252     - SOURCETARBALL=$SOURCENAME.tar.gz
253     - SOURCE_MD5SUM=`md5sum $SOURCETARBALL | awk '{print $1}'`
254     - REGTESTNAME=regressiontests-$VERSION
255     - REGTESTTARBALL=$REGTESTNAME.tar.gz
256     - REGTEST_MD5SUM=`md5sum $REGTESTTARBALL | awk '{print $1}'`
257     - echo "$SOURCETARBALL md5sum = $SOURCE_MD5SUM"
258     - echo "$REGTESTTARBALL md5sum = $REGTEST_MD5SUM"
259     - echo "$REGTESTTARBALL reference md5sum = $REGTEST_COMPARE"
260     - if [[ $REGTEST_COMPARE != $REGTEST_MD5SUM && $GROMACS_RELEASE == "true" ]] ; then
261       echo "Mismatch in regressiontest md5sums";
262       exit 1;
263       fi
264
265 release-verify:
266   extends:
267     - .regressiontests-extends-template
268     - .release-verify-template
269   only:
270     refs:
271       - triggers
272       - web
273       - schedules
274     variables:
275       - $GROMACS_RELEASE
276   dependencies:
277     - package-archive-release
278     - package-regressiontests-release
279     - prepare-release-version
280
281 webpage-archive-release:
282   extends:
283     - .build-docs-webpage
284     - .configure-gmxapi-template
285   stage: release-deploy
286   only:
287     refs:
288       - web
289       - triggers
290       - schedules
291     variables:
292       - $GROMACS_RELEASE
293   dependencies:
294     - webpage-build-release
295     - package-archive-release
296     - package-regressiontests-release
297   variables:
298     BUILD_DIR: release-doc-builds
299   script:
300     - tar czf webpage.tar.gz $BUILD_DIR/docs/html/
301   artifacts:
302     when: always
303     paths:
304       - webpage.tar.gz
305       - gromacs-*tar.gz
306       - regressiontests-*tar.gz
307