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