730a532836ff008eddcae6800f51d6035bd53eff
[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 # Behavioral templates
20
21 # Use a persistent compiler cache to speed up rebuilds for a single job.
22 .use-ccache:
23   cache:
24     key: "$CI_JOB_NAME-$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG"
25     paths:
26       - ccache/
27
28 # Tool chains
29
30 .use-cuda:
31   variables:
32     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
33     CUDA_BASE_VERSION: ""
34     BUILD_DIR: build-cuda
35     CMAKE_EXTRA_OPTIONS: -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/
36     CMAKE_GPU_OPTIONS: -DGMX_GPU=ON
37
38 # Base definition, not to be used directly.
39 # Use version-specific `.use-gccX` definitions when defining jobs.
40 .use-gcc:base:
41   variables:
42     BUILD_DIR: build-gcc
43     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=gcc-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=g++-$COMPILER_MAJOR_VERSION
44   before_script:
45     - echo $EXTRA_INSTALLS
46     - time apt-get -qq update
47     - time apt-get -qqy --no-install-suggests --no-install-recommends install
48       $EXTRA_INSTALLS
49     - mkdir -p ccache
50     - export CCACHE_BASEDIR=${PWD}
51     - export CCACHE_DIR=${PWD}/ccache
52
53 .use-gcc7:
54   image: gromacs/ci-gcc-7:master
55   variables:
56     COMPILER_MAJOR_VERSION: 7
57   extends:
58     - .use-gcc:base
59
60 .use-gcc8:
61   image: gromacs/ci-gcc-8:master
62   variables:
63     COMPILER_MAJOR_VERSION: 8
64   extends:
65     - .use-gcc:base
66
67 .use-gcc8:cuda-10.2:
68   image: gromacs/ci-gcc-8-cuda-10.2:master
69   variables:
70     CUDA_BASE_VERSION: "10.2"
71     COMPILER_MAJOR_VERSION: 8
72
73 # Base definition, not to be used directly.
74 # Use version-specific `.use-clangX` definitions when defining jobs.
75 .use-clang:base:
76   variables:
77     DEBIAN_FRONTEND: noninteractive
78     BUILD_DIR: build-clang
79     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=clang-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=clang++-$COMPILER_MAJOR_VERSION
80   before_script:
81     - echo $EXTRA_INSTALLS
82     - time apt-get -qq update
83     - time apt-get -qqy --no-install-suggests --no-install-recommends install
84       $EXTRA_INSTALLS
85     - mkdir -p ccache
86     - export CCACHE_BASEDIR=${PWD}
87     - export CCACHE_DIR=${PWD}/ccache
88
89 .use-clang6:
90   image: gromacs/ci-clang-6:master
91   variables:
92     COMPILER_MAJOR_VERSION: 6
93   extends:
94     - .use-clang:base
95
96 .use-clang7:
97   image: gromacs/ci-clang-7:master
98   variables:
99     COMPILER_MAJOR_VERSION: 7
100   extends:
101     - .use-clang:base
102
103 .use-clang8:
104   image: gromacs/ci-clang-8:master
105   variables:
106     COMPILER_MAJOR_VERSION: 8
107   extends:
108     - .use-clang:base