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