3646ffbfc22bb9cf4723c674efaef45ed512a0ba
[alexxy/gromacs.git] / admin / gitlab-ci / global.gitlab-ci.yml
1 # Mix-in job definitions.
2
3 # Centralized definitions of common job parameter values.
4
5 .variables:default:
6   variables:
7     KUBERNETES_CPU_LIMIT: 8
8     KUBERNETES_CPU_REQUEST: 4
9     KUBERNETES_MEMORY_LIMIT: 8Gi
10     KUBERNETES_EXTENDED_RESOURCE_NAME: ""
11     KUBERNETES_EXTENDED_RESOURCE_LIMIT: 0
12     CACHE_FALLBACK_KEY: "$CI_JOB_NAME-$CI_JOB_STAGE-master"
13     BUILD_DIR: build
14     INSTALL_DIR: install
15     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=ON"
16     EXTRA_INSTALLS: "python3-dev python3-setuptools python3-pip python3-pytest"
17 # TODO: Get these from updated Docker images.
18
19 # Our generic before_script to install dependencies and prepare the ccache directory.
20 .before_script:default:
21   before_script:
22     - echo $EXTRA_INSTALLS
23     - time apt-get -qq update
24     - time apt-get -qqy --no-install-suggests --no-install-recommends install
25       $EXTRA_INSTALLS
26     - mkdir -p ccache
27     - export CCACHE_BASEDIR=${PWD}
28     - export CCACHE_DIR=${PWD}/ccache
29
30 # Rule to run a job only in nightly release-preparation pipelines.
31 # Checks if the GROMACS_RELEASE variable was set (typically through the GitLab web interface).
32 # Excludes merge_requests
33 # TODO: Update to *rules* syntax.
34 .rules:nightly-only-for-release:
35   only:
36     refs:
37       - web
38       - schedules
39     variables:
40       - $GROMACS_RELEASE
41
42 # Jobs that run on schedules, but not for merge requests or when GROMACS_RELEASE
43 # is set.
44 .rules:nightly-not-for-release:
45   only:
46     - web
47     - schedules
48   except:
49     variables:
50       - $GROMACS_RELEASE
51
52 # Jobs that run for merge requests and schedules, but not when GROMACS_RELEASE
53 # is set.
54 .rules:not-for-release:
55   only:
56     refs:
57       - web
58       - pushes
59       - schedules
60       - merge_requests
61   except:
62     variables:
63       - $GROMACS_RELEASE
64
65 # Behavioral templates
66
67 # Use a persistent compiler cache to speed up rebuilds for a single job.
68 .use-ccache:
69   cache:
70     key: "$CI_JOB_NAME-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
71     paths:
72       - ccache/
73
74 # Tool chains
75
76 .use-cuda:
77   variables:
78     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
79     CUDA_BASE_VERSION: ""
80     BUILD_DIR: build-cuda
81     CMAKE_EXTRA_OPTIONS: -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/
82     CMAKE_GPU_OPTIONS: -DGMX_GPU=ON
83
84 # Base definition, not to be used directly.
85 # Use version-specific `.use-gccX` definitions when defining jobs.
86 .use-gcc:base:
87   variables:
88     BUILD_DIR: build-gcc
89     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=gcc-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=g++-$COMPILER_MAJOR_VERSION
90   before_script:
91     - echo $EXTRA_INSTALLS
92     - time apt-get -qq update
93     - time apt-get -qqy --no-install-suggests --no-install-recommends install
94       $EXTRA_INSTALLS
95     - mkdir -p ccache
96     - export CCACHE_BASEDIR=${PWD}
97     - export CCACHE_DIR=${PWD}/ccache
98
99 .use-gcc7:
100   image: gromacs/ci-gcc-7:master
101   variables:
102     COMPILER_MAJOR_VERSION: 7
103   extends:
104     - .use-gcc:base
105
106 .use-gcc8:
107   image: gromacs/ci-gcc-8:master
108   variables:
109     COMPILER_MAJOR_VERSION: 8
110   extends:
111     - .use-gcc:base
112
113 .use-gcc8:cuda-10.2:
114   image: gromacs/ci-gcc-8-cuda-10.2:master
115   variables:
116     CUDA_BASE_VERSION: "10.2"
117     COMPILER_MAJOR_VERSION: 8
118
119 # Base definition, not to be used directly.
120 # Use version-specific `.use-clangX` definitions when defining jobs.
121 .use-clang:base:
122   variables:
123     DEBIAN_FRONTEND: noninteractive
124     BUILD_DIR: build-clang
125     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=clang-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=clang++-$COMPILER_MAJOR_VERSION
126   before_script:
127     - echo $EXTRA_INSTALLS
128     - time apt-get -qq update
129     - time apt-get -qqy --no-install-suggests --no-install-recommends install
130       $EXTRA_INSTALLS
131     - mkdir -p ccache
132     - export CCACHE_BASEDIR=${PWD}
133     - export CCACHE_DIR=${PWD}/ccache
134
135 .use-clang6:
136   image: gromacs/ci-clang-6:master
137   variables:
138     COMPILER_MAJOR_VERSION: 6
139   extends:
140     - .use-clang:base
141
142 .use-clang7:
143   image: gromacs/ci-clang-7:master
144   variables:
145     COMPILER_MAJOR_VERSION: 7
146   extends:
147     - .use-clang:base
148
149 .use-clang8:
150   image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
151   variables:
152     COMPILER_MAJOR_VERSION: 8
153   extends:
154     - .use-clang:base