The ugliest hack to fix rebase issues ever
[alexxy/gromacs.git] / admin / gitlab-ci / global.gitlab-ci.yml
index 2ac489e83a3b40aded97eb4ae167b0588e79928c..e86f75bd5713135d81161193914026a64049b9f1 100644 (file)
     BUILD_DIR: build
     INSTALL_DIR: install
     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=ON"
-    EXTRA_INSTALLS: "python3-dev python3-setuptools python3-pip python3-pytest"
 # TODO: Get these from updated Docker images.
 
 # Our generic before_script to install dependencies and prepare the ccache directory.
 .before_script:default:
   before_script:
-    - echo $EXTRA_INSTALLS
-    - time apt-get -qq update
-    - time apt-get -qqy --no-install-suggests --no-install-recommends install
-      $EXTRA_INSTALLS
     - mkdir -p ccache
     - export CCACHE_BASEDIR=${PWD}
     - export CCACHE_DIR=${PWD}/ccache
 
-# Jobs that run for merge requests and schedules, but not when GROMACS_RELEASE
-# is set. Includes non-gromacs projects. Note that jobs using this rule are
+# Jobs that run for new commits and pipelines triggered by schedules or
+# through the web interface, unless GROMACS_RELEASE is set. Excluded from
+# extra pipelines generated by merge request events.
+# Includes non-gromacs projects. Note that jobs using this rule are
 # eligible to run on non-gromacs project infrastructure, and should therefore
 # override the default *tag* parameter to exclude tags specific to the GROMACS
 # GitLab Runner infrastructure. I.e. in the job definition, set `tags: []`
-.rules:basic:
+.rules:basic-push:
   rules:
     - if: '$GROMACS_RELEASE'
       when: never
     - if: '$CI_PIPELINE_SOURCE == "schedule"'
       when: always
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
-      when: always
+      when: never
 
 # Jobs that run for merge requests and schedules, but not when GROMACS_RELEASE
 # is set. Excludes non-gromacs projects.
-.rules:not-for-release:
+.rules:merge-requests:
   rules:
     - if: '$CI_PROJECT_NAMESPACE != "gromacs"'
       when: never
@@ -56,7 +53,7 @@
     - if: '$CI_PIPELINE_SOURCE == "web"'
       when: always
     - if: '$CI_PIPELINE_SOURCE == "push"'
-      when: always
+      when: never
     - if: '$CI_PIPELINE_SOURCE == "schedule"'
       when: always
     - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
 .use-cuda:
   variables:
     CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
-    CUDA_BASE_VERSION: ""
-    BUILD_DIR: build-cuda
-    CMAKE_EXTRA_OPTIONS: -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/
-    CMAKE_GPU_OPTIONS: -DGMX_GPU=ON
+    CMAKE_GPU_OPTIONS: -DGMX_GPU=ON -DGMX_USE_CUDA=ON
+
+.use-mpi:
+  variables:
+    CMAKE_MPI_OPTIONS: "-DGMX_MPI=ON"
+
+.use-opencl:
+  variables:
+    CMAKE_PRECISION_OPTIONS: "-DGMX_DOUBLE=OFF"
+    CMAKE_GPU_OPTIONS: -DGMX_GPU=ON -DGMX_USE_OPENCL=ON
 
-# Base definition, not to be used directly.
-# Use version-specific `.use-gccX` definitions when defining jobs.
+# Base definition for using gcc.
 .use-gcc:base:
   variables:
-    BUILD_DIR: build-gcc
     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=gcc-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=g++-$COMPILER_MAJOR_VERSION
   before_script:
-    - echo $EXTRA_INSTALLS
-    - time apt-get -qq update
-    - time apt-get -qqy --no-install-suggests --no-install-recommends install
-      $EXTRA_INSTALLS
     - mkdir -p ccache
     - export CCACHE_BASEDIR=${PWD}
     - export CCACHE_DIR=${PWD}/ccache
 
-.use-gcc7:
-  image: gromacs/ci-gcc-7:master
-  variables:
-    COMPILER_MAJOR_VERSION: 7
-  extends:
-    - .use-gcc:base
-
-.use-gcc8:
-  image: gromacs/ci-gcc-8:master
-  variables:
-    COMPILER_MAJOR_VERSION: 8
-  extends:
-    - .use-gcc:base
-
-.use-gcc8:cuda-10.2:
-  image: gromacs/ci-gcc-8-cuda-10.2:master
-  variables:
-    CUDA_BASE_VERSION: "10.2"
-    COMPILER_MAJOR_VERSION: 8
-
-# Base definition, not to be used directly.
-# Use version-specific `.use-clangX` definitions when defining jobs.
+# Base definition for using clang.
 .use-clang:base:
   variables:
-    DEBIAN_FRONTEND: noninteractive
-    BUILD_DIR: build-clang
     CMAKE_COMPILER_SCRIPT: -DCMAKE_C_COMPILER=clang-$COMPILER_MAJOR_VERSION -DCMAKE_CXX_COMPILER=clang++-$COMPILER_MAJOR_VERSION
   before_script:
-    - echo $EXTRA_INSTALLS
-    - time apt-get -qq update
-    - time apt-get -qqy --no-install-suggests --no-install-recommends install
-      $EXTRA_INSTALLS
     - mkdir -p ccache
     - export CCACHE_BASEDIR=${PWD}
     - export CCACHE_DIR=${PWD}/ccache
+    - export ASAN_SYMBOLIZER_PATH=/usr/local/bin/llvm-symbolizer
 
-.use-clang6:
-  image: gromacs/ci-clang-6:master
-  variables:
-    COMPILER_MAJOR_VERSION: 6
-  extends:
-    - .use-clang:base
-
-.use-clang7:
-  image: gromacs/ci-clang-7:master
-  variables:
-    COMPILER_MAJOR_VERSION: 7
-  extends:
-    - .use-clang:base
-
-.use-clang8:
-  image: gromacs/cmake-3.15.7-llvm-8-intelopencl-openmpi:2020
-  variables:
-    COMPILER_MAJOR_VERSION: 8
-  extends:
-    - .use-clang:base
-
-.use-clang9:
-  image: gromacs/cmake-3.13.0-llvm-9-intelopencl-openmpi:master
-  variables:
-    COMPILER_MAJOR_VERSION: 9
-  extends:
-    - .use-clang:base