diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0a81b2303b165c22e5a944721d8e540d7fbb0997..f5e1f43660597683d2b4a71b7da22e922782ed73 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,23 @@
-image: registry.gitlab.inria.fr/solverstack/docker/distrib
+default:
+  image: $CI_REGISTRY_IMAGE
+  tags: ['ci.inria.fr']
 
-Find:
+build:
+  stage: build
+  image: docker
+  rules:
+    - if: $CI_PIPELINE_SOURCE == "push"
+      changes:
+        paths:
+          - .gitlab/Dockerfile
+  before_script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+  script:
+    - docker build -t $CI_REGISTRY_IMAGE -f .gitlab/Dockerfile .
+    - docker push $CI_REGISTRY_IMAGE
+
+test:
+  stage: test
   artifacts:
     name: find_ctests
     expire_in: 1 week
diff --git a/.gitlab/Dockerfile b/.gitlab/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..6f44c0c78b32dd17f657f1db164a490cd72ac25d
--- /dev/null
+++ b/.gitlab/Dockerfile
@@ -0,0 +1,78 @@
+FROM ubuntu:24.04
+
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN apt-get -y update
+
+RUN apt-get -y upgrade --no-install-recommends \
+    # linux base packages
+    bash ca-certificates cpio sudo vim wget \
+    # dev tools
+    bison flex git pkg-config python-is-python3 \
+    # C/Fortran compiling tools
+    build-essential cmake cmake-data cmake-curses-gui gfortran
+
+RUN apt-get -y upgrade --no-install-recommends \
+    # packages to find with morse_cmake
+    libblas-dev \
+    libfftw3-dev \
+    libfxt-dev \
+    libgtg-dev \
+    liblapack-dev \
+    liblapacke-dev \
+    libmetis-dev \
+    libmumps-dev \
+    libopenmpi-dev \
+    libpapi-dev \
+    libparmetis-dev \
+    libptscotch-dev \
+    libscalapack-mpi-dev \
+    libsimgrid-dev \
+    libstarpu-dev \
+    libsuitesparse-dev \
+    petsc-dev
+
+RUN apt-get autoremove -y
+RUN apt-get autoclean -y
+RUN apt-get purge -y
+
+RUN update-ca-certificates
+RUN update-alternatives --set libblas.so-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/blas/libblas.so
+RUN update-alternatives --set libblas.so.3-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/blas/libblas.so.3
+RUN update-alternatives --set liblapack.so-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/lapack/liblapack.so
+RUN update-alternatives --set liblapack.so.3-x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3
+
+# Install QUARK
+RUN git clone https://github.com/ecrc/quark && \
+    cd quark/ && \
+    git checkout db4aef9a66a00487d849cf8591927dcebe18ef2f && \
+    sed -i -e "s#prefix=.*#prefix=/usr#g" make.inc && \
+    sed -i -e "s#CFLAGS=.*#CFLAGS= -g -O2 -DADD_ -fPIC#g" make.inc && \
+    make && \
+    make install && \
+    cd .. && \
+    rm quark/ -rf
+
+## Install PARSEC
+#RUN git clone https://bitbucket.org/mfaverge/parsec.git && \
+#    cd parsec && \
+#    git checkout mymaster && \
+#    git checkout 6022a61dc96c25f11dd2aeabff2a5b3d7bce867d && \
+#    git submodule update && \
+#    cmake -B build -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON -DPARSEC_GPU_WITH_CUDA=OFF -DPARSEC_DIST_WITH_MPI=ON && \
+#    cmake --build build -j5 && \
+#    cmake --install build && \
+#    cd .. && \
+#    rm parsec/ -rf
+
+RUN groupadd -f -g 1001 gitlab && \
+    useradd -u 1001 -g gitlab -ms /bin/bash gitlab && \
+    echo "gitlab:gitlab" | chpasswd && adduser gitlab sudo
+
+USER gitlab
+
+# change the default shell to be bash
+SHELL ["/bin/bash", "-c"]
+
+# default working directory is
+WORKDIR /home/gitlab