diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 62ca9abfafb5250d7b1c2da41be3b9f8fdff0fb6..bf7c56f8e379c0d37a67417e1072e319c3df69ff 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,18 +1,7 @@
-variables:
-  GIT_STRATEGY: fetch
-  OPENMPI_VERSIONS: 'off 2.1.6 3.1.4 4.0.1'
+stages:
+  - test
+  - package
 
-build-container:
-  tags:
-    - docker-shell
-  stage: build
-  script:
-    - git submodule update --init ThirdParty/container-maker
-    - virtualenv .venv
-    - source .venv/bin/activate
-    - pip install -r ThirdParty/container-maker/requirements.txt
-    - export PYTHONPATH="${PYTHONPATH}:${PWD}/ThirdParty/container-maker"
-    - python ThirdParty/container-maker/ogscm/cli.py -B -C -R --ogs . --pm system --cvode --ompi $OPENMPI_VERSIONS
-  artifacts:
-    paths:
-      - _out/images/*.sif
+include:
+  - local: '/scripts/ci/jobs/container.yml'
+  - local: '/scripts/ci/jobs/build.yml'
diff --git a/scripts/ci/jobs/build.yml b/scripts/ci/jobs/build.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1d47a78202427946bdd42389acf3035ff3153b3f
--- /dev/null
+++ b/scripts/ci/jobs/build.yml
@@ -0,0 +1,25 @@
+build:
+  stage: test
+  variables:
+    CONAN_USER_HOME: "$CI_PROJECT_DIR"
+    CCACHE_DIR: "$CI_PROJECT_DIR/.ccache"
+    CTEST_NUM_THREADS: '4'
+    CTEST_LARGE_NUM_THREADS: '3'
+  image:
+    name: ogs6/gcc
+    entrypoint:
+      - '/usr/bin/env'
+      - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
+  cache:
+    paths:
+      - .conan
+      - .ccache
+
+  before_script:
+    - mkdir -p build
+    - cd build
+
+  script:
+    - cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DOGS_BUILD_PROCESSES=GroundwaterFlow
+    - cmake --build . --target tests
+    - cmake --build . --target ctest -j 3
diff --git a/scripts/ci/jobs/container.yml b/scripts/ci/jobs/container.yml
new file mode 100644
index 0000000000000000000000000000000000000000..0b9fb648b362a3bf164186efad6ae66337dc399c
--- /dev/null
+++ b/scripts/ci/jobs/container.yml
@@ -0,0 +1,20 @@
+container:
+  only:
+    refs:
+      - master
+  tags:
+    - docker-shell
+  stage: package
+  variables:
+    GIT_STRATEGY: fetch
+    OPENMPI_VERSIONS: 'off 2.1.6 3.1.4 4.0.1'
+  script:
+    - git submodule update --init ThirdParty/container-maker
+    - virtualenv .venv
+    - source .venv/bin/activate
+    - pip install -r ThirdParty/container-maker/requirements.txt
+    - export PYTHONPATH="${PYTHONPATH}:${PWD}/ThirdParty/container-maker"
+    - python ThirdParty/container-maker/ogscm/cli.py -B -C -R --ogs . --pm system --cvode --ompi $OPENMPI_VERSIONS
+  artifacts:
+    paths:
+      - _out/images/*.sif